Fix small buglets
authorRodrigo Kumpera <kumpera@gmail.com>
Thu, 28 Apr 2011 20:39:19 +0000 (17:39 -0300)
committerRodrigo Kumpera <kumpera@gmail.com>
Thu, 28 Apr 2011 20:49:35 +0000 (17:49 -0300)
mono/mini/mini-darwin.c
mono/mini/mini-exceptions.c

index e83b572f3bf2e46c3fe9194ea27e20934aab66ff..8e6f93f3befaf60937dffb997fc48d68c413f643 100644 (file)
@@ -280,7 +280,10 @@ mono_thread_state_init_from_handle (MonoThreadUnwindState *tctx, MonoNativeThrea
        jit_key = mono_pthread_key_for_tls (mono_get_jit_tls_key ());
        jit_tls = mono_mach_arch_get_tls_value_from_thread (thread_id, jit_key);
        domain = mono_mach_arch_get_tls_value_from_thread (thread_id, domain_key);
-       g_assert (jit_tls);
+
+       /*Thread already started to cleanup, can no longer capture unwind state*/
+       if (!jit_tls)
+               return FALSE;
        g_assert (domain);
 
        tctx->unwind_data [MONO_UNWIND_DATA_DOMAIN] = domain;
index b876d2f5e7120ca69bcb868204bcef4dcaf66655..09d7d21ab1b4dda79bd16f2ac8e7382dcfd4f5c9 100644 (file)
@@ -2520,7 +2520,11 @@ mono_thread_state_init_from_sigctx (MonoThreadUnwindState *ctx, void *sigctx)
                return FALSE;
        }
 
-       mono_arch_sigctx_to_monoctx (sigctx, &ctx->ctx);
+       if (sigctx)
+               mono_arch_sigctx_to_monoctx (sigctx, &ctx->ctx);
+       else
+               MONO_CONTEXT_GET_CURRENT (ctx->ctx);
+
        ctx->unwind_data [MONO_UNWIND_DATA_DOMAIN] = mono_domain_get ();
        ctx->unwind_data [MONO_UNWIND_DATA_LMF] = mono_get_lmf ();
        ctx->unwind_data [MONO_UNWIND_DATA_JIT_TLS] = thread->jit_data;