Open GoogleCodeExporter opened 9 years ago
I am not able to edit my post.
I am using breakpad on x86-64.
Original comment by issac.xw...@gmail.com
on 22 Apr 2013 at 1:26
[deleted comment]
[deleted comment]
[deleted comment]
[deleted comment]
here is a simple discription of what happened:
let us use "pc" to denote the crashed process.
and in ExceptionHandler, a child process is cloned from "pc".
let us denote this child process as "pc2".
then pc2 trys to suspend all threads of "pc" by calling SuspendThread() on each
thread of the pc.
SuspendThread() actually calls sys_ptrace() to stop the target thread.
and then pc2 will wait for the target thread to stop by calling sys_waitpid()
In normal case, sys_waitpid() should return as expected, since sys_trace() will
guarantee that the target will be stopped.
but in my case , It seems that the target thread somehow does not actually stop.
so pc2 waits forever.
but the process status from command "ps -ux" shows that the target thread is
actully being traced, which means target thread is actually stopped, but
somehow the tracer is not aware of that??
how could a process get traced while the tracer fails on wait() ???
Original comment by issac.xw...@gmail.com
on 27 Apr 2013 at 10:10
[deleted comment]
[deleted comment]
I figured it out myself.
somebody has installed signal handler for signal SIGCHLD.
that is why sys_waitpid() blocking there.
I have a patch.
please see attached.
Original comment by issac.xw...@gmail.com
on 30 Apr 2013 at 5:36
Attachments:
Original issue reported on code.google.com by
issac.xw...@gmail.com
on 22 Apr 2013 at 1:17