74f0f69 [release-branch.go1.12] runtime: scan gp._panic in stack scan

6 files Authored by Cherry Zhang 5 years ago, Committed by Brad Fitzpatrick 5 years ago,
    [release-branch.go1.12] runtime: scan gp._panic in stack scan
    
    In runtime.gopanic, the _panic object p is stack allocated and
    referenced from gp._panic. With stack objects, p on stack is dead
    at the point preprintpanics runs. gp._panic points to p, but
    stack scan doesn't look at gp. Heap scan of gp does look at
    gp._panic, but it stops and ignores the pointer as it points to
    the stack. So whatever p points to may be collected and clobbered.
    We need to scan gp._panic explicitly during stack scan.
    
    To test it reliably, we introduce a GODEBUG mode "clobberfree",
    which clobbers the memory content when the GC frees an object.
    
    Fixes #30150.
    
    Change-Id: I11128298f03a89f817faa221421a9d332b41dced
    Reviewed-on: https://go-review.googlesource.com/c/161778
    Run-TryBot: Cherry Zhang <cherryyz@google.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: Keith Randall <khr@golang.org>
    Reviewed-by: Austin Clements <austin@google.com>
    (cherry picked from commit af8f4062c24cb36af4dc24fbaffd23aa7f7bde36)
    Reviewed-on: https://go-review.googlesource.com/c/162358
    Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
    Reviewed-by: Cherry Zhang <cherryyz@google.com>
    
        
file modified
+12 -0
file modified
+4 -0
file modified
+6 -0
file modified
+13 -1
file modified
+2 -0