From be3ae64121dba3d294be7519a1af093efec5ac85 Mon Sep 17 00:00:00 2001 From: vsadov <8218165+VSadov@users.noreply.github.com> Date: Fri, 10 Oct 2025 16:23:41 -0700 Subject: [PATCH 1/2] Use truncating sprintf to make resumption stub names --- src/coreclr/vm/jitinterface.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/coreclr/vm/jitinterface.cpp b/src/coreclr/vm/jitinterface.cpp index f0e6abfd342a03..4d8cad67c8d58b 100644 --- a/src/coreclr/vm/jitinterface.cpp +++ b/src/coreclr/vm/jitinterface.cpp @@ -14822,7 +14822,7 @@ CORINFO_METHOD_HANDLE CEEJitInfo::getAsyncResumptionStub() #endif // FEATURE_TIERED_COMPILATION char name[256]; - int numWritten = sprintf_s(name, ARRAY_SIZE(name), "IL_STUB_AsyncResume_%s_%s", m_pMethodBeingCompiled->GetName(), optimizationTierName); + int numWritten = _snprintf_s(name, ARRAY_SIZE(name), _TRUNCATE, "IL_STUB_AsyncResume_%s_%s", m_pMethodBeingCompiled->GetName(), optimizationTierName); if (numWritten != -1) { AllocMemTracker amTracker; From e1ce7c0055a4d83667ab34ae7570203fa97b1b53 Mon Sep 17 00:00:00 2001 From: vsadov <8218165+VSadov@users.noreply.github.com> Date: Tue, 14 Oct 2025 14:34:23 -0700 Subject: [PATCH 2/2] make sure the resumption stub's name fits instead of truncating. --- src/coreclr/vm/jitinterface.cpp | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/coreclr/vm/jitinterface.cpp b/src/coreclr/vm/jitinterface.cpp index 4d8cad67c8d58b..13056359ff6234 100644 --- a/src/coreclr/vm/jitinterface.cpp +++ b/src/coreclr/vm/jitinterface.cpp @@ -14821,19 +14821,20 @@ CORINFO_METHOD_HANDLE CEEJitInfo::getAsyncResumptionStub() } #endif // FEATURE_TIERED_COMPILATION - char name[256]; - int numWritten = _snprintf_s(name, ARRAY_SIZE(name), _TRUNCATE, "IL_STUB_AsyncResume_%s_%s", m_pMethodBeingCompiled->GetName(), optimizationTierName); - if (numWritten != -1) - { - AllocMemTracker amTracker; - void* allocedMem = amTracker.Track(m_pMethodBeingCompiled->GetLoaderAllocator()->GetLowFrequencyHeap()->AllocMem(S_SIZE_T(numWritten + 1))); - memcpy(allocedMem, name, (size_t)(numWritten + 1)); - result->AsDynamicMethodDesc()->SetMethodName((LPCUTF8)allocedMem); - amTracker.SuppressRelease(); - } - #ifdef _DEBUG - LOG((LF_STUBS, LL_INFO1000, "ASYNC: Resumption stub %s created\n", name)); + LPCUTF8 methodName = m_pMethodBeingCompiled->GetName(); + size_t stubNameLen = STRING_LENGTH("IL_STUB_AsyncResume__"); + stubNameLen += strlen(methodName); + stubNameLen += strlen(optimizationTierName); + stubNameLen++; // "\n" + + AllocMemTracker amTrackerName; + char* allocedMem = (char*)amTrackerName.Track(m_pMethodBeingCompiled->GetLoaderAllocator()->GetLowFrequencyHeap()->AllocMem(S_SIZE_T(stubNameLen))); + sprintf_s(allocedMem, stubNameLen, "IL_STUB_AsyncResume_%s_%s", m_pMethodBeingCompiled->GetName(), optimizationTierName); + result->AsDynamicMethodDesc()->SetMethodName((LPCUTF8)allocedMem); + amTrackerName.SuppressRelease(); + + LOG((LF_STUBS, LL_INFO1000, "ASYNC: Resumption stub %s created\n", allocedMem)); sl.LogILStub(CORJIT_FLAGS()); #endif