diff options
author | John Chen (CLR) <jochen@microsoft.com> | 2016-03-10 15:04:44 -0800 |
---|---|---|
committer | John Chen (CLR) <jochen@microsoft.com> | 2016-03-10 15:04:44 -0800 |
commit | 16cc69ad6efcc4496969ba097e1fed34ca5d1d11 (patch) | |
tree | 2720463147a17b893026ae06cb4f64a1ccf322cd /src/vm/amd64 | |
parent | 6cdd7726e0616628616b2dcb0cf24baf35c7eee8 (diff) | |
download | coreclr-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.asm | 3 |
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 |