Commits on Source 1

  • cznic's avatar
    libc_netbsd.go: make Xabort robust against async-delivery race and blocked SIGABRT · 81172447
    cznic authored
    
    
    The first Xabort fix used a process-directed kill(2), which delivers SIGABRT
    asynchronously; the calling thread could race ahead to the fallback panic and
    exit(2) before the signal landed — observed as a rare SQLite crash-test failure
    (writecrash-1.95.1) after ~94 crash iterations had already passed.
    
    Deliver SIGABRT synchronously and thread-directed via _lwp_kill(_lwp_self())
    (the primitive the Go runtime's raise() uses), after unblocking SIGABRT on the
    calling thread (__sigprocmask14 SIG_UNBLOCK) so a blocked mask cannot defeat it.
    The process-directed kill(2) and panic remain as unreachable fallbacks.
    
    Validated on NetBSD 10.1/amd64: 20/20 child aborts die by signal SIGABRT, both
    on the happy path and with SIGABRT pre-blocked on the calling thread.
    
    Co-Authored-By: default avatarClaude Opus 4.8 <noreply@anthropic.com>
    81172447
Loading
Loading