]> Cypherpunks repositories - gostls13.git/commit
runtime: add a test for getg with thread switch
authorCherry Zhang <cherryyz@google.com>
Tue, 16 Jul 2019 15:33:10 +0000 (11:33 -0400)
committerCherry Zhang <cherryyz@google.com>
Tue, 16 Jul 2019 20:53:01 +0000 (20:53 +0000)
commit2bcbe6a4b6bc74ad9a1de159058e452c4d9d92cb
treee708ec02fe5fabd57792dc51aed8c423090e3a88
parent6bf2767cc87f9f6a1b85cdc18c656fade735f27f
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>
src/runtime/export_test.go
src/runtime/proc_test.go