Module: wine Branch: refs/heads/master Commit: 5cc97c4e0bd04925deda6553f9e159302a7590ba URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=5cc97c4e0bd04925deda6553...
Author: Alexandre Julliard julliard@winehq.org Date: Mon Apr 10 20:21:46 2006 +0200
server: Always detach from the thread when we are done with ptrace.
---
server/ptrace.c | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/server/ptrace.c b/server/ptrace.c index 4280b1c..51101d3 100644 --- a/server/ptrace.c +++ b/server/ptrace.c @@ -274,8 +274,12 @@ void resume_after_ptrace( struct thread { if (thread->unix_pid == -1) return; assert( thread->attached ); - ptrace( get_thread_single_step(thread) ? PTRACE_SINGLESTEP : PTRACE_CONT, - get_ptrace_pid(thread), (caddr_t)1, 0 /* cancel the SIGSTOP */ ); + if (ptrace( PTRACE_DETACH, get_ptrace_pid(thread), (caddr_t)1, 0 ) == -1) + { + if (errno == ESRCH) thread->unix_pid = thread->unix_tid = -1; /* thread got killed */ + } + if (debug_level) fprintf( stderr, "%04x: *detached*\n", thread->id ); + thread->attached = 0; }
/* read an int from a thread address space */