Hi,
I'm trying to clean up the way our stapdyn mutator deals with signals in
the mutatee, and I've run into a couple weird issues.
First, sometimes BPatch_process::isTerminated() returns true, but then
BPatch_process::terminationStatus() returns NoExit. I can reproduce
this easily by sending SIGTERM from a shell to the mutatee, then my
mutator sees the terminated/NoExit state. Of course in this case, I
expect ExitedViaSignal. Is there synchronization or something I should
do to get that proper exit status?
Second, mutatee SIGINTs are getting squashed altogether. I discovered
this is because unix.C PCEventHandler::shouldStopForSignal() is
apparently treating SIGINT the same as SIGSTOP. This sets
shouldForwardSignal=false in PCEventHandler::handleSignal(), so it
doesn't get delivered. This was added in a huge commit, 785d4029, which
doesn't help me figure out why SIGINT should be treated this way.
I'd appreciate any input on these two issues.
Thanks,
Josh
|