Subject: Re: bug#9723: 24.0.50; Emacs Clipboard crash

From: Eli Zaretskii <[email-masked]>
Date: Fri, 28 Oct 2011 11:38:55 +0200

> From: Joseph Jones <[email-masked]>
> CC: "[email-masked]" <[email-masked]>
> Date: Thu, 27 Oct 2011 11:28:31 -0700
> 
> Yes. Ctrl+h b is tied to ido-switch-buffer
> 
> 
> (gdb) print byte_stack_list
> $1 = (struct byte_stack *) 0x440
> (gdb) print stack
> $2 = {
>   pc = 0x58801d7 "",
>   byte_string = 59862065,
>   byte_string_start = 0x5880188 "╞\030╟╚        \"\210╞╔╩\217\210\bâ\032",
>   constants = 59899269,
>   next = 0x82eca4
> }
> (gdb)

So byte_stack_list isn't NULL, but is nevertheless garbage.
Hmm... some snafu during GC, perhaps?

If you still have that session in GDB, please copy the following two
functions to a file:

---------------------- cut here ----------------------
define xprintstr1
  set $data = (char *) $arg0->data
  output/c ($arg0->size > 1000) ? 0 : ($data[0])@($arg0->size_byte < 0 ? $arg0->size & ~gdb_array_mark_flag : $arg0->size_byte)
end

define xbytestack
  set $st = &stack
  while $st
    printf "0x%x => ", $st->byte_string
    xgetptr ($st->byte_string)
    set $x = (struct Lisp_String *) $ptr
    xprintstr1 $x
    echo \n
    set $st = $st->next
  end
end
---------------------- cut here ----------------------

Let's say the file's name is `foo', then type "source foo" at GDB
prompt, and then type these two commands:

  (gdb) frame 0
  (gdb) xbytestack

This must be _after_ you source .gdbinit, because xbytestack uses some
of the commands defined there, so if this is a new session, source
.gdbinit first.