-
Notifications
You must be signed in to change notification settings - Fork 18.8k
Closed
Labels
FrozenDueToAgeNeedsInvestigationSomeone must examine and confirm this is a valid issue and not a duplicate of an existing one.Someone must examine and confirm this is a valid issue and not a duplicate of an existing one.help wanted
Milestone
Description
What version of Go are you using (go version)?
$ go version go version go1.15 linux/amd64
(Also verified on 1.14 on both linux and darwin)
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 GO111MODULE="on" GOARCH="amd64" GOBIN="" GOCACHE="/home/user/.cache/go-build" GOENV="/home/user/.config/go/env" GOEXE="" GOFLAGS="" GOHOSTARCH="amd64" GOHOSTOS="linux" GOINSECURE="" GOMODCACHE="/opt/go/path/pkg/mod" GONOPROXY="" GONOSUMDB="" GOOS="linux" GOPATH="/opt/go/path" GOPRIVATE="" GOPROXY="https://proxy.golang.org,direct" GOROOT="/home/user/.gimme/versions/go" GOSUMDB="sum.golang.org" GOTMPDIR="" GOTOOLDIR="/home/user/.gimme/versions/go/pkg/tool/linux_amd64" GCCGO="gccgo" AR="ar" CC="gcc" CXX="g++" CGO_ENABLED="1" GOMOD="/home/user/go-test/go.mod" CGO_CFLAGS="-g -O2" CGO_CPPFLAGS="" CGO_CXXFLAGS="-g -O2" CGO_FFLAGS="-g -O2" CGO_LDFLAGS="-g -O2" PKG_CONFIG="pkg-config" GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build701379955=/tmp/go-build -gno-record-gcc-switches"
What did you do?
Used runtime.Goexit in an example test from the main test goroutine.
package main
import "runtime"
func ExampleGoexit() {
runtime.Goexit()
// Output:
}What did you expect to see?
A failure, similar to when runtime.Goexit is used in a test,
package main
import "runtime"
import "testing"
func TestGoexit(t *testing.T) {
runtime.Goexit()
}> go test -v -run Test
=== RUN TestGoexit
--- FAIL: TestGoexit (0.00s)
panic: test executed panic(nil) or runtime.Goexit
[...]
What did you see instead?
The example test hangs (until the test timeout is hit):
> go test -v -run Example -timeout 10s
=== RUN ExampleGoexit
--- PASS: ExampleGoexit (0.00s)
panic: test timed out after 10s
goroutine 8 [running]:
testing.(*M).startAlarm.func1()
[...]/go/src/testing/testing.go:1609 +0xe5
created by time.goFunc
[...]/go/src/time/sleep.go:167 +0x45
exit status 2
FAIL goexit_test 10.008s
I can send a SIGQUIT to get the backtrace:
=== RUN ExampleGoexit
--- PASS: ExampleGoexit (0.00s)
^\SIGQUIT: quit
PC=0x7fff6a9c4766 m=0 sigcode=0
goroutine 0 [idle]:
runtime.kevent(0x7ffe00000003, 0x0, 0x0, 0x7ffeefbfece8, 0x40, 0x7ffeefbfecc0, 0x0)
/usr/local/Cellar/go/1.14.2_1/libexec/src/runtime/sys_darwin.go:355 +0x39
runtime.netpoll(0x25408e43c, 0xadf60b77b01)
/usr/local/Cellar/go/1.14.2_1/libexec/src/runtime/netpoll_kqueue.go:120 +0xae
runtime.findrunnable(0xc000026800, 0x0)
/usr/local/Cellar/go/1.14.2_1/libexec/src/runtime/proc.go:2323 +0x72b
runtime.schedule()
/usr/local/Cellar/go/1.14.2_1/libexec/src/runtime/proc.go:2520 +0x2fc
runtime.park_m(0xc000000180)
/usr/local/Cellar/go/1.14.2_1/libexec/src/runtime/proc.go:2690 +0x9d
runtime.mcall(0x105f4a6)
/usr/local/Cellar/go/1.14.2_1/libexec/src/runtime/asm_amd64.s:318 +0x5b
In the Go playground, this triggers a deadlock:
https://play.golang.org/p/xaSFhxBPeKB
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
FrozenDueToAgeNeedsInvestigationSomeone must examine and confirm this is a valid issue and not a duplicate of an existing one.Someone must examine and confirm this is a valid issue and not a duplicate of an existing one.help wanted