From 0841c689531258dfe020130b3fb3fe9daf302b7f Mon Sep 17 00:00:00 2001 From: Jan Kotas Date: Mon, 4 Mar 2024 11:25:16 -0800 Subject: [PATCH] Fix GC stackwalking for generic calli Fixes #99253 --- src/coreclr/vm/eetwain.cpp | 4 ++-- src/coreclr/vm/frames.cpp | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/coreclr/vm/eetwain.cpp b/src/coreclr/vm/eetwain.cpp index 597fda3d45b5d3..5bfa40b14207d2 100644 --- a/src/coreclr/vm/eetwain.cpp +++ b/src/coreclr/vm/eetwain.cpp @@ -4406,10 +4406,10 @@ void promoteVarArgs(PTR_BYTE argsStart, PTR_VASigCookie varArgSig, GCCONTEXT* ct { WRAPPER_NO_CONTRACT; - //Note: no instantiations needed for varargs + SigTypeContext typeContext(varArgSig->classInst, varArgSig->methodInst); MetaSig msig(varArgSig->signature, varArgSig->pModule, - NULL); + &typeContext); PTR_BYTE pFrameBase = argsStart - TransitionBlock::GetOffsetOfArgs(); diff --git a/src/coreclr/vm/frames.cpp b/src/coreclr/vm/frames.cpp index a429ee4ad422b5..c78b4ea6c1fa76 100644 --- a/src/coreclr/vm/frames.cpp +++ b/src/coreclr/vm/frames.cpp @@ -1364,10 +1364,10 @@ void TransitionFrame::PromoteCallerStack(promote_func* fn, ScanContext* sc) { VASigCookie *varArgSig = GetVASigCookie(); - //Note: no instantiations needed for varargs + SigTypeContext typeContext(varArgSig->classInst, varArgSig->methodInst); MetaSig msig(varArgSig->signature, varArgSig->pModule, - NULL); + &typeContext); PromoteCallerStackHelper (fn, sc, pFunction, &msig); } } @@ -1498,10 +1498,10 @@ void TransitionFrame::PromoteCallerStackUsingGCRefMap(promote_func* fn, ScanCont { VASigCookie *varArgSig = dac_cast(*ppObj); - //Note: no instantiations needed for varargs + SigTypeContext typeContext(varArgSig->classInst, varArgSig->methodInst); MetaSig msig(varArgSig->signature, varArgSig->pModule, - NULL); + &typeContext); PromoteCallerStackHelper (fn, sc, NULL, &msig); } break; @@ -1525,10 +1525,10 @@ void PInvokeCalliFrame::PromoteCallerStack(promote_func* fn, ScanContext* sc) return; } - // no instantiations needed for varargs + SigTypeContext typeContext(varArgSig->classInst, varArgSig->methodInst); MetaSig msig(varArgSig->signature, varArgSig->pModule, - NULL); + &typeContext); PromoteCallerStackHelper(fn, sc, NULL, &msig); }