summaryrefslogtreecommitdiff
path: root/src/pkg/runtime/crash_cgo_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/pkg/runtime/crash_cgo_test.go')
-rw-r--r--src/pkg/runtime/crash_cgo_test.go119
1 files changed, 0 insertions, 119 deletions
diff --git a/src/pkg/runtime/crash_cgo_test.go b/src/pkg/runtime/crash_cgo_test.go
deleted file mode 100644
index 4ff0084c2..000000000
--- a/src/pkg/runtime/crash_cgo_test.go
+++ /dev/null
@@ -1,119 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build cgo
-
-package runtime_test
-
-import (
- "runtime"
- "testing"
-)
-
-func TestCgoCrashHandler(t *testing.T) {
- testCrashHandler(t, true)
-}
-
-func TestCgoSignalDeadlock(t *testing.T) {
- if testing.Short() && runtime.GOOS == "windows" {
- t.Skip("Skipping in short mode") // takes up to 64 seconds
- }
- got := executeTest(t, cgoSignalDeadlockSource, nil)
- want := "OK\n"
- if got != want {
- t.Fatalf("expected %q, but got %q", want, got)
- }
-}
-
-func TestCgoTraceback(t *testing.T) {
- got := executeTest(t, cgoTracebackSource, nil)
- want := "OK\n"
- if got != want {
- t.Fatalf("expected %q, but got %q", want, got)
- }
-}
-
-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")
-}
-`
-
-const cgoTracebackSource = `
-package main
-
-/* void foo(void) {} */
-import "C"
-
-import (
- "fmt"
- "runtime"
-)
-
-func main() {
- C.foo()
- buf := make([]byte, 1)
- runtime.Stack(buf, true)
- fmt.Printf("OK\n")
-}
-`