diff options
Diffstat (limited to 'misc/cgo/testsanitizers/testdata/tsan14.go')
-rw-r--r-- | misc/cgo/testsanitizers/testdata/tsan14.go | 53 |
1 files changed, 0 insertions, 53 deletions
diff --git a/misc/cgo/testsanitizers/testdata/tsan14.go b/misc/cgo/testsanitizers/testdata/tsan14.go deleted file mode 100644 index d594ffb5c0..0000000000 --- a/misc/cgo/testsanitizers/testdata/tsan14.go +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2023 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. - -package main - -// This program failed when run under the C/C++ ThreadSanitizer. -// -// cgocallback on a new thread calls into runtime.needm -> _cgo_getstackbound -// to update gp.stack.lo with the stack bounds. If the G itself is passed to -// _cgo_getstackbound, then writes to the same G can be seen on multiple -// threads (when the G is reused after thread exit). This would trigger TSAN. - -/* -#include <pthread.h> - -void go_callback(); - -static void *thr(void *arg) { - go_callback(); - return 0; -} - -static void foo() { - pthread_t th; - pthread_attr_t attr; - pthread_attr_init(&attr); - pthread_attr_setstacksize(&attr, 256 << 10); - pthread_create(&th, &attr, thr, 0); - pthread_join(th, 0); -} -*/ -import "C" - -import ( - "time" -) - -//export go_callback -func go_callback() { -} - -func main() { - for i := 0; i < 2; i++ { - go func() { - for { - C.foo() - } - }() - } - - time.Sleep(1000*time.Millisecond) -} |