• Austin Clements's avatar
    runtime: check more work flushing races · 438b9544
    Austin Clements authored
    This adds several new checks to help debug #27993. It adds a mechanism
    for freezing write barriers and gcWork puts during the mark completion
    algorithm. This way, if we do detect mark completion, we can catch any
    puts that happened during the completion algorithm. Based on build
    dashboard failures, this seems to be the window of time when these are
    happening.
    
    This also double-checks that all work buffers are empty immediately
    upon entering mark termination (much earlier than the current check).
    This is unlikely to trigger based on the current failures, but is a
    good safety net.
    
    Change-Id: I03f56c48c4322069e28c50fbc3c15b2fee2130c2
    Reviewed-on: https://go-review.googlesource.com/c/151797
    Run-TryBot: Austin Clements <austin@google.com>
    Reviewed-by: 's avatarMichael Knyszek <mknyszek@google.com>
    438b9544
mgcwork.go 13 KB