unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* xterm.c:handle_one_xevent question
@ 2004-02-25  7:06 Miles Bader
  2004-02-25  8:47 ` Jan D.
  2004-02-25 10:33 ` Kim F. Storm
  0 siblings, 2 replies; 5+ messages in thread
From: Miles Bader @ 2004-02-25  7:06 UTC (permalink / 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                                                &current_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

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

end of thread, other threads:[~2004-02-25 11:26 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-02-25  7:06 xterm.c:handle_one_xevent question Miles Bader
2004-02-25  8:47 ` 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

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).