// Copyright 2015 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 import "C" import ( "fmt" "os" "runtime" ) // RunGoroutines starts some goroutines that don't do anything. // The idea is to get some threads going, so that a signal will be delivered // to a thread started by Go. //export RunGoroutines func RunGoroutines() { for i := 0; i < 4; i++ { go func() { runtime.LockOSThread() select {} }() } } var P *byte // TestSEGV makes sure that an invalid address turns into a run-time Go panic. //export TestSEGV func TestSEGV() { defer func() { if recover() == nil { fmt.Fprintln(os.Stderr, "no panic from segv") os.Exit(1) } }() *P = 0 fmt.Fprintln(os.Stderr, "continued after segv") os.Exit(1) } func main() { }