On Mon, 2019-01-28 at 20:07 +0100, Svante Signell wrote: > On Sat, 2019-01-26 at 23:24 +0100, Samuel Thibault wrote: > > Samuel Thibault, le jeu. 24 janv. 2019 13:19:52 +0100, a ecrit: > > > Svante Signell, le jeu. 24 janv. 2019 12:11:25 +0100, a ecrit: > > > > However, all these tests are still failing, but now mainly with SIGABRT > > > > or > > > > "signal 20 (SIGCHLD) received but handler not on signal stack" or > > > > "signal > > > > 30 > > > > (SIGUSR1) received but handler not on signal stack". > > > > > > > > So I think there are still more bugs to hunt down. > > > > > > Yep, but there is most probably some progress here, and possibly it'll > > > be easier to track down such explicit abort than a SIGILL from out of > > > space. > > > > I guess this is printed from ./src/libgo/runtime/go-signal.c? It'd be > > useful to dump the content of st and print sp. > > (gdb) p sp > $1 = 654468 > (gdb) p st > $2 = {ss_sp = 0x0, ss_size = 0, ss_flags = 0}
Sorry single-stepping further: (gdb) p sp $10 = 654468 (gdb) p stsp + st.ss_size $11 = 655360 (gdb) p sp < stsp $12 = 0 (gdb) p sp >= stsp + st.ss_size $13 = 0 gdb) c Continuing. [New Thread 4528.12] Thread 4 hit Breakpoint 1, runtime.sigtramp (sig=20, info=0x659551c, context=0x6595328) at ../../../src/libgo/runtime/go-signal.c:100 100 if (sp < (uintptr)(stack) || sp >= (uintptr)(stack) + stack_size) { (gdb) p sp $16 = 106516932 gdb) n 101 sigaltstack(nil, &st); (gdb) 102 if ((st.ss_flags & SS_DISABLE) != 0) { (gdb) 107 stsp = (uintptr)(st.ss_sp); (gdb) 108 if (sp < stsp || sp >= stsp + st.ss_size) { (gdb) p sp < stsp $20 = 0 (gdb) p sp >= stsp + st.ss_size $21 = 1 (gdb) p stsp $22 = 610332 (gdb) p sp $23 = 106516932 (gdb) p stack_size $25 = 128 (gdb) p st $24 = {ss_sp = 0x9501c, ss_size = 45028, ss_flags = 1}