1// Copyright 2020 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
5//go:build unix
6
7package main
8
9// #include <unistd.h>
10// static void nop() {}
11import "C"
12
13import "syscall"
14
15func init() {
16	register("SegvInCgo", SegvInCgo)
17}
18
19func SegvInCgo() {
20	c := make(chan bool)
21	go func() {
22		close(c)
23		for {
24			C.nop()
25		}
26	}()
27
28	<-c
29
30	syscall.Kill(syscall.Getpid(), syscall.SIGSEGV)
31
32	// Wait for the OS to deliver the signal.
33	C.pause()
34}
35