Avoid crash when trying to attach to a terminating process.
diff --git a/server/debugger.c b/server/debugger.c index a0d7ac6..be81e66 100644 --- a/server/debugger.c +++ b/server/debugger.c
@@ -425,6 +425,7 @@ if (process->debugger) goto error; /* already being debugged */ if (process->init_event) goto error; /* still starting up */ + if (!process->thread_list) goto error; /* no thread running in the process */ /* make sure we don't create a debugging loop */ for (thread = debugger; thread; thread = thread->process->debugger) @@ -437,19 +438,18 @@ suspend_process( process ); /* we must have been able to attach all threads */ + if (!process->thread_list) goto error2; for (thread = process->thread_list; thread; thread = thread->proc_next) { - if (!thread->attached) - { - resume_process( process ); - goto error; - } + if (!thread->attached) goto error2; } if (set_process_debugger( process, debugger )) return 1; resume_process( process ); return 0; + error2: + resume_process( process ); error: set_error( STATUS_ACCESS_DENIED ); return 0;