aboutsummaryrefslogtreecommitdiff
path: root/misc/cgo/test/issue9400_linux.go
diff options
context:
space:
mode:
Diffstat (limited to 'misc/cgo/test/issue9400_linux.go')
-rw-r--r--misc/cgo/test/issue9400_linux.go67
1 files changed, 0 insertions, 67 deletions
diff --git a/misc/cgo/test/issue9400_linux.go b/misc/cgo/test/issue9400_linux.go
deleted file mode 100644
index 38fa9dd177..0000000000
--- a/misc/cgo/test/issue9400_linux.go
+++ /dev/null
@@ -1,67 +0,0 @@
-// Copyright 2014 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.
-
-// Test that SIGSETXID runs on signal stack, since it's likely to
-// overflow if it runs on the Go stack.
-
-package cgotest
-
-/*
-#include <sys/types.h>
-#include <unistd.h>
-*/
-import "C"
-
-import (
- "runtime"
- "runtime/debug"
- "sync/atomic"
- "testing"
-
- "misc/cgo/test/issue9400"
-)
-
-func test9400(t *testing.T) {
- // We synchronize through a shared variable, so we need two procs
- defer runtime.GOMAXPROCS(runtime.GOMAXPROCS(2))
-
- // Start signaller
- atomic.StoreInt32(&issue9400.Baton, 0)
- go func() {
- // Wait for RewindAndSetgid
- for atomic.LoadInt32(&issue9400.Baton) == 0 {
- runtime.Gosched()
- }
- // Broadcast SIGSETXID
- runtime.LockOSThread()
- C.setgid(0)
- // Indicate that signalling is done
- atomic.StoreInt32(&issue9400.Baton, 0)
- }()
-
- // Grow the stack and put down a test pattern
- const pattern = 0x123456789abcdef
- var big [1024]uint64 // len must match assembly
- for i := range big {
- big[i] = pattern
- }
-
- // Disable GC for the duration of the test.
- // This avoids a potential GC deadlock when spinning in uninterruptable ASM below #49695.
- defer debug.SetGCPercent(debug.SetGCPercent(-1))
- // SetGCPercent waits until the mark phase is over, but the runtime
- // also preempts at the start of the sweep phase, so make sure that's
- // done too. See #49695.
- runtime.GC()
-
- // Temporarily rewind the stack and trigger SIGSETXID
- issue9400.RewindAndSetgid()
-
- // Check test pattern
- for i := range big {
- if big[i] != pattern {
- t.Fatalf("entry %d of test pattern is wrong; %#x != %#x", i, big[i], uint64(pattern))
- }
- }
-}