Subject: bug#29183: 27.0.50; SIGSEGV on C-g on Windows

From: Eli Zaretskii <[email-masked]>
Date: Tue, 07 Nov 2017 21:41:05 +0200

> From: John Mastro <[email-masked]>
> Date: Tue, 7 Nov 2017 10:14:09 -0800
> Cc: Eli Zaretskii <[email-masked]>
> 
> Eli Zaretskii <[email-masked]> wrote:
> > Is this again bug#29040?  Did main_thread become mis-aligned again?
> 
> I repeated the commands Richard used in that bug report, and I believe
> you're right: it's 8-byte aligned rather than 16-byte aligned.
> Transcript below.
> 
> Thread 1 received signal SIGSEGV, Segmentation fault.
> 0x00007ff8cb7893a0 in ntdll!RtlCaptureContext ()
>    from C:\Windows\SYSTEM32\ntdll.dll
> (gdb) frame 0
> #0  0x00007ff8cb7893a0 in ntdll!RtlCaptureContext ()
>    from C:\Windows\SYSTEM32\ntdll.dll
> (gdb) p/x $rax
> $1 = 0x4005d1d68
> (gdb) up
> #1  0x00007ff8cb6f8f27 in ntdll!RtlUnwindEx ()
>    from C:\Windows\SYSTEM32\ntdll.dll
> (gdb) up
> #2  0x00007ff8c91d1f4a in msvcrt!_setjmpex ()
>    from C:\Windows\System32\msvcrt.dll
> (gdb) up
> #3  0x00000004000a93d4 in quit_throw_to_read_char (
>     from_signal=from_signal@entry=false) at keyboard.c:10548
> 10548     sys_longjmp (getcjmp, 1);
> (gdb) p &getcjmp
> $2 = (sys_jmp_buf *) 0x4005d1d68 <main_thread+224>

Yep.  How did that happen?..

Can you show a preprocessed version of thread.c, where it does this:

  static struct thread_state GCALIGNED main_thread;

Also, what is your GCC version?