I have experienced a couple of crashes related to the XIM xlib stuff
some time ago (see backtrace below). Karl Kleinpaste has been
reporting similar crashes for some time. Alas I have not been able to
find a way to reproduce this. I am running XFree86 3.3.2.3 on
i586-pc-linux.
The problem is the following code in x_to_emacs_keysym() in event-Xt.c:781
#ifdef XIM_XLIB
XIC xic = FRAME_X_XIC (x_any_window_to_frame
(get_device_from_display (event->display),
event->window));
#endif /* XIM_XLIB */
for some reason x_any_window_to_frame() can't find the window in any
frame and returns 0. I'm not sure which window this event is referring
to and don't know how to figure this out from the core dump.
In some other places in event-Xt.c we check whether
x_any_window_to_frame() found a frame and otherwise just toss the
event away. Would this be appropriate in this case as well? We could
presumably just return Qnil.
Any comments?
Gunnar
#2 <signal handler called>
#3 error_check_frame_type (f=0x0, sym=138049092) at
/local/srcdisk/gunnar/src/XEmacs/xemacs/src/frame.h:248
#4 0x8193c59 in x_to_emacs_keysym (event=0xbfffef64, simple_p=0)
at /local/srcdisk/gunnar/src/XEmacs/xemacs/src/event-Xt.c:782
#5 0x8194422 in x_event_to_emacs_event (x_event=0xbfffef64, emacs_event=0x8982444)
at /local/srcdisk/gunnar/src/XEmacs/xemacs/src/event-Xt.c:997
#6 0x8196cb4 in emacs_Xt_event_handler (wid=0x8559410, closure=0x0, event=0xbfffef64,
continue_to_dispatch=0xbfffeea3 "\001°kv\b$éQ\b\030O\017@")
at /local/srcdisk/gunnar/src/XEmacs/xemacs/src/event-Xt.c:2440
#7 0x400ca0bf in XtDispatchEventToWidget ()
#8 0x400caa6d in _XtDefaultDispatcher ()
#9 0x400caca3 in XtDispatchEvent ()
#10 0x400d3ce3 in XtAppProcessEvent ()
#11 0x8197310 in drain_X_queue () at
/local/srcdisk/gunnar/src/XEmacs/xemacs/src/event-Xt.c:2596
#12 0x8197426 in emacs_Xt_event_pending_p (user_p=1)
at /local/srcdisk/gunnar/src/XEmacs/xemacs/src/event-Xt.c:2709
--
Gunnar Evermann
Speech, Vision & Robotics Group
Engineering Department
Cambridge University
Show replies by date