runtime: fix false positive deadlock when using runtime.Goexit

Fixes #4893.
Actually it's fixed by cl/7314062 (improved scheduler),
just submitting the test.

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/7422054
This commit is contained in:
Dmitriy Vyukov 2013-03-05 09:40:17 +02:00
parent d0c11d20b8
commit 2fe840f4f6

View file

@ -91,6 +91,14 @@ func TestLockedDeadlock2(t *testing.T) {
testDeadlock(t, lockedDeadlockSource2)
}
func TestGoexitDeadlock(t *testing.T) {
got := executeTest(t, goexitDeadlockSource, nil)
want := ""
if got != want {
t.Fatalf("expected %q, but got %q", want, got)
}
}
const crashSource = `
package main
@ -175,3 +183,21 @@ func main() {
select {}
}
`
const goexitDeadlockSource = `
package main
import (
"runtime"
)
func F() {
for i := 0; i < 10; i++ {
}
}
func main() {
go F()
go F()
runtime.Goexit()
}
`