1// Copyright 2022 The Go Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style 3// license that can be found in the LICENSE file. 4 5package main 6 7// #include <unistd.h> 8// static void nop() {} 9import "C" 10 11import "syscall" 12 13func init() { 14 register("TgkillSegvInCgo", TgkillSegvInCgo) 15} 16 17func TgkillSegvInCgo() { 18 c := make(chan bool) 19 go func() { 20 close(c) 21 for { 22 C.nop() 23 } 24 }() 25 26 <-c 27 28 syscall.Tgkill(syscall.Getpid(), syscall.Gettid(), syscall.SIGSEGV) 29 30 // Wait for the OS to deliver the signal. 31 C.pause() 32} 33