]> Cypherpunks repositories - gostls13.git/commit
runtime: fix panic stack during runtime.Goexit during panic
authorRuss Cox <rsc@golang.org>
Fri, 6 Jun 2014 20:52:14 +0000 (16:52 -0400)
committerRuss Cox <rsc@golang.org>
Fri, 6 Jun 2014 20:52:14 +0000 (16:52 -0400)
commit4534fdb14424b3805693c49d64e498adff6322b7
tree5bcfa4fbef922ddf1287fea57da5288fc2974fa3
parentac0e12d15800ac0e5795e823ab0e99c1eb70667b
runtime: fix panic stack during runtime.Goexit during panic

A runtime.Goexit during a panic-invoked deferred call
left the panic stack intact even though all the stack frames
are gone when the goroutine is torn down.
The next goroutine to reuse that struct will have a
bogus panic stack and can cause the traceback routines
to walk into garbage.

Most likely to happen during tests, because t.Fatal might
be called during a deferred func and uses runtime.Goexit.

This "not enough cleared in Goexit" failure mode has
happened to us multiple times now. Clear all the pointers
that don't make sense to keep, not just gp->panic.

Fixes #8158.

LGTM=iant, dvyukov
R=iant, dvyukov
CC=golang-codereviews
https://golang.org/cl/102220043
src/pkg/runtime/proc.c
test/fixedbugs/issue8158.go [new file with mode: 0644]