From d4dc4dad35642825edd48e409108c5df7007ddfc Mon Sep 17 00:00:00 2001 From: Lee Culver Date: Sun, 15 Feb 2026 16:05:39 -0500 Subject: [PATCH 1/3] Add null check in LCGMethodResolver::GetManagedResolver to prevent SIGSEGV When running 'dumplog' on a crash dump containing dynamic/LCG methods with a null m_managedResolver handle, ObjectFromHandle(0) dereferences a null pointer. On Windows, SEH catches this; on Linux/lldb, it causes a SIGSEGV that crashes the debugger. Fixes dotnet/diagnostics#1837 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/coreclr/vm/dynamicmethod.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/coreclr/vm/dynamicmethod.cpp b/src/coreclr/vm/dynamicmethod.cpp index 06562580d22aa3..abd129116c33de 100644 --- a/src/coreclr/vm/dynamicmethod.cpp +++ b/src/coreclr/vm/dynamicmethod.cpp @@ -1555,6 +1555,8 @@ void LCGMethodResolver::GetEHInfo(unsigned EHnumber, CORINFO_EH_CLAUSE* clause) OBJECTREF LCGMethodResolver::GetManagedResolver() { LIMITED_METHOD_CONTRACT; + if (m_managedResolver == NULL) + return NULL; return ObjectFromHandle(m_managedResolver); } From 24a01a40520a44ac17a2bc2897edc60e375ff309 Mon Sep 17 00:00:00 2001 From: Lee Culver Date: Mon, 16 Feb 2026 05:08:31 -0500 Subject: [PATCH 2/3] Fix OBJECTHANDLE comparison with NULL in dynamicmethod.cpp --- src/coreclr/vm/dynamicmethod.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/coreclr/vm/dynamicmethod.cpp b/src/coreclr/vm/dynamicmethod.cpp index abd129116c33de..2cba4681f3f8a1 100644 --- a/src/coreclr/vm/dynamicmethod.cpp +++ b/src/coreclr/vm/dynamicmethod.cpp @@ -1555,7 +1555,7 @@ void LCGMethodResolver::GetEHInfo(unsigned EHnumber, CORINFO_EH_CLAUSE* clause) OBJECTREF LCGMethodResolver::GetManagedResolver() { LIMITED_METHOD_CONTRACT; - if (m_managedResolver == NULL) + if (m_managedResolver == (OBJECTHANDLE)NULL) return NULL; return ObjectFromHandle(m_managedResolver); } From 18701c6d772bdecfbfa6ce6b919aaec537e61dfe Mon Sep 17 00:00:00 2001 From: Lee Culver Date: Mon, 16 Feb 2026 10:13:53 -0500 Subject: [PATCH 3/3] Update src/coreclr/vm/dynamicmethod.cpp Co-authored-by: Jan Kotas --- src/coreclr/vm/dynamicmethod.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/coreclr/vm/dynamicmethod.cpp b/src/coreclr/vm/dynamicmethod.cpp index 2cba4681f3f8a1..0c22f6235a4e25 100644 --- a/src/coreclr/vm/dynamicmethod.cpp +++ b/src/coreclr/vm/dynamicmethod.cpp @@ -1555,8 +1555,10 @@ void LCGMethodResolver::GetEHInfo(unsigned EHnumber, CORINFO_EH_CLAUSE* clause) OBJECTREF LCGMethodResolver::GetManagedResolver() { LIMITED_METHOD_CONTRACT; +#ifdef DACCESS_COMPILE if (m_managedResolver == (OBJECTHANDLE)NULL) return NULL; +#endif // DACCESS_COMPILE return ObjectFromHandle(m_managedResolver); }