Index: src/pkg/runtime/crash_test.go |
=================================================================== |
--- a/src/pkg/runtime/crash_test.go |
+++ b/src/pkg/runtime/crash_test.go |
@@ -99,14 +99,6 @@ |
testDeadlock(t, lockedDeadlockSource2) |
} |
-func TestCgoSignalDeadlock(t *testing.T) { |
- got := executeTest(t, cgoSignalDeadlockSource, nil) |
- want := "OK\n" |
- if got != want { |
- t.Fatalf("expected %q, but got %q", want, got) |
- } |
-} |
- |
const crashSource = ` |
package main |
@@ -191,68 +183,3 @@ |
select {} |
} |
` |
- |
-const cgoSignalDeadlockSource = ` |
-package main |
- |
-import "C" |
- |
-import ( |
- "fmt" |
- "runtime" |
- "time" |
-) |
- |
-func main() { |
- runtime.GOMAXPROCS(100) |
- ping := make(chan bool) |
- go func() { |
- for i := 0; ; i++ { |
- runtime.Gosched() |
- select { |
- case done := <-ping: |
- if done { |
- ping <- true |
- return |
- } |
- ping <- true |
- default: |
- } |
- func() { |
- defer func() { |
- recover() |
- }() |
- var s *string |
- *s = "" |
- }() |
- } |
- }() |
- time.Sleep(time.Millisecond) |
- for i := 0; i < 64; i++ { |
- go func() { |
- runtime.LockOSThread() |
- select {} |
- }() |
- go func() { |
- runtime.LockOSThread() |
- select {} |
- }() |
- time.Sleep(time.Millisecond) |
- ping <- false |
- select { |
- case <-ping: |
- case <-time.After(time.Second): |
- fmt.Printf("HANG\n") |
- return |
- } |
- } |
- ping <- true |
- select { |
- case <-ping: |
- case <-time.After(time.Second): |
- fmt.Printf("HANG\n") |
- return |
- } |
- fmt.Printf("OK\n") |
-} |
-` |