Commit f59f9b85 authored by Dmitry Vyukov's avatar Dmitry Vyukov

runtime: fix stack corruption in race mode

MOVQ RARG0, 0(SP) smashes exactly what was saved by PUSHQ R15.
This code managed to work somehow with the current race runtime,
but corrupts caller arguments with new race runtime that I am testing.

Change-Id: I9ffe8b5eee86451db36e99dbf4d11f320192e576
Reviewed-on: https://go-review.googlesource.com/4810Reviewed-by: default avatarKeith Randall <khr@golang.org>
parent 6731063e
...@@ -383,8 +383,9 @@ TEXT runtime·racesymbolizethunk(SB), NOSPLIT, $56-8 ...@@ -383,8 +383,9 @@ TEXT runtime·racesymbolizethunk(SB), NOSPLIT, $56-8
MOVQ g_m(R13), R13 MOVQ g_m(R13), R13
MOVQ m_g0(R13), R14 MOVQ m_g0(R13), R14
MOVQ R14, g(R12) // g = m->g0 MOVQ R14, g(R12) // g = m->g0
MOVQ RARG0, 0(SP) // func arg PUSHQ RARG0 // func arg
CALL runtime·racesymbolize(SB) CALL runtime·racesymbolize(SB)
POPQ R12
// All registers are smashed after Go code, reload. // All registers are smashed after Go code, reload.
get_tls(R12) get_tls(R12)
MOVQ g(R12), R13 MOVQ g(R12), R13
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment