From d7d681c31ac64318025408152f417d24ad2edfa2 Mon Sep 17 00:00:00 2001 From: Rodrigo Kumpera Date: Thu, 28 Apr 2011 17:39:19 -0300 Subject: [PATCH] Fix small buglets --- mono/mini/mini-darwin.c | 5 ++++- mono/mini/mini-exceptions.c | 6 +++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/mono/mini/mini-darwin.c b/mono/mini/mini-darwin.c index e83b572f3bf..8e6f93f3bef 100644 --- a/mono/mini/mini-darwin.c +++ b/mono/mini/mini-darwin.c @@ -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; diff --git a/mono/mini/mini-exceptions.c b/mono/mini/mini-exceptions.c index b876d2f5e71..09d7d21ab1b 100644 --- a/mono/mini/mini-exceptions.c +++ b/mono/mini/mini-exceptions.c @@ -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; -- 2.25.1