emacs-pretest-bug
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Emacs crashes when displaying the Euro character


From: Chong Yidong
Subject: Re: Emacs crashes when displaying the Euro character
Date: Mon, 04 Sep 2006 10:30:54 -0400
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.0.50 (gnu/linux)

Milan Zamazal <address@hidden> writes:

>>>>>> "RS" == Richard Stallman <address@hidden> writes:
>
>     RS> If you can reproducibly cause an X protocol error, try doing
>     RS> (x-synchronize t) and then make the failure happen.
>
> Here it is.  It happens in Emacs 2006-08-29 without your patch, on
> displaying a certain character with a certain face.  Either some garbage
> or an empty space gets displayed instead of the character right before
> the crash.
>
> #0  x_error_quitter (display=0xe1c8b0, error=0x7fffffe70900) at xterm.c:7825
> #1  0x00000000004829fa in x_error_handler (display=0xe1c8b0, 
> error=0x7fffffe70900) at xterm.c:7796
> #2  0x00002b6c3519e4ee in _XError () from /usr/lib/libX11.so.6
> #3  0x00002b6c351a02cb in _XReply () from /usr/lib/libX11.so.6
> #4  0x00002b6c35197ed9 in XSync () from /usr/lib/libX11.so.6
> #5  0x00002b6c3519807b in XSetAfterFunction () from /usr/lib/libX11.so.6
> #6  0x00002b6c351842a0 in XDrawImageString16 () from /usr/lib/libX11.so.6
> #7  0x00000000004894d5 in x_draw_glyph_string (s=0x7fffffe71000) at 
> xterm.c:1310
> #8  0x0000000000423703 in draw_glyphs (w=0xf684f0, x=-1636096, row=0x1752088, 
> area=TEXT_AREA, start=0, end=<value optimized out>,
>     hl=DRAW_NORMAL_TEXT, overlaps=0) at xdisp.c:19602
> #9  0x0000000000425b86 in x_write_glyphs (start=<value optimized out>, 
> len=44) at xdisp.c:20892
> #10 0x000000000040e549 in update_window_line (w=0xf684f0, vpos=15, 
> mouse_face_overwritten_p=0x7fffffe7150c) at dispnew.c:4415
> #11 0x0000000000410710 in update_window (w=0xf684f0, force_p=0) at 
> dispnew.c:4280

That's precisely the bug Stefan reported earlier.

How about making X protocol errors fatal only when glyph debugging is
on?  When it is off, we can print the error message to stderr.

*** emacs/src/xterm.c.~1.924.~  2006-09-03 10:11:22.000000000 -0400
--- emacs/src/xterm.c   2006-09-04 10:26:06.000000000 -0400
***************
*** 7793,7799 ****
    if (x_error_message)
      x_error_catcher (display, error);
    else
!     x_error_quitter (display, error);
    return 0;
  }
  
--- 7793,7808 ----
    if (x_error_message)
      x_error_catcher (display, error);
    else
!     {
! #if GLYPH_DEBUG
!       x_error_quitter (display, error);
! #else
!       char buf[256];
!       XGetErrorText (display, error->error_code, buf, sizeof (buf));
!       fprintf (stderr, "X protocol error: %s on protocol request %d",
!              buf, error->request_code);
! #endif
!     }
    return 0;
  }
  





reply via email to

[Prev in Thread] Current Thread [Next in Thread]