commit | 2bcbe6a4b6bc74ad9a1de159058e452c4d9d92cb | [log] [tgz] |
---|---|---|
author | Cherry Zhang <cherryyz@google.com> | Tue Jul 16 11:33:10 2019 -0400 |
committer | Cherry Zhang <cherryyz@google.com> | Tue Jul 16 20:53:01 2019 +0000 |
tree | e708ec02fe5fabd57792dc51aed8c423090e3a88 | |
parent | 6bf2767cc87f9f6a1b85cdc18c656fade735f27f [diff] |
runtime: add a test for getg with thread switch With gccgo, if we generate getg inlined, the backend may cache the address of the TLS variable, which will become invalid after a thread switch. Currently there is no known bug for this. But if we didn't implement this carefully, we may get subtle bugs. This CL adds a test that will fail loudly if this is wrong. (See also https://go.googlesource.com/gofrontend/+/refs/heads/master/libgo/runtime/proc.c#333 and an incorrect attempt CL 185337.) Note: at least on Linux/AMD64, even with an incorrect implementation, this only fails if the test is compiled with -fPIC, which is not the default setting for gccgo test suite. So some manual work is needed. Maybe we could extend the test suite to run the runtime test with more settings (e.g. PIC and static). Change-Id: I459a3b4c31f09b9785c0eca19b7756f80e8ef54c Reviewed-on: https://go-review.googlesource.com/c/go/+/186357 Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Than McIntosh <thanm@google.com> Reviewed-by: Ian Lance Taylor <iant@golang.org>
Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.
Gopher image by Renee French, licensed under Creative Commons 3.0 Attributions license.
Our canonical Git repository is located at https://go.googlesource.com/go. There is a mirror of the repository at https://github.com/golang/go.
Unless otherwise noted, the Go source files are distributed under the BSD-style license found in the LICENSE file.
Official binary distributions are available at https://golang.org/dl/.
After downloading a binary release, visit https://golang.org/doc/install or load doc/install.html in your web browser for installation instructions.
If a binary distribution is not available for your combination of operating system and architecture, visit https://golang.org/doc/install/source or load doc/install-source.html in your web browser for source installation instructions.
Go is the work of thousands of contributors. We appreciate your help!
To contribute, please read the contribution guidelines: https://golang.org/doc/contribute.html
Note that the Go project uses the issue tracker for bug reports and proposals only. See https://golang.org/wiki/Questions for a list of places to ask questions about the Go language.