Bug 92564 - libgo regression in runtime test resulting in SIGSEGV on ppc64le
Summary: libgo regression in runtime test resulting in SIGSEGV on ppc64le
Status: UNCONFIRMED
Alias: None
Product: gcc
Classification: Unclassified
Component: go (show other bugs)
Version: 10.0
: P3 normal
Target Milestone: ---
Assignee: Ian Lance Taylor
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2019-11-18 17:28 UTC by boger
Modified: 2020-10-08 13:51 UTC (History)
2 users (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description boger 2019-11-18 17:28:31 UTC
When running the runtime test on ppc64le from trunk, a SIGSEV results. This happens consistently now, but we have been unable to identify the commit where this was introduced because it was intermittent when it started. On one machine it fails on r276474.

The failing output:

[signal SIGSEGV: segmentation violation code=0x2 addr=0x7c2d2cb30000 pc=0x100af074]

runtime stack:
runtime.dopanic_m
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/panic.go:1181
runtime.fatalthrow
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/panic.go:1047
runtime.throw
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/panic.go:1018
runtime.sigpanic
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/signal_unix.go:337
runtime.sighandler
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/signal_sighandler.go:100
runtime.sigtrampgo
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/signal_unix.go:314
runtime.sigtramp
        ../../../src/libgo/runtime/go-signal.c:86

        :0
runtime.scanstackblock
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/mgcmark.go:1059
doscanstack1
        ../../../src/libgo/runtime/stack.c:91
runtime.doscanstack
        ../../../src/libgo/runtime/stack.c:38
runtime.scanstack
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/mgcmark.go:653
runtime.scang
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:914
runtime.markroot..func1
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/mgcmark.go:206
runtime.systemstack
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/stubs.go:60
runtime.markroot
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/mgcmark.go:187
runtime.gcDrain
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/mgcmark.go:764
runtime.gcBgMarkWorker..func2
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/mgc.go:1906
runtime.systemstack..func1
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/stubs.go:63
runtime_mstart
        ../../../src/libgo/runtime/proc.c:593

goroutine 102 [GC worker (idle)]:
runtime.mcall
        ../../../src/libgo/runtime/proc.c:343
runtime.systemstack
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/stubs.go:66
runtime.gcBgMarkWorker
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/mgc.go:1893
runtime.kickoff
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:1213
created by runtime.gcBgMarkStartWorkers
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/mgc.go:1785 +0xc8

goroutine 1 [chan receive (scan)]:
runtime.mcall
        ../../../src/libgo/runtime/proc.c:343
runtime.gopark
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:339
runtime.goparkunlock
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:345
runtime.chanrecv
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/chan.go:546
runtime.chanrecv1
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/chan.go:423
testing.T.Run
        ../../../src/libgo/go/testing/testing.go:961
testing.runTests..func1
        ../../../src/libgo/go/testing/testing.go:1202
testing.tRunner
        ../../../src/libgo/go/testing/testing.go:909
testing.runTests
        ../../../src/libgo/go/testing/testing.go:1200
testing.M.Run
        ../../../src/libgo/go/testing/testing.go:1117
runtime_test.TestMain
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/crash_test.go:28
main.main
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/_testmain.go:515
runtime.main
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:235

goroutine 2 [force gc (idle)]:
runtime.mcall
        ../../../src/libgo/runtime/proc.c:343
runtime.gopark
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:339
runtime.goparkunlock
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:345
runtime.forcegchelper
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:288
runtime.kickoff
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:1213
created by runtime..import
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:273 +0x504

goroutine 3 [finalizer wait]:
runtime.mcall
        ../../../src/libgo/runtime/proc.c:343
runtime.gopark
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:339
runtime.goparkunlock
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:345
runtime.runfinq
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/mfinal.go:146
runtime.kickoff
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:1213
created by runtime.SetFinalizer
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/mfinal.go:370 +0x340

goroutine 4 [GC sweep wait]:
runtime.mcall
        ../../../src/libgo/runtime/proc.c:343
runtime.gopark
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:339
runtime.goparkunlock
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:345
runtime.bgsweep
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/mgcsweep.go:72
runtime.kickoff
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:1213
created by runtime.gcenable
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/mgc.go:211 +0xbc


goroutine 5 [GC scavenge wait]:
runtime.mcall
        ../../../src/libgo/runtime/proc.c:343
runtime.gopark
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:339
runtime.goparkunlock
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:345
runtime.bgscavenge
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/mgcscavenge.go:259
runtime.kickoff
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:1213
created by runtime.gcenable
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/mgc.go:213 +0x10c

goroutine 6 [syscall]:
        goroutine in C code; stack unavailable
created by time.startTimer
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/time.go:114 +0x1e8

goroutine 9 [chan receive]:
runtime.mcall
        ../../../src/libgo/runtime/proc.c:343
runtime.gopark
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:339
runtime.goparkunlock
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:345
runtime.chanrecv
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/chan.go:546
runtime.chanrecv1
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/chan.go:423
runtime_test.TestChan
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/chan_test.go:172
testing.tRunner
        ../../../src/libgo/go/testing/testing.go:909
runtime.kickoff
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:1213
created by testing.T.Run
        ../../../src/libgo/go/testing/testing.go:960 +0x39c


goroutine 18 [timer goroutine (idle)]:
runtime.mcall
        ../../../src/libgo/runtime/proc.c:343
runtime.gopark
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:339
runtime.goparkunlock
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:345
runtime.timerproc
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/time.go:306
runtime.kickoff
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:1213
created by runtime.timersBucket.addtimerLocked
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/time.go:170 +0x1b8

goroutine 34 [timer goroutine (idle)]:
runtime.mcall
        ../../../src/libgo/runtime/proc.c:343
runtime.gopark
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:339
runtime.goparkunlock
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:345
runtime.timerproc
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/time.go:306
runtime.kickoff
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:1213
created by runtime.timersBucket.addtimerLocked
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/time.go:170 +0x1b8

goroutine 31 [GC assist wait]:
runtime.mcall
        ../../../src/libgo/runtime/proc.c:343
runtime.gopark
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:339
runtime.goparkunlock
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:345
runtime.gcParkAssist
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/mgcmark.go:532
runtime.gcAssistAlloc
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/mgcmark.go:396
runtime.mallocgc
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/malloc.go:948
runtime.newarray
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/malloc.go:1198
runtime.makeBucketArray
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/map.go:377
runtime.hashGrow
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/map.go:1097
runtime.mapassign_fast64
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/map_fast64.go:164
runtime_test.TestChan..func8
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/chan_test.go:165
runtime.kickoff
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:1213
created by runtime_test.TestChan
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/chan_test.go:161 +0x10c4

goroutine 29 [GC assist wait]:
runtime.mcall
        ../../../src/libgo/runtime/proc.c:343
runtime.gopark
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:339
runtime.goparkunlock
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:345
runtime.gcParkAssist
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/mgcmark.go:532
runtime.gcAssistAlloc
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/mgcmark.go:396
runtime.mallocgc
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/malloc.go:948
runtime.growslice
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/slice.go:184
runtime.hmap.newoverflow
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/map.go:282
runtime.mapassign_fast64
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/map_fast64.go:170
runtime_test.TestChan..func8
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/chan_test.go:165
runtime.kickoff
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:1213
created by runtime_test.TestChan
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/chan_test.go:161 +0x10c4

goroutine 113 [GC worker (idle)]:
runtime.mcall
        ../../../src/libgo/runtime/proc.c:343
runtime.gopark
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:339
runtime.gcBgMarkWorker
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/mgc.go:1839
runtime.kickoff
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:1213
created by runtime.gcBgMarkStartWorkers
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/mgc.go:1785 +0xc8

goroutine 60 [timer goroutine (idle)]:
runtime.mcall
        ../../../src/libgo/runtime/proc.c:343
runtime.gopark
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:339
runtime.goparkunlock
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:345
runtime.timerproc
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/time.go:306
runtime.kickoff
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:1213
created by runtime.timersBucket.addtimerLocked
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/time.go:170 +0x1b8

goroutine 28 [chan send]:
runtime.mcall
        ../../../src/libgo/runtime/proc.c:343
runtime.gopark
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:339
runtime.goparkunlock
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:345
runtime.chansend
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/chan.go:253
runtime.chansend1
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/chan.go:139
runtime_test.TestChan..func7
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/chan_test.go:155
runtime.kickoff
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:1213
created by runtime_test.TestChan
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/chan_test.go:153 +0xffc

goroutine 61 [GC worker (idle)]:
runtime.mcall
        ../../../src/libgo/runtime/proc.c:343
runtime.gopark
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:339
runtime.gcBgMarkWorker
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/mgc.go:1839
runtime.kickoff
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:1213
created by runtime.gcBgMarkStartWorkers
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/mgc.go:1785 +0xc8

goroutine 27 [chan send]:
runtime.mcall
        ../../../src/libgo/runtime/proc.c:343
runtime.gopark
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:339
runtime.goparkunlock
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:345
runtime.chansend
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/chan.go:253
runtime.chansend1
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/chan.go:139
runtime_test.TestChan..func7
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/chan_test.go:155
runtime.kickoff
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:1213
created by runtime_test.TestChan
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/chan_test.go:153 +0xffc

goroutine 26 [chan send]:
runtime.mcall
        ../../../src/libgo/runtime/proc.c:343
runtime.gopark
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:339
runtime.goparkunlock
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:345
runtime.chansend
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/chan.go:253
runtime.chansend1
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/chan.go:139
runtime_test.TestChan..func7
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/chan_test.go:155
runtime.kickoff
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:1213
created by runtime_test.TestChan
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/chan_test.go:153 +0xffc

goroutine 25 [chan send]:
runtime.mcall
        ../../../src/libgo/runtime/proc.c:343
runtime.gopark
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:339
runtime.goparkunlock
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:345
runtime.chansend
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/chan.go:253
runtime.chansend1
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/chan.go:139
runtime_test.TestChan..func7
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/chan_test.go:155
runtime.kickoff
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:1213
created by runtime_test.TestChan
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/chan_test.go:153 +0xffc

goroutine 103 [GC worker (idle)]:
runtime.mcall
        ../../../src/libgo/runtime/proc.c:343
runtime.gopark
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:339
runtime.gcBgMarkWorker
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/mgc.go:1839
runtime.kickoff
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/proc.go:1213
created by runtime.gcBgMarkStartWorkers
        /home/boger/gccgo.work/trunk/bld/powerpc64le-linux/libgo/gotest48232/test/mgc.go:1785 +0xc8
Keeping gotest48232
FAIL: runtime





gdb shows this stack trace at the point of the SEGSEV:

Thread 5 "a.out" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff0fceff0 (LWP 45320)]
runtime.scanstackblock (b=<optimized out>, n=<optimized out>, gcw=<optimized out>) at mgcmark.go:1059
1059			if obj, span, objIndex := findObject(obj, b, i, true); obj != 0 {
(gdb) bt
#0  runtime.scanstackblock (b=<optimized out>, n=<optimized out>, gcw=<optimized out>) at mgcmark.go:1059
#1  0x00007ffff700578c in doscanstack1 (gp=<optimized out>, gcw=<optimized out>) at ../../../src/libgo/runtime/stack.c:91
#2  0x00007ffff70059c4 in runtime.doscanstack (gp=<optimized out>, gcw=<optimized out>) at ../../../src/libgo/runtime/stack.c:38
#3  0x00000000100ad91c in runtime.scanstack (gp=gp@entry=0xc000000d80, gcw=gcw@entry=0xc000023310) at mgcmark.go:653
#4  0x00000000100d1f68 in runtime.scang (gp=<optimized out>, gcw=<optimized out>) at proc.go:914
#5  0x00000000100ac584 in runtime.markroot..func1 () at mgcmark.go:206
#6  0x00000000100f3780 in runtime.systemstack (fn=<optimized out>) at stubs.go:60
#7  0x00000000100ac4cc in runtime.markroot (gcw=gcw@entry=0xc000023310, i=<optimized out>) at mgcmark.go:187
#8  0x00000000100adf28 in runtime.gcDrain (gcw=<optimized out>, flags=flags@entry=3) at mgcmark.go:764
#9  0x00000000100a6e5c in runtime.gcBgMarkWorker..func2 () at mgc.go:1906
#10 0x00000000100f3858 in runtime.systemstack..func1 (origg=<optimized out>) at stubs.go:63
#11 0x00007ffff7004990 in runtime_mstart (arg=<optimized out>) at ../../../src/libgo/runtime/proc.c:593
#12 0x00007ffff770c3dc in __morestack () at ../../../src/libgcc/config/rs6000/morestack.S:204
#13 0x00007ffff770c17c in stack_split_initialize_thread (varg=0x7fffe4000c60) at ../../../src/libgcc/generic-morestack-thread.c:127
#14 0x00007ffff60a885c in start_thread (arg=0x0) at pthread_create.c:463
#15 0x00007ffff6249028 in clone () at ../sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S:82
Comment 1 boger 2020-10-06 19:37:52 UTC
More information on this bug has been added to https://github.com/golang/go/issues/36697. The problem appears to be due the use of split stack and possibly the gold linker is not handling the split stack functions correctly in libgcc generic-morestack.c.
Comment 2 Alan Modra 2020-10-06 22:14:19 UTC
Did you try Ian's suggestion of -Wl,--split-stack-adjust-size=0x8000 or even larger?
Comment 3 boger 2020-10-08 13:51:39 UTC
Yes, I tried the value of 0x80000 and the test passed. In the issue Ian mentioned that 0x100000 was the default on x86. If we want the same default on x86 and ppc64 then 0x100000 would work since the value I tested with is smaller.