Subject: Re: bug#70914: 29.3; Crashes often on Windows

From: Eli Zaretskii <[email-masked]>
Date: Mon, 20 May 2024 21:20:16 +0300

> From: Simen Endsjø <[email-masked]>
> Date: Mon, 20 May 2024 19:54:38 +0200
> Cc: [email-masked], [email-masked]
> 
> > Please try this with a healthy Emacs process before you do it after
> > the crash, to make sure this procedure works.  Here's my attempt to
> > validate this technique:
> 
> Looks like I needed a binary with debugging symbols, so I used my previous
> build. It's as good as any other. But looks like there are two stack frames with
> zero pointers, so the technique doesn't work?
> 
>     Thread 1 received signal SIGSEGV, Segmentation fault.
>     0x0000000000000000 in ?? ()
>     (gdb) thread 1
>     [Switching to thread 1 (Thread 19884.0x7bf8)]
>     #0  0x0000000000000000 in ?? ()
>     (gdb) p/x *(uintptr_t *)$sp
>     $1 = 0x0
>     (gdb) list *$
>     (gdb) bt
>     #0  0x0000000000000000 in ?? ()
>     #1  0x0000000000000000 in ?? ()
>     (gdb)

There are two zeros on the stack.  Bummer.

What does this produce:

  (gdb) p/x *(uintptr_t *)($sp + 8)

If the value is non-zero, try listing it:

  (gdb) list *$

If the above yields zero, try $sp+16, $sp+24, etc., until you get a
non-zero value.