all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* Crash displaying byte-code
@ 2008-08-05 11:35 Juanma Barranquero
  2008-08-05 12:18 ` Óscar Fuentes
  2008-08-28 10:25 ` Juanma Barranquero
  0 siblings, 2 replies; 4+ messages in thread
From: Juanma Barranquero @ 2008-08-05 11:35 UTC (permalink / raw
  To: Emacs Development

I can consistently reproduce this crash, though it is perhaps a bit
specific to my compiler setup, etc.

emacs -Q
M-x ielm <RET>

then type

(let ((standard-output (current-buffer)))
  (setq unibyte-display-via-language-environment t)
  (set-buffer-multibyte nil)
  (backtrace))

Now, the catches:

 - If Emacs is run from inside GDB, it "hangs" for a while and finally
crashes with the attached backtrace 1.
 - If run from the command-line, after doing the above it crashes
immediately; the DrMingw backtrace is a bit different (backtrace 2).
 - It only happens with an optimized build. <sigh>
 - All the above steps are required, including executing the `let'
from inside IELM. In fact, the crash happens while IELM is trying to
display byte-code("...")

This is on Windows XP (Pro and Home) Spanish Edition, Emacs compiled
with gcc "(GCC) 4.3.0 20080305 (alpha-testing) mingw-20080502",
-DENABLE_CHECKING=1 and -fno-crossjumping.

  Juanma


-------------------------------------------------------------------------
------------------------------ backtrace 1 ------------------------------
-------------------------------------------------------------------------

Program received signal SIGSEGV, Segmentation fault.
0x011f45c7 in x_draw_glyph_string_foreground (s=0x82ea60) at w32term.c:1327
1327            font->driver->draw (s, 0, s->nchars, x, y, 0);
(gdb) bt
#0  0x011f45c7 in x_draw_glyph_string_foreground (s=0x82ea60) at w32term.c:1327
#1  0x011f59d7 in x_draw_glyph_string (s=0x82ea60) at w32term.c:2282
#2  0x01056300 in draw_glyphs (w=0x2f77000, x=208, row=0x2dae688,
area=TEXT_AREA, start=1, end=19,
    hl=DRAW_NORMAL_TEXT, overlaps=0) at xdisp.c:20475
#3  0x01059319 in x_write_glyphs (start=0x2e08020, len=18) at xdisp.c:21819
#4  0x0115c449 in update_window_line (w=0x2f77000, vpos=11,
mouse_face_overwritten_p=0x82f0ec) at dispnew.c:4593
#5  0x0115ca7c in update_window (w=0x2f77000, force_p=0) at dispnew.c:4309
#6  0x0115f136 in update_window_tree (w=0x2f77000, force_p=0) at dispnew.c:4002
#7  0x01160924 in update_frame (f=0x2dda800, force_p=0,
inhibit_hairy_id_p=0) at dispnew.c:3930
#8  0x01047481 in redisplay_internal (preserve_echo_area=<value
optimized out>) at xdisp.c:11854
#9  0x0108a5b9 in read_char (commandflag=1, nmaps=2, maps=0x82fb70,
prev_event=47519745, used_mouse_menu=0x82fc34,
    end_time=0x0) at keyboard.c:2652
#10 0x0108ec0a in read_key_sequence (keybuf=0x82fcd4, bufsize=30,
prompt=47519745, dont_downcase_last=0,
    can_return_switch_frame=1, fix_current_buffer=1) at keyboard.c:9349
#11 0x01091d7d in command_loop_1 () at keyboard.c:1620
#12 0x01019006 in internal_condition_case (bfun=0x1091aef
<command_loop_1>, handlers=47583497,
    hfun=0x1088d56 <cmd_error>) at eval.c:1511
#13 0x0108806b in command_loop_2 () at keyboard.c:1338
#14 0x010190b0 in internal_catch (tag=47579569, func=0x1088048
<command_loop_2>, arg=47519745) at eval.c:1247
#15 0x01088b9b in command_loop () at keyboard.c:1317
#16 0x01088eef in recursive_edit_1 () at keyboard.c:942
#17 0x0108905a in Frecursive_edit () at keyboard.c:1004
#18 0x01002c41 in main (argc=2, argv=0xa841e0) at emacs.c:1688


-------------------------------------------------------------------------
------------------------------ backtrace 2 ------------------------------
-------------------------------------------------------------------------

Call stack:
011EEEB2  emacs.exe:011EEEB2  x_draw_glyph_string_background  w32term.c:1265

	...
	      else
	#endif
>	        if (FONT_HEIGHT (s->font) < s->height - 2 * box_line_width
	       || s->font_not_found_p
	       || s->extends_to_end_of_line_p
	...

011F6111  emacs.exe:011F6111  x_draw_glyph_string  w32term.c:2252

	...
	      x_set_glyph_string_clipping (s);
	      x_draw_glyph_string_background (s, 1);
>	      x_draw_glyph_string_box (s);
	      x_set_glyph_string_clipping (s);
	      relief_drawn_p = 1;
	...

01056300  emacs.exe:01056300  draw_glyphs  xdisp.c:20474

	...
	
	  /* Draw all strings.  */
>	  for (s = head; s; s = s->next)
	    FRAME_RIF (f)->draw_glyph_string (s);
	
	...

01059319  emacs.exe:01059319  x_write_glyphs  xdisp.c:21819

	...
	
	  hpos = start - updated_row->glyphs[updated_area];
>	  x = draw_glyphs (updated_window, output_cursor.x,
	   updated_row, updated_area,
	   hpos, hpos + len,
	...

0115C449  emacs.exe:0115C449  update_window_line  dispnew.c:4593

	...
	{
	  rif->cursor_to (vpos, i, desired_row->y, x);
>	  rif->write_glyphs (desired_glyph, desired_row->used[TEXT_AREA] - i);
	  changed_p = 1;
	}
	...

0115CA7C  emacs.exe:0115CA7C  update_window  dispnew.c:4309

	...
	      detect_input_pending_ignore_squeezables ();
	#endif
>	    changed_p |= update_window_line (w, vpos,
	     &mouse_face_overwritten_p);
	
	...

0115F136  emacs.exe:0115F136  update_window_tree  dispnew.c:4002

	...
	paused_p |= update_window_tree (XWINDOW (w->vchild), force_p);
	      else if (w->must_be_updated_p)
>	paused_p |= update_window (w, force_p);
	
	      w = NILP (w->next) ? 0 : XWINDOW (w->next);
	...

01160924  emacs.exe:01160924  update_frame  dispnew.c:3930

	...
	
	      /* Update windows.  */
>	      paused_p = update_window_tree (root_window, force_p);
	      update_end (f);
	
	...

01047481  emacs.exe:01047481  redisplay_internal  xdisp.c:11854

	...
	  /* Update the display.  */
	  set_window_update_flags (XWINDOW (f->root_window), 1);
>	  pause |= update_frame (f, 0, 0);
	#if 0  /* Exiting the loop can leave the wrong value for buffer_shared.  */
	  if (pause)
	...

0108A5B9  emacs.exe:0108A5B9  read_char  keyboard.c:2652

	...
	    redisplay_preserve_echo_area (5);
	  else
>	    redisplay ();
	
	  if (!input_pending)
	...

0108EC0A  emacs.exe:0108EC0A  read_key_sequence  keyboard.c:9349

	...
	    KBOARD *interrupted_kboard = current_kboard;
	    struct frame *interrupted_frame = SELECTED_FRAME ();
>	    key = read_char (NILP (prompt), nmaps,
	     (Lisp_Object *) submaps, last_nonmenu_event,
	     &used_mouse_menu, NULL);
	...

01091D7D  emacs.exe:01091D7D  command_loop_1  keyboard.c:1620

	...
	
	      /* Read next key sequence; i gets its length.  */
>	      i = read_key_sequence (keybuf, sizeof keybuf / sizeof keybuf[0],
	     Qnil, 0, 1, 1);
	
	...

01019006  emacs.exe:01019006  internal_condition_case  eval.c:1511

	...
	  handlerlist = &h;
	
>	  val = (*bfun) ();
	  catchlist = c.next;
	  handlerlist = h.next;
	...

0108806B  emacs.exe:0108806B  command_loop_2  keyboard.c:1339

	...
	  do
	    val = internal_condition_case (command_loop_1, Qerror, cmd_error);
>	  while (!NILP (val));
	
	  return Qnil;
	...

010190B0  emacs.exe:010190B0  internal_catch  eval.c:1247

	...
	  /* Call FUNC.  */
	  if (! _setjmp (c.jmp))
>	    c.val = (*func) (arg);
	
	  /* Throw works by a longjmp that comes right here.  */
	...

01088B9B  emacs.exe:01088B9B  command_loop  keyboard.c:1318

	...
	#endif
	internal_catch (Qtop_level, command_loop_2, Qnil);
>	executing_kbd_macro = Qnil;
	
	/* End of file in -batch run causes exit here.  */
	...

01088EEF  emacs.exe:01088EEF  recursive_edit_1  keyboard.c:942

	...
	  redisplaying_p = 0;
	
>	  val = command_loop ();
	  if (EQ (val, Qt))
	    Fsignal (Qquit, Qnil);
	...

0108905A  emacs.exe:0108905A  Frecursive_edit  keyboard.c:1005

	...
	
	  recursive_edit_1 ();
>	  return unbind_to (count, Qnil);
	}
	
	...

01002C41  emacs.exe:01002C41  main  emacs.c:1691

	...
	  /* NOTREACHED */
	  return 0;
>	}
	
	/* Sort the args so we can find the most important ones
	...

0100124B  emacs.exe:0100124B
01001298  emacs.exe:01001298
7C816FD7  kernel32.dll:7C816FD7  RegisterWaitForInputIdle




^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2008-08-28 10:25 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-08-05 11:35 Crash displaying byte-code Juanma Barranquero
2008-08-05 12:18 ` Óscar Fuentes
2008-08-05 12:36   ` Juanma Barranquero
2008-08-28 10:25 ` Juanma Barranquero

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.