From 1ae171f38d29afa18d0ed5e127ac8bf24f94a975 Mon Sep 17 00:00:00 2001 From: Mike McLaughlin Date: Tue, 27 Jul 2021 14:05:33 -0700 Subject: [PATCH] Fix createdump segfault writing crash report json --- src/coreclr/debug/createdump/crashinfo.cpp | 3 ++- src/coreclr/debug/createdump/crashreportwriter.cpp | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/coreclr/debug/createdump/crashinfo.cpp b/src/coreclr/debug/createdump/crashinfo.cpp index 151a11d68a75d..8ab327eb15578 100644 --- a/src/coreclr/debug/createdump/crashinfo.cpp +++ b/src/coreclr/debug/createdump/crashinfo.cpp @@ -16,7 +16,8 @@ CrashInfo::CrashInfo(pid_t pid, bool gatherFrames, pid_t crashThread, uint32_t s m_gatherFrames(gatherFrames), m_crashThread(crashThread), m_signal(signal), - m_moduleInfos(&ModuleInfoCompare) + m_moduleInfos(&ModuleInfoCompare), + m_mainModule(nullptr) { g_crashInfo = this; #ifdef __APPLE__ diff --git a/src/coreclr/debug/createdump/crashreportwriter.cpp b/src/coreclr/debug/createdump/crashreportwriter.cpp index 40d8dbdba767a..23dd7c28d6ea9 100644 --- a/src/coreclr/debug/createdump/crashreportwriter.cpp +++ b/src/coreclr/debug/createdump/crashreportwriter.cpp @@ -72,12 +72,12 @@ CrashReportWriter::WriteCrashReport() WriteValue("version", version.c_str()); CloseObject(); // configuration - // The main module was saved away in the crash info - if (m_crashInfo.MainModule()->BaseAddress() != 0) + // The main module (if one) was saved away in the crash info + const ModuleInfo* mainModule = m_crashInfo.MainModule(); + if (mainModule != nullptr && mainModule->BaseAddress() != 0) { - WriteValue("process_name", GetFileName(m_crashInfo.MainModule()->ModuleName()).c_str()); + WriteValue("process_name", GetFileName(mainModule->ModuleName()).c_str()); } - const char* exceptionType = nullptr; OpenArray("threads"); for (const ThreadInfo* thread : m_crashInfo.Threads())