• Rick Hudson's avatar
    runtime: reset gcscanvalid and gcworkdone when GODEBUG=gctrace=2 · e31e35a0
    Rick Hudson authored
    When GODEBUG=gctrace=2 two gcs are preformed. During the first gc
    the stack scan sets the g's gcscanvalid and gcworkdone flags to true
    indicating that the stacks have to be scanned and do not need to
    be rescanned. These need to be reset to false for the second GC so the
    stacks are rescanned, otherwise if the only pointer to an object is
    on the stack it will not be discovered and the object will be freed.
    Typically this will include the object that was just allocated in
    the mallocgc call that initiated the GC.
    
    Change-Id: Ic25163f4689905fd810c90abfca777324005c02f
    Reviewed-on: https://go-review.googlesource.com/5861Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
    e31e35a0
mgc.go 25.3 KB