1
0
mirror of https://github.com/golang/go synced 2024-09-29 20:14:29 -06:00

runtime: avoid getg in preinit on Android

sigaction is called as part of library mode initializers
(_rt0_*_lib). Sigaction in turn calls getg, but on Android the TLS
offset for g has not been initialized and getg might return garbage.

Add a check for initialization before calling getg.

Fixes the golang.org/x/mobile/bind/java tests on amd64 and 386.

Fixes #31476

Change-Id: Id2c41fdc983239eca039b49a54b8853c5669d127
Reviewed-on: https://go-review.googlesource.com/c/go/+/172158
Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
Elias Naur 2019-04-16 08:52:42 +02:00
parent 460f9c6068
commit ae85ae5db2

View File

@ -39,7 +39,10 @@ func sigaction(sig uint32, new, old *sigactiont) {
var ret int32
g := getg()
var g *g
if mainStarted {
g = getg()
}
sp := uintptr(unsafe.Pointer(&sig))
switch {
case g == nil: