From: Miles Bader <miles@lsi.nec.co.jp>
Subject: xterm.c:handle_one_xevent question
Date: 25 Feb 2004 16:06:06 +0900 [thread overview]
Message-ID: <buo1xoj8wpt.fsf@mcspd15.ucom.lsi.nec.co.jp> (raw)
[-- Attachment #1: Type: text/plain, Size: 886 bytes --]
I got an emacs abort at the following place in handle_one_xevent
(xterm.c):
...
/* If not using XIM/XIC, and a compose sequence is in progress,
we break here. Otherwise, chars_matched is always 0. */
if (compose_status.chars_matched > 0 && nbytes == 0)
break;
orig_keysym = keysym;
if (numchars > 1)
{
Lisp_Object c;
/* First deal with keysyms which have defined
translations to characters. */
if (keysym >= 32 && keysym < 128)
...
else
abort ();
}
else
====> abort ();
...
I don't understand this code; can someone explain why numchars has to
be > 1? I've attached a bit of a gdb session, though it probably isn't
very helpful...
Thanks,
-Miles
[-- Attachment #2: gdb session from emacs crash --]
[-- Type: text/plain, Size: 18289 bytes --]
(gdb) ba
#0 abort () at /usr/local/src/emacs/tiling/src/emacs.c:417
#1 0x081177db in handle_one_xevent (dpyinfo=0x86b7e10, eventp=0xbfffc664,
bufp_r=0xbfffc898, numcharsp=0xbfffc89c, finish=0x8429f18)
at /usr/local/src/emacs/tiling/src/xterm.c:6626
#2 0x081161ba in event_handler_gdk (gxev=0xbfffc664, ev=0x8710380, data=0x0)
at /usr/local/src/emacs/tiling/src/xterm.c:5773
#3 0x402af658 in gdk_event_get_graphics_expose ()
from /usr/lib/libgdk-x11-2.0.so.0
#4 0x402aff63 in _gdk_x11_register_event_type ()
from /usr/lib/libgdk-x11-2.0.so.0
#5 0x402b15ed in _gdk_events_queue () from /usr/lib/libgdk-x11-2.0.so.0
#6 0x402b17dd in _gdk_events_queue () from /usr/lib/libgdk-x11-2.0.so.0
#7 0x403ea086 in unblock_source () from /usr/lib/libglib-2.0.so.0
#8 0x403eb029 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#9 0x403eb347 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#10 0x403eb55d in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#11 0x400f3fd1 in gtk_main_iteration () from /usr/lib/libgtk-x11-2.0.so.0
#12 0x08118716 in XTread_socket (sd=0, bufp=0xbfffd9e8, numchars=1, expected=1)
at /usr/local/src/emacs/tiling/src/xterm.c:7278
#13 0x08151fda in read_avail_input (expected=1)
at /usr/local/src/emacs/tiling/src/keyboard.c:6598
#14 0x0815227b in handle_async_input ()
at /usr/local/src/emacs/tiling/src/keyboard.c:6754
#15 0x081522bb in input_available_signal (signo=29)
at /usr/local/src/emacs/tiling/src/keyboard.c:6793
#16 <signal handler called>
#17 0x4068d2f7 in close () from /lib/tls/libc.so.6
#18 0x081634cb in emacs_close (fd=10)
at /usr/local/src/emacs/tiling/src/sysdep.c:3254
#19 0x08181ab1 in Fwrite_region (start=1, end=234437, filename=1757495912,
append=675717136, visit=675776936, lockname=1757495912,
mustbenew=675717136) at /usr/local/src/emacs/tiling/src/fileio.c:5182
---Type <return> to continue, or q <return> to quit---q
Quit
(gdb) fr 1
#1 0x081177db in handle_one_xevent (dpyinfo=0x86b7e10, eventp=0xbfffc664,
bufp_r=0xbfffc898, numcharsp=0xbfffc89c, finish=0x8429f18)
at /usr/local/src/emacs/tiling/src/xterm.c:6626
6626 abort ();
(gdb) li
6621 }
6622 else
6623 abort ();
6624 }
6625 else
6626 abort ();
6627 }
6628 #ifdef HAVE_X_I18N
6629 /* Don't dispatch this event since XtDispatchEvent calls
6630 XFilterEvent, and two calls in a row may freeze the
(gdb) p *f->output_data.x
$8 = {
menubar_height = 0,
toolbar_height = 0,
border_tile = 29360216,
background_tile_gc = 0x8984928,
background_tile_gc_state = {
x_offs = 4,
y_offs = 26
},
background_tile_pixmap = 29360262,
normal_gc = 0x870f7e0,
reverse_gc = 0x870f858,
cursor_gc = 0x870f8d0,
window_desc = 29360204,
icon_desc = 0,
parent_desc = 14856320,
widget = 0x86eae70,
edit_widget = 0x86ec108,
vbox_widget = 0x86ebde0,
menubar_widget = 0x0,
toolbar_widget = 0x0,
handlebox_widget = 0x0,
size_hints = {
min_width = 40,
min_height = 40,
max_width = 0,
max_height = 0,
base_width = 20,
base_height = 0,
width_inc = 10,
height_inc = 20,
min_aspect = 0,
---Type <return> to continue, or q <return> to quit---
max_aspect = 0,
win_gravity = GDK_GRAVITY_NORTH_WEST
},
hint_flags = 490,
icon_bitmap = 0,
font = 0x86d9fe8,
baseline_offset = 0,
fontset = 2,
background_pixel = 0,
foreground_pixel = 16777215,
cursor_pixel = 11530159,
border_pixel = 0,
mouse_pixel = 16777215,
cursor_foreground_pixel = 0,
scroll_bar_foreground_pixel = 8355711,
scroll_bar_background_pixel = 5066061,
scroll_bar_top_shadow_pixel = 4294967295,
scroll_bar_bottom_shadow_pixel = 4294967295,
text_cursor = 29360221,
nontext_cursor = 29360225,
modeline_cursor = 29360233,
hand_cursor = 29360237,
hourglass_cursor = 29360229,
horizontal_drag_cursor = 29360241,
hourglass_window = 0,
hourglass_p = 0,
needs_exposure = 0,
wm_hints = {
flags = 2,
input = 0,
initial_state = 1,
icon_pixmap = 0,
---Type <return> to continue, or q <return> to quit---
icon_window = 0,
icon_x = 0,
icon_y = 0,
icon_mask = 0,
window_group = 0
},
display_info = 0x86b7e10,
saved_menu_event = 0x0,
explicit_parent = 0 '\0',
asked_for_visible = 1 '\001',
has_been_visible = 1 '\001',
xic = 0x0,
xic_style = 0,
xic_xfs = 0x0,
black_relief = {
gc = 0x8612628,
pixel = 2302755,
allocated_p = 1
},
white_relief = {
gc = 0x86561c8,
pixel = 9013641,
allocated_p = 1
},
relief_background = 5066061,
wait_for_wm = 1,
x_pixels_outer_diff = 4,
y_pixels_outer_diff = 26,
focus_state = 2,
expected_top = 0,
expected_left = 0,
move_offset_top = 0,
---Type <return> to continue, or q <return> to quit---
move_offset_left = 0,
check_expected_move = 0
}
(gdb) p copy_bufptr
$9 = (unsigned char *) 0xbfffbf94 "j"
(gdb) p copy_bufsiz
$10 = 513
(gdb) p keysym
$11 = 106
(gdb) p compose_status
$12 = {
compose_ptr = 0x0,
chars_matched = 0
}
(gdb) i loc
keysym = 106
copy_bufptr = (unsigned char *) 0xbfffbf94 "j"
copy_bufsiz = 513
orig_keysym = 106
copy_buffer = "j\00057 30059 30072 30075 30080 30085 30095 (30098 . 30099) 30118 30120 30172 30485 30521 30531 30539 30732 30739 31025 31064 31087 31295 31379 31402 31406 31409 31412 31416 31502 31533 31545 31567 31589"...
modifiers = 0
coding_system = 675917232
count = 0
nbytes = 1
f = (struct frame *) 0x86d7248
coding = {
type = 3221210020,
eol_type = 20,
common_flags = 0,
flags = 0,
mode = 1076284996,
composing = 141447784,
composition_rule_follows = -1073757572,
cmp_data = 0x400f59f3,
cmp_data_start = -1073757276,
cmp_data_index = 0,
spec = {
iso2022 = {
current_invocation = {141402888, 1077682792},
current_designation = {-1073756988, 141447784, -1073757556, 1077618670},
initial_designation = {-1073756988, 20, 141471344, 1077682792},
last_invalid_designation_register = -1073756988,
requested_designation = "hRn\b\274\302\377\277nA;@\001\000\000\000D{j\bD{j\bh\"<@d\304\377\277\000\000\000\000\314\302\377\277nA;@\024\000\000\000\024\000\000\000 \000\000\000n<;@\000\000\000\000\244\303\377\277\334\302\377\277\351;;@---Type <return> to continue, or q <return> to quit---
\024\000\000\000D{j\b\000\000\000\000h\"<@\244\303\377\277\024\000\000\000\f\303\377\277\252\024>@p\256n\b\024\000\000\000D{j\b\216\024>@d\304\377\277\000\000\000\000\250{j\bh\"<@\000\000\000\000\270\303\377\277\374\303\377\277\332\265:@\224\303\377\277X\366p\b\b\000\000\000\b\000\000\000\274B\231\b\324\254\232\b\244\303\377\277N4;@\204X\214\bP\366p\b\000\000\000\000"...,
charset_revision_number = "\000\304\303\377\277\000\000\000\000\023\000\000\340\032\000\000\000\001\000\000\000T\237j\bh\"<@p\256n\b\210 n\b\274\303\377\277\375\3749@p\256n\bP\000\000\000\210 n\bN4;@h\"<@\304\304\377\277\354\303\377\277\322\024>@8\330n\b(\304\377\277\340\357j\b1\334)@p\003:@\001\000\000\0008\320j\b\264\350-@\250\bk\b\000\000\000\000\034\304\377\277\177\232,@\000\031k\bD\316&@\034\304\377\277rV\017@\200\327n\b\024\304\377\277\034\306\377\277\264\350-@p\256n\b\264\350-@\234\304\377\277(\347\023\b4\304\377\277,\000\300\001\250{j\b\000\000\000\000d\304\377\277\200\327n\b\320Jn"...,
single_shifting = 0,
bol = 144261776
},
ccl = {
decoder = {
size = 141402888,
prog = 0x403c2268,
ic = -1073756988,
eof_ic = 141447784,
reg = {-1073757556, 1077618670, -1073756988, 20, 141471344,
1077682792, -1073756988, 141447784},
private_state = -1073757508,
last_block = 1077625198,
status = 1,
buf_magnification = 141196100,
stack_idx = 141196100,
eol_type = 1077682792,
multibyte = -1073757084,
cr_consumed = 0,
---Type <return> to continue, or q <return> to quit---
suppress_error = -1073757492,
eight_bit_control = 1077625198
},
encoder = {
size = 20,
prog = 0x14,
ic = 32,
eof_ic = 1077623918,
reg = {0, -1073757276, -1073757476, 1077623785, 20, 141196100, 0,
1077682792},
private_state = -1073757276,
last_block = 20,
status = -1073757428,
buf_magnification = 1077810346,
stack_idx = 141471344,
eol_type = 20,
multibyte = 141196100,
cr_consumed = 1077810318,
suppress_error = -1073757084,
eight_bit_control = 0
},
valid_codes = "\250{j\bh\"<@\000\000\000\000\270\303\377\277\374\303\377\277\332\265:@\224\303\377\277X\366p\b\b\000\000\000\b\000\000\000\274B\231\b\324\254\232\b\244\303\377\277N4;@\204X\214\bP\366p\b\000\000\000\000\b\000\000\000\000^:@\224\303\377\277\000\000\000\000\023\000\000\340\340\237j\b\001\000\000\000T\237j\bN4;@p\256n\b\304\304\377\277\214\303\377\277\000\000\000\000\000\000\000\000\304\303\377\277\000\000\000\000\023\000\000\340\032\000\000\000\001\000\000\000T\237j\bh\"<@p\256n\b\210 n\b\274\303\377\277\375\3749@p\256n\bP\000\000\000\210 n\bN4;@h\"<@\304\304\377\277\354\303\377\277\322\024>@"...,
cr_carryover = -1073757156,
eight_bit_carryover = "rV\017@"
}
---Type <return> to continue, or q <return> to quit---
},
category_idx = 144261776,
src_multibyte = 0,
dst_multibyte = 0,
heading_ascii = 0,
produced = 141471344,
produced_char = 141481856,
consumed = 0,
consumed_char = 0,
errors = -1073756980,
result = 1079024817,
suppress_error = 141225752,
symbol = 29360172,
post_read_conversion = 0,
pre_write_conversion = 0,
translation_table_for_decode = 141471344,
translation_table_for_encode = 141401656
}
bufp = (struct input_event *) 0xbfffd9e8
numchars = 1
event = {
type = 2,
xany = {
type = 2,
serial = 35912,
send_event = 0,
display = 0x86aef18,
window = 29360172
},
xkey = {
type = 2,
serial = 35912,
---Type <return> to continue, or q <return> to quit---
send_event = 0,
display = 0x86aef18,
window = 29360172,
root = 59,
subwindow = 0,
time = 25156164,
x = 486,
y = 436,
x_root = 489,
y_root = 461,
state = 0,
keycode = 44,
same_screen = 1
},
xbutton = {
type = 2,
serial = 35912,
send_event = 0,
display = 0x86aef18,
window = 29360172,
root = 59,
subwindow = 0,
time = 25156164,
x = 486,
y = 436,
x_root = 489,
y_root = 461,
state = 0,
button = 44,
same_screen = 1
},
xmotion = {
---Type <return> to continue, or q <return> to quit---
type = 2,
serial = 35912,
send_event = 0,
display = 0x86aef18,
window = 29360172,
root = 59,
subwindow = 0,
time = 25156164,
x = 486,
y = 436,
x_root = 489,
y_root = 461,
state = 0,
is_hint = 44 ',',
same_screen = 1
},
xcrossing = {
type = 2,
serial = 35912,
send_event = 0,
display = 0x86aef18,
window = 29360172,
root = 59,
subwindow = 0,
time = 25156164,
x = 486,
y = 436,
x_root = 489,
y_root = 461,
mode = 0,
detail = 44,
same_screen = 1,
---Type <return> to continue, or q <return> to quit---
focus = 72,
state = 24
},
xfocus = {
type = 2,
serial = 35912,
send_event = 0,
display = 0x86aef18,
window = 29360172,
mode = 59,
detail = 0
},
xexpose = {
type = 2,
serial = 35912,
send_event = 0,
display = 0x86aef18,
window = 29360172,
x = 59,
y = 0,
width = 25156164,
height = 486,
count = 436
},
xgraphicsexpose = {
type = 2,
serial = 35912,
send_event = 0,
display = 0x86aef18,
drawable = 29360172,
x = 59,
y = 0,
---Type <return> to continue, or q <return> to quit---
width = 25156164,
height = 486,
count = 436,
major_code = 489,
minor_code = 461
},
xnoexpose = {
type = 2,
serial = 35912,
send_event = 0,
display = 0x86aef18,
drawable = 29360172,
major_code = 59,
minor_code = 0
},
xvisibility = {
type = 2,
serial = 35912,
send_event = 0,
display = 0x86aef18,
window = 29360172,
state = 59
},
xcreatewindow = {
type = 2,
serial = 35912,
send_event = 0,
display = 0x86aef18,
parent = 29360172,
window = 59,
x = 0,
y = 25156164,
---Type <return> to continue, or q <return> to quit---
width = 486,
height = 436,
border_width = 489,
override_redirect = 461
},
xdestroywindow = {
type = 2,
serial = 35912,
send_event = 0,
display = 0x86aef18,
event = 29360172,
window = 59
},
xunmap = {
type = 2,
serial = 35912,
send_event = 0,
display = 0x86aef18,
event = 29360172,
window = 59,
from_configure = 0
},
xmap = {
type = 2,
serial = 35912,
send_event = 0,
display = 0x86aef18,
event = 29360172,
window = 59,
override_redirect = 0
},
xmaprequest = {
---Type <return> to continue, or q <return> to quit---
type = 2,
serial = 35912,
send_event = 0,
display = 0x86aef18,
parent = 29360172,
window = 59
},
xreparent = {
type = 2,
serial = 35912,
send_event = 0,
display = 0x86aef18,
event = 29360172,
window = 59,
parent = 0,
x = 25156164,
y = 486,
override_redirect = 436
},
xconfigure = {
type = 2,
serial = 35912,
send_event = 0,
display = 0x86aef18,
event = 29360172,
window = 59,
x = 0,
y = 25156164,
width = 486,
height = 436,
border_width = 489,
above = 461,
---Type <return> to continue, or q <return> to quit---
override_redirect = 0
},
xgravity = {
type = 2,
serial = 35912,
send_event = 0,
display = 0x86aef18,
event = 29360172,
window = 59,
x = 0,
y = 25156164
},
xresizerequest = {
type = 2,
serial = 35912,
send_event = 0,
display = 0x86aef18,
window = 29360172,
width = 59,
height = 0
},
xconfigurerequest = {
type = 2,
serial = 35912,
send_event = 0,
display = 0x86aef18,
parent = 29360172,
window = 59,
x = 0,
y = 25156164,
width = 486,
height = 436,
---Type <return> to continue, or q <return> to quit---
border_width = 489,
above = 461,
detail = 0,
value_mask = 44
},
xcirculate = {
type = 2,
serial = 35912,
send_event = 0,
display = 0x86aef18,
event = 29360172,
window = 59,
place = 0
},
xcirculaterequest = {
type = 2,
serial = 35912,
send_event = 0,
display = 0x86aef18,
parent = 29360172,
window = 59,
place = 0
},
xproperty = {
type = 2,
serial = 35912,
send_event = 0,
display = 0x86aef18,
window = 29360172,
atom = 59,
time = 0,
state = 25156164
---Type <return> to continue, or q <return> to quit---
},
xselectionclear = {
type = 2,
serial = 35912,
send_event = 0,
display = 0x86aef18,
window = 29360172,
selection = 59,
time = 0
},
xselectionrequest = {
type = 2,
serial = 35912,
send_event = 0,
display = 0x86aef18,
owner = 29360172,
requestor = 59,
selection = 0,
target = 25156164,
property = 486,
time = 436
},
xselection = {
type = 2,
serial = 35912,
send_event = 0,
display = 0x86aef18,
requestor = 29360172,
selection = 59,
target = 0,
property = 25156164,
time = 486
---Type <return> to continue, or q <return> to quit---
},
xcolormap = {
type = 2,
serial = 35912,
send_event = 0,
display = 0x86aef18,
window = 29360172,
colormap = 59,
new = 0,
state = 25156164
},
xclient = {
type = 2,
serial = 35912,
send_event = 0,
display = 0x86aef18,
window = 29360172,
message_type = 59,
format = 0,
data = {
b = "D\332\177\001\346\001\000\000\264\001\000\000\351\001\000\000\315\001\000",
s = {-9660, 383, 486, 0, 436, 0, 489, 0, 461, 0},
l = {25156164, 486, 436, 489, 461}
}
},
xmapping = {
type = 2,
serial = 35912,
send_event = 0,
display = 0x86aef18,
window = 29360172,
---Type <return> to continue, or q <return> to quit---
request = 59,
first_keycode = 0,
count = 25156164
},
xerror = {
type = 2,
display = 0x8c48,
resourceid = 0,
serial = 141225752,
error_code = 44 ',',
request_code = 0 '\0',
minor_code = 192 '\300'
},
xkeymap = {
type = 2,
serial = 35912,
send_event = 0,
display = 0x86aef18,
window = 29360172,
key_vector = ";\000\000\000\000\000\000\000D\332\177\001\346\001\000\000\264\001\000\000\351\001\000\000\315\001\000\000\000\000\000"
},
pad = {2, 35912, 0, 141225752, 29360172, 59, 0, 25156164, 486, 436, 489,
461, 0, 44, 1, 72, 24, 0, 1752461127, 1277191017, 842080300, 120, 24, 0}
}
(gdb) p *numcharsp
$13 = 1
(gdb) up
#2 0x081161ba in event_handler_gdk (gxev=0xbfffc664, ev=0x8710380, data=0x0)
at /usr/local/src/emacs/tiling/src/xterm.c:5773
5773 current_count += handle_one_xevent (dpyinfo,
(gdb) li
5768 #endif
5769
5770 if (! dpyinfo)
5771 current_finish = X_EVENT_NORMAL;
5772 else
5773 current_count += handle_one_xevent (dpyinfo,
5774 xev,
5775 current_bufp,
5776 current_numcharsp,
5777 ¤t_finish);
(gdb) fr
#2 0x081161ba in event_handler_gdk (gxev=0xbfffc664, ev=0x8710380, data=0x0)
at /usr/local/src/emacs/tiling/src/xterm.c:5773
5773 current_count += handle_one_xevent (dpyinfo,
(gdb) p curent_numcharsp
No symbol "curent_numcharsp" in current context.
(gdb) p current_numcharsp
$14 = (int *) 0xbfffc89c
(gdb) p *$
$15 = 1
(gdb) p current_bufp
$16 = (struct input_event **) 0xbfffc898
(gdb) p *$
$17 = (struct input_event *) 0xbfffd9e8
(gdb) i loc
dpyinfo = (struct x_display_info *) 0x86b7e10
xev = (XEvent *) 0xbfffc664
[-- Attachment #3: Type: text/plain, Size: 28 bytes --]
--
Run away! Run away!
[-- Attachment #4: Type: text/plain, Size: 141 bytes --]
_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://mail.gnu.org/mailman/listinfo/emacs-devel
next reply other threads:[~2004-02-25 7:06 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-02-25 7:06 Miles Bader [this message]
2004-02-25 8:47 ` xterm.c:handle_one_xevent question Jan D.
2004-02-25 10:33 ` Kim F. Storm
2004-02-25 10:04 ` Jan D.
2004-02-25 11:26 ` Kim F. Storm
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=buo1xoj8wpt.fsf@mcspd15.ucom.lsi.nec.co.jp \
--to=miles@lsi.nec.co.jp \
--cc=miles@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).