• Dmitriy Vyukov's avatar
    runtime: fix yet another race in bgsweep · f8c35087
    Dmitriy Vyukov authored
    Currently it's possible that bgsweep finishes before all spans
    have been swept (we only know that sweeping of all spans has *started*).
    In such case bgsweep may fail wake up runfinq goroutine when it needs to.
    finq may still be nil at this point, but some finalizers may be queued later.
    Make bgsweep to wait for sweeping to *complete*, then it can decide
    whether it needs to wake up runfinq for sure.
    Update #7533
    
    LGTM=rsc
    R=rsc
    CC=golang-codereviews
    https://golang.org/cl/75960043
    f8c35087
mgc0.c 72.5 KB