]> Cypherpunks repositories - gostls13.git/commit
runtime: don't try to free OS-created signal stacks
authorAustin Clements <austin@google.com>
Wed, 11 Oct 2017 21:04:26 +0000 (17:04 -0400)
committerAustin Clements <austin@google.com>
Wed, 11 Oct 2017 22:17:30 +0000 (22:17 +0000)
commit44d9e96da9b7625be81f2c7eacf73fcc609874ce
tree2256e99a46d54e62a83e5bdd22a44f2dead62509
parenta3e013b0824ba53168b5d91abdb6ce191510a89d
runtime: don't try to free OS-created signal stacks

Android's libc creates a signal stack for every thread it creates. In
Go, minitSignalStack picks up this existing signal stack and puts it
in m.gsignal.stack. However, if we later try to exit a thread (because
a locked goroutine is exiting), we'll attempt to stackfree this
libc-allocated signal stack and panic.

Fix this by clearing gsignal.stack when we unminitSignals in such a
situation.

This should fix the Android build, which is currently broken.

Change-Id: Ieea8d72ef063d22741c54c9daddd8bb84926a488
Reviewed-on: https://go-review.googlesource.com/70130
Reviewed-by: David Crawshaw <crawshaw@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: David Crawshaw <crawshaw@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
src/runtime/proc.go
src/runtime/signal_unix.go