GET_CONTEXT;
- if (!thread || !domain)
+ if (!thread || !domain) {
/* The thread might not have started up yet */
/* FIXME: Specify the synchronization with start_wrapper () in threads.c */
+ mono_debugger_agent_thread_interrupt (ctx, NULL);
return;
+ }
+
+ if (thread->ignore_next_signal) {
+ thread->ignore_next_signal = FALSE;
+ return;
+ }
if (thread->thread_dump_requested) {
thread->thread_dump_requested = FALSE;
#endif
}
-gboolean
-mono_gdb_render_native_backtraces ()
+void
+mono_gdb_render_native_backtraces (pid_t crashed_pid)
{
const char *argv [9];
char buf1 [128];
argv [0] = g_find_program_in_path ("gdb");
if (argv [0] == NULL) {
- return FALSE;
+ return;
}
argv [1] = "-ex";
- sprintf (buf1, "attach %ld", (long)getpid ());
+ sprintf (buf1, "attach %ld", (long) crashed_pid);
argv [2] = buf1;
argv [3] = "--ex";
argv [4] = "info threads";
argv [8] = 0;
execv (argv [0], (char**)argv);
-
- return TRUE;
}
#endif
#endif /* __native_client__ */