mirror of
https://github.com/golang/go
synced 2024-11-23 22:20:02 -07: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:
parent
460f9c6068
commit
ae85ae5db2
@ -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:
|
||||
|
Loading…
Reference in New Issue
Block a user