On Mon, 11 Feb 2013, David Smith wrote:
On 02/11/2013 01:11 PM, Matthew LeGendre wrote:
I've got an educated guess as to what's happening. It has to do with
the assumptions Dyninst 8.0 makes about when/whether OneTimeCodes can be
interrupted by other events.
If you turn on the environment variable DYNINST_DEBUG_PROCCONTROL and
re-run it'll produce some debug output. That'll be useful in confirming
what's happening.
I've attached a file containing the DYNINST_DEBUG_PROCCONTROL debug output.
The problem is what I suspected. Dyninst 8.0 introduced some restrictions
on events happening inside OneTimeCodes, which are being triggered by the
DYNINSTUserMessage.
Thanks for looking into this.
It'll actually be up to one of the Dyninst team to officially support this
and decide if/how to fix it--this was just a case where I'm familiar with
the code and recognized the cause from your description. I'll send
Bill/Drew a technical summary and they can decide where to go.
Also, your earlier message implied that you use DYNINSTUserMessage in all
of your probes. As an FYI, DYNINSTUserMessage is fairly expensive and
involves pausing the mutatee and two context-switches. It's not something
you'd ever want to put into an app's inner loop. If you see any
performance problems you may want to consider replacing it with a named
pipe/socket or shared memory.
-Matt
|