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

// The memory profiler can call copy from a slice on the system stack,
// which msan used to think meant a reference to uninitialized memory.

/*
#include <time.h>
#include <unistd.h>

extern void Nop(char*);

// Use weak as a hack to permit defining a function even though we use export.
void poison() __attribute__ ((weak));

// Poison the stack.
void poison() {
	char a[1024];
	Nop(&a[0]);
}

*/
import "C"

import (
	"runtime"
)

func main() {
	runtime.MemProfileRate = 1
	start(100)
}

func start(i int) {
	if i == 0 {
		return
	}
	C.poison()
	// Tie up a thread.
	// We won't actually wait for this sleep to complete.
	go func() { C.sleep(1) }()
	start(i - 1)
}

//export Nop
func Nop(*C.char) {
}
