summaryrefslogtreecommitdiff
path: root/src/vm/amd64
diff options
context:
space:
mode:
authorJohn Chen (CLR) <jochen@microsoft.com>2016-03-10 15:04:44 -0800
committerJohn Chen (CLR) <jochen@microsoft.com>2016-03-10 15:04:44 -0800
commit16cc69ad6efcc4496969ba097e1fed34ca5d1d11 (patch)
tree2720463147a17b893026ae06cb4f64a1ccf322cd /src/vm/amd64
parent6cdd7726e0616628616b2dcb0cf24baf35c7eee8 (diff)
downloadcoreclr-16cc69ad6efcc4496969ba097e1fed34ca5d1d11.tar.gz
coreclr-16cc69ad6efcc4496969ba097e1fed34ca5d1d11.tar.bz2
coreclr-16cc69ad6efcc4496969ba097e1fed34ca5d1d11.zip
Fix a GC hole in a Ready-to-Run helper
Assembly routines DelayLoad_Helper* were putting an argument at a wrong location on the stack. This resulted in a GC hole that caused random crashes, such as dotnet/cli#1785 and dotnet/roslyn#9632.
Diffstat (limited to 'src/vm/amd64')
-rw-r--r--src/vm/amd64/ExternalMethodFixupThunk.asm3
1 files changed, 1 insertions, 2 deletions
diff --git a/src/vm/amd64/ExternalMethodFixupThunk.asm b/src/vm/amd64/ExternalMethodFixupThunk.asm
index 4694956f50..6c43762fd9 100644
--- a/src/vm/amd64/ExternalMethodFixupThunk.asm
+++ b/src/vm/amd64/ExternalMethodFixupThunk.asm
@@ -60,8 +60,7 @@ NESTED_ENTRY DelayLoad_Helper&suffix, _TEXT
PROLOG_WITH_TRANSITION_BLOCK 8h, 10h, r8, r9
- mov rcx, frameFlags
- mov [rsp], rcx
+ mov qword ptr [rsp + SIZEOF_MAX_OUTGOING_ARGUMENT_HOMES], frameFlags
lea rcx, [rsp + __PWTB_TransitionBlock] ; pTransitionBlock
mov rdx, rax ; pIndirection