Subject: bug#12814: 24.3.50; Emacs crash in event_to_kboard at keyboard.c:3421

From: Eli Zaretskii <[email-masked]>
Date: Wed, 07 Nov 2012 19:17:31 +0200

> From: Tassilo Horn <[email-masked]>
> Cc: [email-masked],  [email-masked]
> Date: Wed, 07 Nov 2012 12:39:01 +0100
> 
> Program received signal SIGSEGV, Segmentation fault.
> 0x00000000005437a4 in event_to_kboard (event=0xbc0660 <kbd_buffer+18944>)
>     at keyboard.c:3421
> 3421	  if (WINDOWP (obj))
> (gdb) p obj
> $1 = 7652357
> (gdb) xtype 
> Lisp_Vectorlike
> Cannot access memory at address 0x74c400

Hmm... probably a window or frame that were deleted and recycled.

> Program received signal SIGSEGV, Segmentation fault.
> 0x00000000005437a4 in event_to_kboard (event=0xbc0660 <kbd_buffer+18944>)
>     at keyboard.c:3421
> 3421	  if (WINDOWP (obj))
> (gdb) p obj
> $1 = 7652357
> (gdb) xtype 
> Lisp_Vectorlike
> Cannot access memory at address 0x74c400
> (gdb) bt full
> #0  0x00000000005437a4 in event_to_kboard (event=0xbc0660 <kbd_buffer+18944>)
>     at keyboard.c:3421
>         obj = 7652357

So what kind of event is this?  Try these commands:

 (gdb) p *event
 (gdb) p event->arg
 (gdb) xtype

The last command will probably say it's a cons cell, in which case you
can use the "xcar" and "xcdr" commands to show the contents.  For each
component, type "xtype" followed by the command suitable for the type
that is shown: "xstring" for a string, "xsymbol" for a symbol, etc.

(Usually, just "pp event->arg" would display the whole thing, but it
is dangerous to use that command in a crashed session, you could screw
up the entire debugging session.)

Thanks.