https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82131
Bug ID: 82131 Summary: FAIL: TestCgoCallbackGC in gotools testsuite; segfaults in morestack.S:529 Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: go Assignee: ian at airs dot com Reporter: ubizjak at gmail dot com CC: cmang at google dot com Target Milestone: --- The testcase fails on x86_64-linux-gnu split-stack target. Running the testcase manually under the debugger: $gdb --args ./testprogcgo CgoCallbackGC (gdb) r Starting program: /home/uros/git/gcc/libgo/go/runtime/testdata/testprogcgo/testprogcgo CgoCallbackGC warning: no loadable sections found in added symbol-file system-supplied DSO at 0x2aaaaaaab000 [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib64/libthread_db.so.1". [New Thread 0x2aaaad51d940 (LWP 1741)] [New Thread 0x2aaaaf5c6940 (LWP 1742)] [New Thread 0x2aaaaf9da940 (LWP 1744)] [New Thread 0x2aaaaf7d0940 (LWP 1743)] [New Thread 0x2aaac9a6b940 (LWP 1745)] [New Thread 0x2aaac9c75940 (LWP 1746)] ... [New Thread 0x2aab347a9940 (LWP 1944)] [New Thread 0x2aab34c8b940 (LWP 1945)] [New Thread 0x2aab34e97940 (LWP 1946)] [New Thread 0x2aab354a6940 (LWP 1947)] [New Thread 0x2aab356b0940 (LWP 1948)] [New Thread 0x2aab37906940 (LWP 1949)] [Thread 0x2aab0050e940 (LWP 1849) exited] [Thread 0x2aaae5289940 (LWP 1784) exited] Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x2aab01168940 (LWP 1851)] __morestack () at ../../../git/gcc/libgcc/config/i386/morestack.S:529 529 call __morestack_unblock_signals (gdb) bt #0 __morestack () at ../../../git/gcc/libgcc/config/i386/morestack.S:529 #1 0x00002aaaaba3e73e in dwarf_lookup_pc (state=state@entry=0x2aaaad91f000, ddata=ddata@entry=0x2aaaaf12fd10, pc=<optimized out>, pc@entry=46912512497780, callback=callback@entry=0x2aaaab4e1aa0 <callback>, error_callback=error_callback@entry=0x2aaaab4e1d20 <error_callback>, data=data@entry=0x2aab42847740, found=<optimized out>) at ../../../git/gcc/libbacktrace/dwarf.c:2836 #2 0x00002aaaaba3fbbf in dwarf_fileline (state=0x2aaaad91f000, pc=46912512497780, callback=0x2aaaab4e1aa0 <callback>, error_callback=0x2aaaab4e1d20 <error_callback>, data=0x2aab42847740) at ../../../git/gcc/libbacktrace/dwarf.c:2896 #3 0x00002aaaaba40cc6 in unwind (context=<optimized out>, vdata=0x2aab42847700) at ../../../git/gcc/libbacktrace/backtrace.c:91 #4 0x00002aaaac495499 in _Unwind_Backtrace (trace=trace@entry=0x2aaaaba40c40 <unwind>, trace_argument=trace_argument@entry=0x2aab42847700) at ../../../git/gcc/libgcc/unwind.inc:295 #5 0x00002aaaaba40d39 in backtrace_full (state=0x2aaaad91f000, skip=skip@entry=0, callback=callback@entry=0x2aaaab4e1aa0 <callback>, error_callback=error_callback@entry=0x2aaaab4e1d20 <error_callback>, data=data@entry=0x2aab42847740) at ../../../git/gcc/libbacktrace/backtrace.c:127 #6 0x00002aaaab4e1dd5 in runtime_callers (skip=skip@entry=4, locbuf=<optimized out>, m=<optimized out>, keep_thunks=keep_thunks@entry=false) at ../../../git/gcc/libgo/runtime/go-callers.c:184 #7 0x00002aaaab940071 in runtime.callers (skip=skip@entry=4, locbuf=...) at ../../../git/gcc/libgo/go/runtime/traceback_gccgo.go:63 #8 0x00002aaaab96e4c4 in runtime.mProf_Malloc (size=16, p=<optimized out>) at ../../../git/gcc/libgo/go/runtime/mprof.go:245 #9 runtime.profilealloc (mp=0xc4203fc000, size=16, x=<optimized out>) at ../../../git/gcc/libgo/go/runtime/malloc.go:873 #10 runtime.mallocgc (size=<optimized out>, typ=<optimized out>, needzero=<optimized out>) at ../../../git/gcc/libgo/go/runtime/malloc.go:795 #11 0x00002aaaaba49875 in __morestack () at ../../../git/gcc/libgcc/config/i386/morestack.S:544 #12 0x00002aaaab97014f in runtime.newobject (typ=<optimized out>) at ../../../git/gcc/libgo/go/runtime/malloc.go:850 #13 0x0000000000406fb6 in main.grow1 (x=0xc42010a8a0, sum=0xc4202e0ce8) at /home/uros/git/gcc/libgo/go/runtime/testdata/testprogcgo/callback.go:66 #14 0x0000000000406fe1 in main.grow1 (x=0xc42010a8a0, sum=0xc4202e0ce0) at /home/uros/git/gcc/libgo/go/runtime/testdata/testprogcgo/callback.go:67 #15 0x0000000000406fe1 in main.grow1 (x=0xc42010a8a0, sum=0xc4202e0cd8) at /home/uros/git/gcc/libgo/go/runtime/testdata/testprogcgo/callback.go:67 ... #63 0x0000000000406fe1 in main.grow1 (x=0xc42010a8a0, sum=0xc4202e0b58) at /home/uros/git/gcc/libgo/go/runtime/testdata/testprogcgo/callback.go:67 #64 0x0000000000406fe1 in main.grow1 (x=0xc42010a8a0, sum=0xc4202e0b50) at /home/uros/git/gcc/libgo/go/runtime/testdata/testprogcgo/callback.go:67 #65 0x00002aaaaba3ca20 in ?? () at ../../../git/gcc/libbacktrace/dwarf.c:925 from /home/uros/local/lib64/libgo.so.11 #66 0x00002aab42846000 in ?? () (gdb) disass ... 0x00002aaaaba4982c <+42>: callq 0x2aaaaba48890 <__generic_morestack> 0x00002aaaaba49831 <+47>: mov -0x8(%rbp),%r10 0x00002aaaaba49835 <+51>: mov %rax,%rsp 0x00002aaaaba49838 <+54>: sub %r10,%rax 0x00002aaaaba4983b <+57>: add $0x600,%rax 0x00002aaaaba49841 <+63>: mov %rax,%fs:0x70 => 0x00002aaaaba4984a <+72>: callq 0x2aaaaba48ea0 <__morestack_unblock_signals> 0x00002aaaaba4984f <+77>: mov -0x18(%rbp),%rdi 0x00002aaaaba49853 <+81>: mov -0x20(%rbp),%rsi ... (gdb) list 524 #else 525 #define X86_64_SAVE_NEW_STACK_BOUNDARY(reg) movl %e##reg,%fs:0x40 526 #endif 527 X86_64_SAVE_NEW_STACK_BOUNDARY (ax) 528 529 call __morestack_unblock_signals 530 531 movq -24(%rbp),%rdi # Restore registers. 532 movq -32(%rbp),%rsi 533 movq -40(%rbp),%rdx