From 9945e82cb7300489689c646880bd441a79ad3b94 Mon Sep 17 00:00:00 2001 From: Ben Adams Date: Thu, 30 Nov 2017 15:17:03 +0000 Subject: [PATCH] Skip il that can't be interpreted --- src/Ben.Demystifier/Ben.Demystifier.csproj | 2 +- .../EnhancedStackTrace.Frames.cs | 33 +++++++++++-------- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/src/Ben.Demystifier/Ben.Demystifier.csproj b/src/Ben.Demystifier/Ben.Demystifier.csproj index 0ce62aa..78047e0 100644 --- a/src/Ben.Demystifier/Ben.Demystifier.csproj +++ b/src/Ben.Demystifier/Ben.Demystifier.csproj @@ -11,7 +11,7 @@ git true true - 0.0.5 + 0.0.6 diff --git a/src/Ben.Demystifier/EnhancedStackTrace.Frames.cs b/src/Ben.Demystifier/EnhancedStackTrace.Frames.cs index d37ae1c..7ba844f 100644 --- a/src/Ben.Demystifier/EnhancedStackTrace.Frames.cs +++ b/src/Ben.Demystifier/EnhancedStackTrace.Frames.cs @@ -335,27 +335,34 @@ namespace System.Diagnostics } } - var rawIL = methodBody?.GetILAsByteArray(); - if (rawIL == null) continue; - - var reader = new ILReader(rawIL); - while (reader.Read(candidateMethod)) + try { - if (reader.Operand is MethodBase mb) + var rawIL = methodBody?.GetILAsByteArray(); + if (rawIL == null) continue; + var reader = new ILReader(rawIL); + while (reader.Read(candidateMethod)) { - if (method == mb || (matchHint != null && method.Name.Contains(matchHint))) + if (reader.Operand is MethodBase mb) { - if (kind == GeneratedNameKind.LambdaMethod) + if (method == mb || (matchHint != null && method.Name.Contains(matchHint))) { - GetOrdinal(method, ref ordinal); - } + if (kind == GeneratedNameKind.LambdaMethod) + { + GetOrdinal(method, ref ordinal); + } - method = candidateMethod; - type = method.DeclaringType; - return true; + method = candidateMethod; + type = method.DeclaringType; + return true; + } } } } + catch + { + // https://github.com/benaadams/Ben.Demystifier/issues/32 + // Skip methods where il can't be interpreted + } } return false;