This is the mail archive of the
mailing list for the GDB project.
Re: process attaching gdb to itself
works on BSD but fails on GNU/Linux. When doing an attach, BSD always
generates something for wait4 to consume. GNU/Linux does not, leaving
GDB stuck in wait4 :-(
Yes, I've known about this problem for a long time. We've [I, Roland,
This explains something.
a couple of other people I can't recall] talked about changing it and
decided that, really, the current behavior makes more sense.
Not to me.
GDB sends a message to the kernel asking for the process to stop. The
kernel sends a message back indicating that the request has completed.
It's not at all hard to make GDB work in the current system anyway.
Just have to do it. It goes something like:
- wait4 WNOHANG, break if succeeds (optimistic, not necessary)
- check in /proc to make sure the process is in a stopped state
- If it was:
- wait4 WNOHANG
- If we get a status, then the process was running when we attached
- If no status is available then the process was stopped when
- If it wasn't:
- The process was running when we attached and hasn't stopped yet
- wait4 without WNOHANG
I feel ill. What happens, for instance, if /proc isn't there?