mono_dynamic_stream_reset
mono_domain_get_tls_offset
mono_domain_add_class_static_data
-mono_handle_native_sigsegv
+mono_handle_native_crash
mono_set_config_dir
mono_profiler_coverage_alloc
mono_profiler_coverage_free
}
#endif
- mono_handle_native_sigsegv ("SIGSEGV", NULL, NULL);
+ mono_handle_native_crash ("SIGSEGV", NULL, NULL);
return EXCEPTION_CONTINUE_SEARCH;
}
MonoJitInfo *ji = mini_jit_info_table_find (mono_domain_get (), MONO_CONTEXT_GET_IP (ctx), NULL);
if (!ji)
- mono_handle_native_sigsegv ("SIGSEGV", NULL, NULL);
+ mono_handle_native_crash ("SIGSEGV", NULL, NULL);
mctx = *ctx;
abort ();
}
if (!ji)
- mono_handle_native_sigsegv ("SIGSEGV", sigctx, siginfo);
+ mono_handle_native_crash ("SIGSEGV", sigctx, siginfo);
/* setup a call frame on the real stack so that control is returned there
* and exception handling can continue.
* The frame looks like:
}
#endif
- mono_handle_native_sigsegv ("SIGSEGV", NULL, NULL);
+ mono_handle_native_crash ("SIGSEGV", NULL, NULL);
return EXCEPTION_CONTINUE_SEARCH;
}
if (stack_ovf)
exc = mono_domain_get ()->stack_overflow_ex;
if (!ji)
- mono_handle_native_sigsegv ("SIGSEGV", sigctx, siginfo);
+ mono_handle_native_crash ("SIGSEGV", sigctx, siginfo);
/* setup a call frame on the real stack so that control is returned there
* and exception handling can continue.
* If this was a stack overflow the caller already ensured the stack pages
static gboolean handling_sigsegv = FALSE;
/*
- * mono_handle_native_sigsegv:
+ * mono_handle_native_crash:
*
- * Handle a SIGSEGV received while in native code by printing diagnostic
- * information and aborting.
+ * Handle a native crash (e.g. SIGSEGV) while in native code by
+ * printing diagnostic information and aborting.
*/
void
-mono_handle_native_sigsegv (const char *signal, void *ctx, MONO_SIG_HANDLER_INFO_TYPE *info)
+mono_handle_native_crash (const char *signal, void *ctx, MONO_SIG_HANDLER_INFO_TYPE *info)
{
#ifdef MONO_ARCH_USE_SIGACTION
struct sigaction sa;
return;
if (mini_get_debug_options ()->suspend_on_sigsegv) {
- mono_runtime_printf_err ("Received SIGSEGV, suspending...");
+ mono_runtime_printf_err ("Received %s, suspending...", signal);
#ifdef HOST_WIN32
while (1)
;
#else
void
-mono_handle_native_sigsegv (const char *signal, void *ctx, MONO_SIG_HANDLER_INFO_TYPE *info)
+mono_handle_native_crash (const char *signal, void *ctx, MONO_SIG_HANDLER_INFO_TYPE *info)
{
g_assert_not_reached ();
}
if (!ji) {
if (mono_chain_signal (MONO_SIG_HANDLER_PARAMS))
return;
- mono_handle_native_sigsegv ("SIGABRT", ctx, info);
+ mono_handle_native_crash ("SIGABRT", ctx, info);
}
}
if (!mono_do_crash_chaining && mono_chain_signal (MONO_SIG_HANDLER_PARAMS))
return;
- mono_handle_native_sigsegv ("SIGFPE", ctx, info);
+ mono_handle_native_crash ("SIGFPE", ctx, info);
if (mono_do_crash_chaining) {
mono_chain_signal (MONO_SIG_HANDLER_PARAMS);
return;
if (!mono_domain_get () || !jit_tls) {
if (!mono_do_crash_chaining && mono_chain_signal (MONO_SIG_HANDLER_PARAMS))
return;
- mono_handle_native_sigsegv ("SIGSEGV", ctx, info);
+ mono_handle_native_crash ("SIGSEGV", ctx, info);
if (mono_do_crash_chaining) {
mono_chain_signal (MONO_SIG_HANDLER_PARAMS);
return;
if (!mono_do_crash_chaining && mono_chain_signal (MONO_SIG_HANDLER_PARAMS))
return;
- mono_handle_native_sigsegv ("SIGSEGV", ctx, info);
+ mono_handle_native_crash ("SIGSEGV", ctx, info);
if (mono_do_crash_chaining) {
mono_chain_signal (MONO_SIG_HANDLER_PARAMS);
void mono_exceptions_init (void);
gboolean mono_handle_exception (MonoContext *ctx, MonoObject *obj);
-void mono_handle_native_sigsegv (const char *signal, void *sigctx, MONO_SIG_HANDLER_INFO_TYPE *siginfo);
+void mono_handle_native_crash (const char *signal, void *sigctx, MONO_SIG_HANDLER_INFO_TYPE *siginfo);
MONO_API void mono_print_thread_dump (void *sigctx);
MONO_API void mono_print_thread_dump_from_ctx (MonoContext *ctx);
void mono_walk_stack_with_ctx (MonoJitStackWalk func, MonoContext *start_ctx, MonoUnwindOptions unwind_options, void *user_data);