Skip to content
Snippets Groups Projects
  • Cherry Zhang's avatar
    a93a4c17
    runtime: make nanotime1 reentrant · a93a4c17
    Cherry Zhang authored
    Currently, nanotime1 (and walltime1) is not reentrant, in that it
    sets m.vdsoSP at entry and clears it at exit. If a signal lands
    in between, and nanotime1 is called from the signal handler, it
    will clear m.vdsoSP while we are still in nanotime1. If (in the
    unlikely event) it is signaled again, m.vdsoSP will be wrong,
    which may cause the stack unwinding code to crash.
    
    This CL makes it reentrant, by saving/restoring the previous
    vdsoPC and vdsoSP, instead of setting it to 0 at exit.
    
    TODO: have some way to test?
    
    Change-Id: I9ee53b251f1d8a5a489c71d4b4c0df1dee70c3e5
    Reviewed-on: https://go-review.googlesource.com/c/go/+/246763
    
    
    Run-TryBot: Cherry Zhang <cherryyz@google.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
    a93a4c17
    History
    runtime: make nanotime1 reentrant
    Cherry Zhang authored
    Currently, nanotime1 (and walltime1) is not reentrant, in that it
    sets m.vdsoSP at entry and clears it at exit. If a signal lands
    in between, and nanotime1 is called from the signal handler, it
    will clear m.vdsoSP while we are still in nanotime1. If (in the
    unlikely event) it is signaled again, m.vdsoSP will be wrong,
    which may cause the stack unwinding code to crash.
    
    This CL makes it reentrant, by saving/restoring the previous
    vdsoPC and vdsoSP, instead of setting it to 0 at exit.
    
    TODO: have some way to test?
    
    Change-Id: I9ee53b251f1d8a5a489c71d4b4c0df1dee70c3e5
    Reviewed-on: https://go-review.googlesource.com/c/go/+/246763
    
    
    Run-TryBot: Cherry Zhang <cherryyz@google.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
Code owners
Assign users and groups as approvers for specific file changes. Learn more.