From 4f0fbd0cbb8606055b222300d68ecd2f44ee2ca4 Mon Sep 17 00:00:00 2001 From: Mike McLaughlin Date: Thu, 25 Aug 2016 09:47:52 -0700 Subject: [PATCH] Put back Open key signing on the SOS.NETCore assembly. (#6905) Fix failure in SOS if System.Reflection.Metadata is missing. --- src/ToolBox/SOS/NETCore/SOS.NETCore.csproj | 1 + src/ToolBox/SOS/NETCore/SymbolReader.cs | 33 ++++++++++++++++++------------ 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/src/ToolBox/SOS/NETCore/SOS.NETCore.csproj b/src/ToolBox/SOS/NETCore/SOS.NETCore.csproj index e8e2b7e..bd9d239 100644 --- a/src/ToolBox/SOS/NETCore/SOS.NETCore.csproj +++ b/src/ToolBox/SOS/NETCore/SOS.NETCore.csproj @@ -11,6 +11,7 @@ AnyCPU true true + true diff --git a/src/ToolBox/SOS/NETCore/SymbolReader.cs b/src/ToolBox/SOS/NETCore/SymbolReader.cs index c4c1dc8..bfd4c2b 100644 --- a/src/ToolBox/SOS/NETCore/SymbolReader.cs +++ b/src/ToolBox/SOS/NETCore/SymbolReader.cs @@ -144,22 +144,29 @@ namespace SOS internal static IntPtr LoadSymbolsForModule(string assemblyPath, bool isFileLayout, IntPtr loadedPeAddress, int loadedPeSize, IntPtr inMemoryPdbAddress, int inMemoryPdbSize, ReadMemoryDelegate readMemory) { - TargetStream peStream = null; - if (assemblyPath == null && loadedPeAddress != IntPtr.Zero) + try { - peStream = new TargetStream(loadedPeAddress, loadedPeSize, readMemory); + TargetStream peStream = null; + if (assemblyPath == null && loadedPeAddress != IntPtr.Zero) + { + peStream = new TargetStream(loadedPeAddress, loadedPeSize, readMemory); + } + TargetStream pdbStream = null; + if (inMemoryPdbAddress != IntPtr.Zero) + { + pdbStream = new TargetStream(inMemoryPdbAddress, inMemoryPdbSize, readMemory); + } + OpenedReader openedReader = GetReader(assemblyPath, isFileLayout, peStream, pdbStream); + if (openedReader != null) + { + GCHandle gch = GCHandle.Alloc(openedReader); + return GCHandle.ToIntPtr(gch); + } } - TargetStream pdbStream = null; - if (inMemoryPdbAddress != IntPtr.Zero) + catch { - pdbStream = new TargetStream(inMemoryPdbAddress, inMemoryPdbSize, readMemory); } - OpenedReader openedReader = GetReader(assemblyPath, isFileLayout, peStream, pdbStream); - if (openedReader == null) - return IntPtr.Zero; - - GCHandle gch = GCHandle.Alloc(openedReader); - return GCHandle.ToIntPtr(gch); + return IntPtr.Zero; } /// @@ -493,7 +500,7 @@ namespace SOS provider = MetadataReaderProvider.FromPortablePdbStream(pdbStream); result = new OpenedReader(provider, provider.GetMetadataReader()); } - catch (BadImageFormatException) + catch (Exception e) when (e is BadImageFormatException || e is IOException) { return null; } -- 2.7.4