Does this issue reproduce with the latest release?
What operating system and processor architecture are you using (go env)?
What did you do?
In the runtime, on platforms that uses VDSO, nanotime1 (and walltime1) is not reentrant. At entry it saves the current PC and SP to m.vdsoPC and m.vdsoSP, and clears m.vdsoSP at exit. If a signal lands in between, and nanotime1 is called in the signal handler (e.g. sigprof calling cpuProfile.add calling nanotime1), it will clear m.vdsoSP at exit. Now, if it receives another signal, it will observe m.vdsoSP is zero and assumed it is not in VDSO and so okay to unwind the stack, which is not true, and the stack unwinding code will crash. This could happen in the rare situation where two (or more) profiling signals land in one nanotime1 (or walltime1) execution.
The risk of that CL: if some register is accidentally clobbered, it will crash the runtime, and essentially any Go program won't run. Or all times will go completely off. Neither of them seems happening.
The text was updated successfully, but these errors were encountered: