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

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

Re: crash when function-key-map is nil


From: Johan Bockgård
Subject: Re: crash when function-key-map is nil
Date: Wed, 26 Jul 2006 03:18:15 +0200
User-agent: Gnus/5.110006 (No Gnus v0.6) Emacs/22.0.50 (gnu/linux)

Richard Stallman <address@hidden> writes:

>     #0  0x0000000000526211 in Fget (symbol=0, propname=9476017) at fns.c:2004
>     No locals.
>
>
> SYMBOL looks wrong.  Can you trace back where that value came from?

(I think GDB is lying here. If I set a breakpoint on Fget it displays
"symbol=<value optimized out>", and if I recompile fns.c without
optimizations it changes to "symbol=1".)

>     #1  0x00000000004b74d0 in parse_modifiers (symbol=1) at keyboard.c:6147
>           elements = 4294967296
>     #2  0x00000000004b77c0 in reorder_modifiers (symbol=1) at keyboard.c:6266
>           parsed = 9700501
>
>
> SYMBOL looks wrong here too.  Can you trace back where that value came
> from?

The "1" comes from...

#3  0x00000000004c368a in access_keymap (map=11100261, idx=1, t_ok=1, 
noinherit=0, autoload=1) at keymap.c:527
        val = 9411009

IDX here



#4  0x00000000004bbcee in access_keymap_keyremap (map=11100261, key=1, 
prompt=9410961, do_funcall=1) at keyboard.c:8374
        next = 9410961

KEY here



#5  0x00000000004bbf7f in keyremap_step (keybuf=0x7fffff818780, bufsize=30, 
fkey=0x7fffff8184c0, input=1, doit=1, diff=0x7fffff81839c, prompt=9410961) at 
keyboard.c:8429
        next = 9410961
        key = 1

KEY here. KEY gets its value from

    key = keybuf[fkey->end++]



#6  0x00000000004be35a in read_key_sequence (keybuf=0x7fffff818780, bufsize=30, 
prompt=9410961, dont_downcase_last=0, can_return_switch_frame=1, 
fix_current_buffer=1) at keyboard.c:9386

This is inside this loop:

      /* Look for this sequence in key-translation-map.
         Scan from keytran.end until we find a bound suffix.  */
      while (keytran.end < fkey.start)
        {
          struct gcpro gcpro1, gcpro2, gcpro3;
          int done, diff;

          GCPRO3 (fkey.map, keytran.map, delayed_switch_frame);
          done = keyremap_step (keybuf, bufsize, &keytran, max (t, mock_input),
                                1, &diff, prompt);
          UNGCPRO;
          if (done)
            {
              mock_input = diff + max (t, mock_input);
              /* Adjust the function-key-map counters.  */
              fkey.end += diff;
              fkey.start += diff;

              goto replay_sequence;
            }
        }

-- 
Johan Bockgård




reply via email to

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