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

Reply via email to