From: Dmitriy Vyukov Date: Tue, 5 Mar 2013 07:40:17 +0000 (+0200) Subject: runtime: fix false positive deadlock when using runtime.Goexit X-Git-Tag: go1.1rc2~687 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=2fe840f4f69bb1013ff5ae8968d8ab8257fb2d22;p=gostls13.git 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 --- diff --git a/src/pkg/runtime/crash_test.go b/src/pkg/runtime/crash_test.go index 5f84cb5a2f..80549a5054 100644 --- a/src/pkg/runtime/crash_test.go +++ b/src/pkg/runtime/crash_test.go @@ -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() +} +`