Clone all levels of captures ExceptionDispatchInfos
authorMarek Safar <marek.safar@gmail.com>
Wed, 27 May 2015 15:12:03 +0000 (17:12 +0200)
committerMarek Safar <marek.safar@gmail.com>
Mon, 2 May 2016 22:10:21 +0000 (00:10 +0200)
mcs/class/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs

index b0e11af8e6f51b638bb5c97b433b2118757a5ffa..395ea0840977fda8e8ecbf7aa9960b91b28a713f 100644 (file)
@@ -43,7 +43,13 @@ namespace System.Runtime.ExceptionServices {
             // Copy over the details we need to save.
             m_Exception = exception;
 #if MONO
-                       m_stackTrace = new System.Diagnostics.StackTrace [1] { new System.Diagnostics.StackTrace (exception, 0, true, true) };
+                       var count = exception.captured_traces == null ? 0 : exception.captured_traces.Length;
+                       var stack_traces = new System.Diagnostics.StackTrace [count + 1];
+                       if (count != 0)
+                               Array.Copy (exception.captured_traces, 0, stack_traces, 0, count);
+
+                       stack_traces [count] = new System.Diagnostics.StackTrace (exception, 0, true, true);
+                       m_stackTrace = stack_traces;
 #else
             m_remoteStackTrace = exception.RemoteStackTrace;