• Dan Scales's avatar
    runtime: force segv for nil defer function to be in deferreturn() · 22d28a24
    Dan Scales authored
    If the defer function pointer is nil, force the seg fault to happen in deferreturn
    rather than in jmpdefer. jmpdefer is used fairly infrequently now because most
    functions have open-coded defers.
    
    The open-coded defer implementation calls gentraceback() with a callback when
    looking for the first open-coded defer frame. gentraceback() throws an error if it
    is called with a callback on an LR architecture and jmpdefer is on the stack,
    because the stack trace can be incorrect in that case - see issue #8153. So, we
    want to make sure that we don't have a seg fault in jmpdefer.
    
    Fixes #36050
    
    Change-Id: Ie25e6f015d8eb170b40248dedeb26a37b7f9b38d
    Reviewed-on: https://go-review.googlesource.com/c/go/+/210978Reviewed-by: default avatarKeith Randall <khr@golang.org>
    Run-TryBot: Dan Scales <danscales@google.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    22d28a24
panic.go 41.9 KB