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