From e612d212c6836407b3274942a394b3c0d46f6e08 Mon Sep 17 00:00:00 2001 From: Austin Clements Date: Fri, 14 Oct 2022 14:19:14 -0400 Subject: [PATCH] misc/cgo/testasan: drop test The testasan test was added back in 2013 (CL 10126044), many years before Go added ASAN support in 2021 (CL 298611). So, in fact, testasan does not test Go ASAN support at all, as you might expect (misc/cgo/testsanitizers does that). It's intended to test whether the Go memory allocator works in a mixed C/Go binary where the C code is compiled with ASAN. The test doesn't actually use ASAN in any way; it just simulates where ASAN of 2013 put its shadow mappings. This made sense to test at the time because Go was picky about where its heap landed and ASAN happened to put its mappings exactly where Go wanted to put its heap. These days, Go is totally flexible about its heap placement, and I wouldn't be surprised if ASAN also works differently. Given all of this, this test adds almost no value today. Drop it. For #37486, since it eliminates a non-go-test from dist. Change-Id: I0292f8efbdc0e1e39650715604535c445fbaa87f Reviewed-on: https://go-review.googlesource.com/c/go/+/443067 Reviewed-by: Ian Lance Taylor Auto-Submit: Austin Clements Reviewed-by: Bryan Mills Run-TryBot: Austin Clements TryBot-Result: Gopher Robot --- misc/cgo/testasan/main.go | 56 --------------------------------------- src/cmd/dist/test.go | 3 --- 2 files changed, 59 deletions(-) delete mode 100644 misc/cgo/testasan/main.go diff --git a/misc/cgo/testasan/main.go b/misc/cgo/testasan/main.go deleted file mode 100644 index bc77678c25..0000000000 --- a/misc/cgo/testasan/main.go +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2013 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 - -/* -#include -#include -#include - -void ctor(void) __attribute__((constructor)); -static void* thread(void*); - -void -ctor(void) -{ - // occupy memory where Go runtime would normally map heap - mmap((void*)0x00c000000000, 64<<10, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, -1, 0); - - // allocate 4K every 10us - pthread_t t; - pthread_create(&t, 0, thread, 0); -} - -static void* -thread(void *p) -{ - for(;;) { - usleep(10000); - mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); - } - return 0; -} -*/ -import "C" - -import ( - "fmt" - "os" - "path/filepath" - "time" -) - -func main() { - start := time.Now() - - // ensure that we can function normally - var v [][]byte - for i := 0; i < 1000; i++ { - time.Sleep(10 * time.Microsecond) - v = append(v, make([]byte, 64<<10)) - } - - fmt.Printf("ok\t%s\t%s\n", filepath.Base(os.Args[0]), time.Since(start).Round(time.Millisecond)) -} diff --git a/src/cmd/dist/test.go b/src/cmd/dist/test.go index 5b8676c4c7..8f83aedd3e 100644 --- a/src/cmd/dist/test.go +++ b/src/cmd/dist/test.go @@ -823,9 +823,6 @@ func (t *tester) registerTests() { if t.supportedBuildmode("plugin") { t.registerTest("testplugin", "../misc/cgo/testplugin", t.goTest(), t.timeout(600), ".") } - if gohostos == "linux" && (goarch == "amd64" || goarch == "ppc64le") { - t.registerTest("testasan", "../misc/cgo/testasan", "go", "run", ".") - } if goos == "linux" || (goos == "freebsd" && goarch == "amd64") { // because Pdeathsig of syscall.SysProcAttr struct used in misc/cgo/testsanitizers is only // supported on Linux and FreeBSD. -- 2.44.0