// 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

// Test that SIGPROF received in C code does not crash the process
// looking for the C code's func pointer.

// The test fails when the function is the first C function.
// The exported functions are the first C functions, so we use that.

// extern void GoNop();
import "C"

import (
	"bytes"
	"fmt"
	"runtime/pprof"
	"time"
)

func init() {
	register("CgoCCodeSIGPROF", CgoCCodeSIGPROF)
}

//export GoNop
func GoNop() {}

func CgoCCodeSIGPROF() {
	c := make(chan bool)
	go func() {
		<-c
		start := time.Now()
		for i := 0; i < 1e7; i++ {
			if i%1000 == 0 {
				if time.Since(start) > time.Second {
					break
				}
			}
			C.GoNop()
		}
		c <- true
	}()

	var buf bytes.Buffer
	pprof.StartCPUProfile(&buf)
	c <- true
	<-c
	pprof.StopCPUProfile()

	fmt.Println("OK")
}
