• Russ Cox's avatar
    runtime: fix panic stack during runtime.Goexit during panic · 4534fdb1
    Russ Cox authored
    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
    4534fdb1
proc.c 81.9 KB