[8/9] fbsd-nat: Fix thread_alive against a running thread.
Commit Message
FreeBSD's ptrace fails requests with EBUSY against a running process.
Report that the thread is alive instead of dead if ptrace fails with
EBUSY.
This fixes an internal error in the gdb.threads/detach-step-over.exp
test where one process was detached while a thread in a second process
was being stepped. The core incorrectly assumed the stepping thread
had vanished and discarded the pending stepping state. When the
thread later reported a SIGTRAP from completing the step, this
triggered an assertion.
---
gdb/fbsd-nat.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
@@ -861,7 +861,13 @@ fbsd_nat_target::thread_alive (ptid_t ptid)
if (ptrace (PT_LWPINFO, ptid.lwp (), (caddr_t) &pl, sizeof pl)
== -1)
- return false;
+ {
+ /* EBUSY means the associated process is running which means
+ the LWP does exist and belongs to a running process. */
+ if (errno == EBUSY)
+ return true;
+ return false;
+ }
#ifdef PL_FLAG_EXITED
if (pl.pl_flags & PL_FLAG_EXITED)
return false;