--- a/gdb/infcall.c +++ b/gdb/infcall.c @@ -385,6 +385,7 @@ run_inferior_call (struct thread_info *c { volatile struct gdb_exception e; int saved_in_infcall = call_thread->control.in_infcall; + int saved_state = call_thread->state; ptid_t call_thread_ptid = call_thread->ptid; call_thread->control.in_infcall = 1; @@ -428,7 +429,10 @@ run_inferior_call (struct thread_info *c } if (call_thread != NULL) - call_thread->control.in_infcall = saved_in_infcall; + { + call_thread->control.in_infcall = saved_in_infcall; + call_thread->state = saved_state; + } return e; }