• Russ Cox's avatar
    [release-branch.go1.3] runtime: fix panic stack during runtime.Goexit during panic · c70654f7
    Russ Cox authored
    ««« CL 102220043 / 00224712f89e
    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
    »»»
    
    LGTM=iant
    R=golang-codereviews, iant
    CC=golang-codereviews, r
    https://golang.org/cl/108780044
    c70654f7
proc.c 81.9 KB