[DynInst_API:] Issues with mutatee signals


Date: Tue, 04 Jun 2013 17:38:07 -0700
From: Josh Stone <jistone@xxxxxxxxxx>
Subject: [DynInst_API:] Issues with mutatee signals
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
[← Prev in Thread] Current Thread [Next in Thread→]