"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "mono/mini/debugger-agent.c" between
mono-6.8.0.96.tar.xz and mono-6.8.0.105.tar.xz

About:

debugger-agent.c  (mono-6.8.0.96.tar.xz):debugger-agent.c  (mono-6.8.0.105.tar.xz)
skipping to change at line 4898 skipping to change at line 4898
tls = (DebuggerTlsData *)mono_native_tls_get_value (debugger_tls_id); tls = (DebuggerTlsData *)mono_native_tls_get_value (debugger_tls_id);
/* Fastpath during invokes, see in process_suspend () */ /* Fastpath during invokes, see in process_suspend () */
if (tls && suspend_count && suspend_count - tls->resume_count == 0) if (tls && suspend_count && suspend_count - tls->resume_count == 0)
return; return;
if (is_debugger_thread ()) if (is_debugger_thread ())
return; return;
g_assert (tls); g_assert (tls);
tls->terminated = FALSE;
/* Have to save/restore the restore_ctx as we can be called recursively d uring invokes etc. */ /* Have to save/restore the restore_ctx as we can be called recursively d uring invokes etc. */
memcpy (&orig_restore_state, &tls->restore_state, sizeof (MonoThreadUnwin dState)); memcpy (&orig_restore_state, &tls->restore_state, sizeof (MonoThreadUnwin dState));
mono_thread_state_init_from_monoctx (&tls->restore_state, ctx); mono_thread_state_init_from_monoctx (&tls->restore_state, ctx);
memcpy (&tls->handler_ctx, ctx, sizeof (MonoContext)); memcpy (&tls->handler_ctx, ctx, sizeof (MonoContext));
mono_de_process_single_step (tls, FALSE); mono_de_process_single_step (tls, FALSE);
memcpy (ctx, &tls->restore_state.ctx, sizeof (MonoContext)); memcpy (ctx, &tls->restore_state.ctx, sizeof (MonoContext));
memcpy (&tls->restore_state, &orig_restore_state, sizeof (MonoThreadUnwin dState)); memcpy (&tls->restore_state, &orig_restore_state, sizeof (MonoThreadUnwin dState));
} }
skipping to change at line 4924 skipping to change at line 4926
guint8 *orig_ip; guint8 *orig_ip;
if (is_debugger_thread ()) if (is_debugger_thread ())
return; return;
orig_ip = (guint8 *)MONO_CONTEXT_GET_IP (ctx); orig_ip = (guint8 *)MONO_CONTEXT_GET_IP (ctx);
MONO_CONTEXT_SET_IP (ctx, orig_ip - 1); MONO_CONTEXT_SET_IP (ctx, orig_ip - 1);
tls = (DebuggerTlsData *)mono_native_tls_get_value (debugger_tls_id); tls = (DebuggerTlsData *)mono_native_tls_get_value (debugger_tls_id);
g_assert (tls); g_assert (tls);
//if a thread was suspended and doesn't have any managed stack, it was co
nsidered as terminated,
//but it wasn't really terminated because it can execute managed code aga
in, and stop in a breakpoint so here we set terminated as FALSE
tls->terminated = FALSE;
memcpy (&orig_restore_state, &tls->restore_state, sizeof (MonoThreadUnwin dState)); memcpy (&orig_restore_state, &tls->restore_state, sizeof (MonoThreadUnwin dState));
mono_thread_state_init_from_monoctx (&tls->restore_state, ctx); mono_thread_state_init_from_monoctx (&tls->restore_state, ctx);
memcpy (&tls->handler_ctx, ctx, sizeof (MonoContext)); memcpy (&tls->handler_ctx, ctx, sizeof (MonoContext));
mono_de_process_breakpoint (tls, FALSE); mono_de_process_breakpoint (tls, FALSE);
memcpy (ctx, &tls->restore_state.ctx, sizeof (MonoContext)); memcpy (ctx, &tls->restore_state.ctx, sizeof (MonoContext));
memcpy (&tls->restore_state, &orig_restore_state, sizeof (MonoThreadUnwin dState)); memcpy (&tls->restore_state, &orig_restore_state, sizeof (MonoThreadUnwin dState));
if (MONO_CONTEXT_GET_IP (ctx) == orig_ip - 1) if (MONO_CONTEXT_GET_IP (ctx) == orig_ip - 1)
MONO_CONTEXT_SET_IP (ctx, orig_ip); MONO_CONTEXT_SET_IP (ctx, orig_ip);
 End of changes. 2 change blocks. 
0 lines changed or deleted 9 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)