• Austin Clements's avatar
    runtime: prevent race between setNextBarrierPC and sigprof · a4a57bb4
    Austin Clements authored
    Currently, setNextBarrierPC manipulates the stack barriers without
    acquiring the stack barrier lock. This is mostly okay because
    setNextBarrierPC also runs synchronously on the G and prevents safe
    points, but this doesn't prevent a sigprof from occurring during a
    setNextBarrierPC and performing a traceback.
    
    Given that setNextBarrierPC simply sets one entry in the stack barrier
    array, this is almost certainly safe in reality. However, given that
    this depends on a subtle argument, which may not hold in the future,
    and that setNextBarrierPC almost never happens, making it nowhere near
    performance-critical, we can simply acquire the stack barrier lock and
    be sure that the synchronization will work.
    
    Updates #12528. For 1.5.3.
    
    Change-Id: Ife696e10d969f190157eb1cbe762a2de2ebce079
    Reviewed-on: https://go-review.googlesource.com/18022
    Run-TryBot: Austin Clements <austin@google.com>
    Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
    a4a57bb4
mstkbar.go 12 KB