diff options
author | Brian Robbins <brianrob@microsoft.com> | 2019-10-15 11:23:19 -0700 |
---|---|---|
committer | Stephen Toub <stoub@microsoft.com> | 2019-10-20 22:45:03 -0400 |
commit | a31b0b170f7cbcf3d669a2d03ea951e95ca290ea (patch) | |
tree | 03c68799301006fd7a2d6b1ac1ed4c24a3b9b647 /src | |
parent | 525f52122ad3919b6fb5df528533cc1039603d48 (diff) | |
download | coreclr-a31b0b170f7cbcf3d669a2d03ea951e95ca290ea.tar.gz coreclr-a31b0b170f7cbcf3d669a2d03ea951e95ca290ea.tar.bz2 coreclr-a31b0b170f7cbcf3d669a2d03ea951e95ca290ea.zip |
Fix Segfault in PerfInfo Image Logging (#26910)
Diffstat (limited to 'src')
-rw-r--r-- | src/vm/perfinfo.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/vm/perfinfo.cpp b/src/vm/perfinfo.cpp index 7075137010..3667503bbf 100644 --- a/src/vm/perfinfo.cpp +++ b/src/vm/perfinfo.cpp @@ -41,8 +41,21 @@ void PerfInfo::LogImage(PEFile* pFile, WCHAR* guid) SString value; const SString& path = pFile->GetPath(); - PEImageLayout *pLoadedLayout = pFile->GetLoaded(); - SIZE_T baseAddr = (SIZE_T)pLoadedLayout->GetBase(); + if (path.IsEmpty()) + { + return; + } + + SIZE_T baseAddr = 0; + if (pFile->IsILImageReadyToRun()) + { + PEImageLayout *pLoadedLayout = pFile->GetLoaded(); + if (pLoadedLayout) + { + baseAddr = (SIZE_T)pLoadedLayout->GetBase(); + } + } + value.Printf("%S%c%S%c%p", path.GetUnicode(), sDelimiter, guid, sDelimiter, baseAddr); SString command; |