| Yeah, something sure looks busted. Wouldn't be surprised if some
ptrace signal path didn't get stomped on somewhere, but I'll
PeterT take a shot at it before I go to far.
My big plan is remove ptrace from the kernel and emulated it with
/proc! Wonder how that'll go over....
|
| Okay, now that I see the program, I have a better idea of what's going
wrong. Not that I have an explanation for it, but at least I see
the problem. Actually I see a few problems. First off, this program
should run fine under /proc. I spent a lot of time trying to ensure
that calls to things like system, which do their own fork, are
not trapped. But something seems to have broken down there. Even if
I set $stop_on_fork to 0, the process seems to get stuck and not
advance after it correctly finishes the system call. With -noproc
set, we seem to be hanging forever in __wait4, which is called
indirectly by system, apparently waiting for the shell to finish.
It looks like the process is not getting reaped correctly. Perhaps
dbx has a handle open to it still, and has not closed or reaped
it, so that system()'s wait on it can never finish.
I'd recommend filing a QAR on this, and Jeff and I can hash out
where the blame lies. I wouldn't be surprised if it's a kernel
change that dbx has not followed, as we are trying to avoid
doing much on dbx.
In the meantime, I'd strongly suggest you try ladebug, as this program
does not seem to bother it in any way. Ladebug will eventually
replace dbx, so it behooves you to familiarize yourself with it.
PeterT
|