Fix two bugs in Dyninst's exec handling code.
authorDaniel McNulty <mcnulty@cs.wisc.edu>
Mon, 25 Oct 2010 17:14:56 +0000 (12:14 -0500)
committerDaniel McNulty <mcnulty@cs.wisc.edu>
Mon, 25 Oct 2010 17:14:56 +0000 (12:14 -0500)
commiteabe72f671a4966ad0ac899589f1e0c639faeed0
tree421307557a51a57f279fb51c0cd029317ee8b066
parentfe124daef33f830d0996aaebe22d861afc8c9de9
Fix two bugs in Dyninst's exec handling code.

Both of these bugs were reported by the Open SpeedShop folks when
using Dyninst from the openssd daemon. They existed in both Dyninst 6.1
and GIT HEAD.

The first bug occurs when a multithread capable process exec's an executable
that is not multithread capable. We were incorrectly assuming that the exec'd
process was still multithread capable.

The second bug was observed when a multithread capable process exec's an
executable that is also multithread capable. The bug was that the tramp guard
AST was being cached across exec's and results in asserts in code generation
because the tramp guard variable created during mulitthreaded initialization
doesn't match the variable maintained by the tramp guard AST. The fix is to
clear the cached the tramp guard AST on exec.
dyninstAPI/src/process.C