+++ /dev/null
-// 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) {
-}