Mercurial > hg > CbC > CbC_gcc
view libgo/misc/cgo/testsanitizers/testdata/msan4.go @ 158:494b0b89df80 default tip
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 25 May 2020 18:13:55 +0900 |
parents | 1830386684a0 |
children |
line wrap: on
line source
// 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) { }