Reset thread abort exception for internal threads regardless of unhandled exception...
authorJonathan Chambers <joncham@gmail.com>
Tue, 30 Aug 2016 15:32:53 +0000 (11:32 -0400)
committerJonathan Chambers <joncham@gmail.com>
Tue, 30 Aug 2016 15:32:53 +0000 (11:32 -0400)
mono/metadata/threads.c

index 6870f431e8b802c73647b150c39fdee3a1083416..43dd5a430bcc4082614c473c1cbe4cb2fe25338e 100644 (file)
@@ -5056,17 +5056,16 @@ mono_thread_internal_check_for_interruption_critical (MonoInternalThread *thread
 void
 mono_thread_internal_unhandled_exception (MonoObject* exc)
 {
-       if (mono_runtime_unhandled_exception_policy_get () == MONO_UNHANDLED_POLICY_CURRENT) {
-               MonoClass *klass = exc->vtable->klass;
-               if (is_threadabort_exception (klass)) {
-                       mono_thread_internal_reset_abort (mono_thread_internal_current ());
-               } else if (!is_appdomainunloaded_exception (klass)) {
-                       mono_unhandled_exception (exc);
-                       if (mono_environment_exitcode_get () == 1) {
-                               mono_environment_exitcode_set (255);
-                               mono_invoke_unhandled_exception_hook (exc);
-                               g_assert_not_reached ();
-                       }
+       MonoClass *klass = exc->vtable->klass;
+       if (is_threadabort_exception (klass)) {
+               mono_thread_internal_reset_abort (mono_thread_internal_current ());
+       } else if (!is_appdomainunloaded_exception (klass)
+               && mono_runtime_unhandled_exception_policy_get () == MONO_UNHANDLED_POLICY_CURRENT) {
+               mono_unhandled_exception (exc);
+               if (mono_environment_exitcode_get () == 1) {
+                       mono_environment_exitcode_set (255);
+                       mono_invoke_unhandled_exception_hook (exc);
+                       g_assert_not_reached ();
                }
        }
 }