/
/
opt
/
golang
/
1.22.0
/
src
/
cmd
/
cgo
/
internal
/
testsanitizers
/
testdata
Server: in-mum-web1112.main-hosting.eu (62.72.28.111)
You: 216.73.216.137
PHP 8.3.16
Dir:
/opt/golang/1.22.0/src/cmd/cgo/internal/testsanitizers/testdata
Edit:
/opt/golang/1.22.0/src/cmd/cgo/internal/testsanitizers/testdata/tsan8.go
// Copyright 2016 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. The TSAN // sigaction function interceptor returned SIG_DFL instead of the Go runtime's // handler in registerSegvForwarder. /* #cgo CFLAGS: -fsanitize=thread #cgo LDFLAGS: -fsanitize=thread #include <signal.h> #include <stdio.h> #include <stdlib.h> #include <string.h> struct sigaction prev_sa; void forwardSignal(int signo, siginfo_t *info, void *context) { // One of sa_sigaction and/or sa_handler if ((prev_sa.sa_flags&SA_SIGINFO) != 0) { prev_sa.sa_sigaction(signo, info, context); return; } if (prev_sa.sa_handler != SIG_IGN && prev_sa.sa_handler != SIG_DFL) { prev_sa.sa_handler(signo); return; } fprintf(stderr, "No Go handler to forward to!\n"); abort(); } void registerSegvFowarder() { struct sigaction sa; memset(&sa, 0, sizeof(sa)); sigemptyset(&sa.sa_mask); sa.sa_flags = SA_SIGINFO | SA_ONSTACK; sa.sa_sigaction = forwardSignal; if (sigaction(SIGSEGV, &sa, &prev_sa) != 0) { perror("failed to register SEGV forwarder"); exit(EXIT_FAILURE); } } */ import "C" func main() { C.registerSegvFowarder() defer func() { recover() }() var nilp *int *nilp = 42 }
Ukuran: 1.3 KB