• David Crawshaw's avatar
    runtime/cgo: catch EXC_BAD_ACCESS on darwin/arm · 1b49a86e
    David Crawshaw authored
    The Go builders (and standard development cycle) for programs on iOS
    require running the programs under lldb. Unfortunately lldb intercepts
    SIGSEGV and will not give it back.
    
    https://llvm.org/bugs/show_bug.cgi?id=22868
    
    We get around this by never letting lldb see the SIGSEGV. On darwin,
    Unix signals are emulated on top of mach exceptions. The debugger
    registers a task-level mach exception handler. We register a
    thread-level exception handler which acts as a faux signal handler.
    The thread-level handler gets precedence over the task-level handler,
    so we can turn the exception EXC_BAD_ACCESS into a panic before lldb
    can see it.
    
    Fixes #10043
    
    Change-Id: I64d7c310dfa7ecf60eb1e59f094966520d473335
    Reviewed-on: https://go-review.googlesource.com/7072Reviewed-by: 's avatarMinux Ma <minux@golang.org>
    Run-TryBot: David Crawshaw <crawshaw@golang.org>
    1b49a86e
sigpanic_unix.go 1.32 KB