go: runtime: unexpected signal on Termux android/arm64
What version of Go are you using (go version
)?
$ go version go version go1.11.4 android/arm64
Does this issue reproduce with the latest release?
Yes
What operating system and processor architecture are you using (go env
)?
go env
Output
$ go env GOARCH="arm64" GOBIN="" GOCACHE="/data/data/com.termux/files/home/.cache/go-build" GOEXE="" GOFLAGS="" GOHOSTARCH="arm64" GOHOSTOS="android" GOOS="android" GOPATH="/data/data/com.termux/files/home/go" GOPROXY="" GORACE="" GOROOT="/data/data/com.termux/files/usr/lib/go" GOTMPDIR="" GOTOOLDIR="/data/data/com.termux/files/usr/lib/go/pkg/tool/android_arm64" GCCGO="gccgo" CC="aarch64-linux-android-clang" CXX="aarch64-linux-android-clang++" CGO_ENABLED="1" GOMOD="/data/data/com.termux/files/home/storage/shared/dev/projects/playground/go.mod" CGO_CFLAGS="-g -O2" CGO_CPPFLAGS="" CGO_CXXFLAGS="-g -O2" CGO_FFLAGS="-g -O2" CGO_LDFLAGS="-g -O2" PKG_CONFIG="/home/builder/.termux-build/_cache/18-aarch64-21-v1/bin/aarch64-linux-android-pkg-config" GOGCCFLAGS="-fPIC -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/data/data/com.termux/files/usr/tmp/go-build261125908=/tmp/go-build -gno-record-gcc-switches"
What did you do?
I create project outside the gopath using go mod
go mod init github.com/uudashr/playground
and have this files doc.go
and hello_test.go
package playground_test
import "testing"
func TestHello(t *testing.T) {
// Do nothing
}
then run test
go test
What did you expect to see?
Always shows
PASS
ok github.com/uudashr/playground 0.038s
What did you see instead?
1 out of 10 stuck/hung
and
1 out of 10 shows
PASS
ok github.com/uudashr/playground 0.033s
fatal error: unexpected signal during runtime execution
[signal SIGSEGV: segmentation violation code=0x1 addr=0x64 pc=0x7e1195d20]
runtime stack:
runtime.throw(0x7e154c90f, 0x2a)
/data/data/com.termux/files/usr/lib/go/src/runtime/panic.go:608 +0x4c
runtime.sigpanic()
/data/data/com.termux/files/usr/lib/go/src/runtime/signal_unix.go:374 +0x2a4
runtime.markrootSpans(0x4000031270, 0x0)
/data/data/com.termux/files/usr/lib/go/src/runtime/mgcmark.go:357 +0x88
runtime.markroot(0x4000031270, 0x200000004)
/data/data/com.termux/files/usr/lib/go/src/runtime/mgcmark.go:225 +0x340
runtime.gcDrain(0x4000031270, 0xd)
/data/data/com.termux/files/usr/lib/go/src/runtime/mgcmark.go:882 +0x108
runtime.gcBgMarkWorker.func2()
/data/data/com.termux/files/usr/lib/go/src/runtime/mgc.go:1862 +0x16c
runtime.systemstack(0x73ca02f400)
/data/data/com.termux/files/usr/lib/go/src/runtime/asm_arm64.s:230 +0x90
runtime.mstart()
/data/data/com.termux/files/usr/lib/go/src/runtime/proc.go:1229
goroutine 50 [GC worker (idle)]:
runtime.systemstack_switch()
/data/data/com.termux/files/usr/lib/go/src/runtime/asm_arm64.s:178 +0x8 fp=0x40002d6f50 sp=0x40002d6f40 pc=0x7e11ca290
runtime.gcBgMarkWorker(0x4000030000)
/data/data/com.termux/files/usr/lib/go/src/runtime/mgc.go:1826 +0x198 fp=0x40002d6fd0 sp=0x40002d6f50 pc=0x7e1193ae0
runtime.goexit()
/data/data/com.termux/files/usr/lib/go/src/runtime/asm_arm64.s:1114 +0x4 fp=0x40002d6fd0 sp=0x40002d6fd0 pc=0x7e11cca0c
created by runtime.gcBgMarkStartWorkers
/data/data/com.termux/files/usr/lib/go/src/runtime/mgc.go:1720 +0x70
goroutine 1 [semacquire]:
sync.runtime_Semacquire(0x4000253a38)
/data/data/com.termux/files/usr/lib/go/src/runtime/sema.go:56 +0x2c
sync.(*WaitGroup).Wait(0x4000253a30)
/data/data/com.termux/files/usr/lib/go/src/sync/waitgroup.go:130 +0x64
cmd/go/internal/work.(*Builder).Do(0x40003e6280, 0x40003d3540)
/data/data/com.termux/files/usr/lib/go/src/cmd/go/internal/work/exec.go:174 +0x31c
cmd/go/internal/test.runTest(0x7e1aef420, 0x400000e070, 0x0, 0x0)
/data/data/com.termux/files/usr/lib/go/src/cmd/go/internal/test/test.go:759 +0xcd8
main.main()
/data/data/com.termux/files/usr/lib/go/src/cmd/go/main.go:219 +0x6e8
goroutine 5 [syscall]:
os/signal.signal_recv(0x4000000000)
/data/data/com.termux/files/usr/lib/go/src/runtime/sigqueue.go:139 +0xb8
os/signal.loop()
/data/data/com.termux/files/usr/lib/go/src/os/signal/signal_unix.go:23 +0x18
created by os/signal.init.0
/data/data/com.termux/files/usr/lib/go/src/os/signal/signal_unix.go:29 +0x30
goroutine 68 [select]:
cmd/go/internal/work.(*Builder).Do.func2(0x4000253a30, 0x40003e6280, 0x400059b2c0)
/data/data/com.termux/files/usr/lib/go/src/cmd/go/internal/work/exec.go:155 +0xdc
created by cmd/go/internal/work.(*Builder).Do
/data/data/com.termux/files/usr/lib/go/src/cmd/go/internal/work/exec.go:152 +0x2f8
goroutine 69 [select]:
cmd/go/internal/work.(*Builder).Do.func2(0x4000253a30, 0x40003e6280, 0x400059b2c0)
/data/data/com.termux/files/usr/lib/go/src/cmd/go/internal/work/exec.go:155 +0xdc
created by cmd/go/internal/work.(*Builder).Do
/data/data/com.termux/files/usr/lib/go/src/cmd/go/internal/work/exec.go:152 +0x2f8
goroutine 60 [chan receive]:
cmd/go/internal/base.processSignals.func1(0x400002c960)
/data/data/com.termux/files/usr/lib/go/src/cmd/go/internal/base/signal.go:21 +0x24
created by cmd/go/internal/base.processSignals
/data/data/com.termux/files/usr/lib/go/src/cmd/go/internal/base/signal.go:20 +0x78
goroutine 70 [select]:
cmd/go/internal/work.(*Builder).Do.func2(0x4000253a30, 0x40003e6280, 0x400059b2c0)
/data/data/com.termux/files/usr/lib/go/src/cmd/go/internal/work/exec.go:155 +0xdc
created by cmd/go/internal/work.(*Builder).Do
/data/data/com.termux/files/usr/lib/go/src/cmd/go/internal/work/exec.go:152 +0x2f8
goroutine 71 [select]:
cmd/go/internal/work.(*Builder).Do.func2(0x4000253a30, 0x40003e6280, 0x400059b2c0)
/data/data/com.termux/files/usr/lib/go/src/cmd/go/internal/work/exec.go:155 +0xdc
created by cmd/go/internal/work.(*Builder).Do
/data/data/com.termux/files/usr/lib/go/src/cmd/go/internal/work/exec.go:152 +0x2f8
goroutine 72 [runnable]:
syscall.Syscall(0x23, 0xffffffffffffff9c, 0x400043a280, 0x0, 0x0, 0x400043a280, 0x0)
/data/data/com.termux/files/usr/lib/go/src/syscall/asm_linux_arm64.s:9 +0x8
syscall.unlinkat(0xffffffffffffff9c, 0x400043a1e0, 0x4a, 0x0, 0x0, 0x400043a1e0)
/data/data/com.termux/files/usr/lib/go/src/syscall/zsyscall_linux_arm64.go:126 +0x68
syscall.Unlink(0x400043a1e0, 0x4a, 0x4a, 0x400043a1e0)
/data/data/com.termux/files/usr/lib/go/src/syscall/syscall_linux.go:168 +0x34
os.Remove(0x400043a1e0, 0x4a, 0xe, 0x4a)
/data/data/com.termux/files/usr/lib/go/src/os/file_unix.go:306 +0x28
os.RemoveAll(0x400043a1e0, 0x4a, 0x3b, 0x7e1535c2e)
/data/data/com.termux/files/usr/lib/go/src/os/path.go:68 +0x28
os.RemoveAll(0x400033b4c0, 0x3b, 0x40000e8ca8, 0x7e1472198)
/data/data/com.termux/files/usr/lib/go/src/os/path.go:109 +0x390
cmd/go/internal/test.builderCleanTest(0x40003e6280, 0x40000c4780, 0x40003e62f0, 0x7e1762840)
/data/data/com.termux/files/usr/lib/go/src/cmd/go/internal/test/test.go:1603 +0x4c
cmd/go/internal/work.(*Builder).Do.func1(0x40000c4780)
/data/data/com.termux/files/usr/lib/go/src/cmd/go/internal/work/exec.go:107 +0x50
cmd/go/internal/work.(*Builder).Do.func2(0x4000253a30, 0x40003e6280, 0x400059b2c0)
/data/data/com.termux/files/usr/lib/go/src/cmd/go/internal/work/exec.go:165 +0x8c
created by cmd/go/internal/work.(*Builder).Do
/data/data/com.termux/files/usr/lib/go/src/cmd/go/internal/work/exec.go:152 +0x2f8
goroutine 73 [select]:
cmd/go/internal/work.(*Builder).Do.func2(0x4000253a30, 0x40003e6280, 0x400059b2c0)
/data/data/com.termux/files/usr/lib/go/src/cmd/go/internal/work/exec.go:155 +0xdc
created by cmd/go/internal/work.(*Builder).Do
/data/data/com.termux/files/usr/lib/go/src/cmd/go/internal/work/exec.go:152 +0x2f8
About this issue
- Original URL
- State: open
- Created 5 years ago
- Comments: 27 (15 by maintainers)
Oh I see. Your distribution is a bit different. The standard layout is -
$GOROOT/bin/go --> binary $GOROOT/src/ --> standard library.
The standard release tarball unzips them into this structure. I believe if you put your go 1.11.4 in such a structure, then it should work. Sorry, looks like you have to do some more work here.
This looks like a nil mspan pointer in the span list. @aclements
Thank you for filing this bug @uudashr and welcome to the Go project!
I’ll kindly page some experts @ianlancetaylor @randall77 @eliasnaur