[Soot-list] How to obtain the topological graph in the
transactional transformation phase (wjtp.tn)?
Marco Bakera
marco.bakera at tu-dortmund.de
Thu Nov 27 09:24:45 EST 2008
On Monday 10 November 2008 19:42:52 Richard L. Halpert wrote:
>
> 1) The LockAllocator uses a may-alias relationship to group locks together
> - so if lock1 in *may* be the same as lock2, they would be treated as a
> single lock (and the two critical sections would be put in the same
> CriticalSectionGroup). The Lock allocator constructs this graph for the
> sake of deadlock detection. You can use the deadlock detection graph by
> calling
> soot.jimple.toolkits.thread.synchronization.LockAllocation.getDeadlockGraph
>(). The nodes are CriticalSectionGroups, and the edges represent calls from
> a critical section in one group to a critical section in another group. Be
> sure to call Soot with "-p wjtp.tn avoid-deadlock:false", or else the
> deadlock detector may stop constructing the graph early if it finds
> potential deadlock.
That sounds great and I will use this. :) Thanks for that hint. However when
trying the following lines of code.
String args =
"-w --app " +
// options for call graph creation
"-p cg.cha enabled:false " +
"-p cg.spark enabled:true " +
// options for whole jimple transformation pack
"-p wjtp.tn enabled:true " +
"-p wjtp.tn avoid-deadlock:false " +
"-p wjtp.tn do-tlo:false " +
"-p wjtp.tn do-mhp:true " +
// the main application class
mainClass.getName();
// start soot
LOG.debug("Starting Soot with command line: "+args);
Main.main(args.split(" "));
I get the following exception from the main method:
java.lang.RuntimeException: trying to hash null value.
at soot.util.HashChain.getPredOf(HashChain.java:338)
at soot.PatchingChain.getPredOf(PatchingChain.java:225)
at
soot.toolkits.graph.ExceptionalUnitGraph.buildExceptionDests(ExceptionalUnitGraph.java:337)
at
soot.toolkits.graph.ExceptionalUnitGraph.initialize(ExceptionalUnitGraph.java:263)
at
soot.toolkits.graph.ExceptionalUnitGraph.<init>(ExceptionalUnitGraph.java:149)
at
soot.toolkits.graph.ExceptionalUnitGraph.<init>(ExceptionalUnitGraph.java:182)
at
soot.toolkits.scalar.LocalSplitter.internalTransform(LocalSplitter.java:77)
at soot.BodyTransformer.transform(BodyTransformer.java:51)
at soot.Transform.apply(Transform.java:104)
at soot.JimpleBodyPack.applyPhaseOptions(JimpleBodyPack.java:57)
at soot.JimpleBodyPack.internalApply(JimpleBodyPack.java:89)
at soot.Pack.apply(Pack.java:124)
at soot.coffi.CoffiMethodSource.getBody(CoffiMethodSource.java:117)
at soot.SootMethod.getBodyFromMethodSource(SootMethod.java:82)
at soot.SootMethod.retrieveActiveBody(SootMethod.java:329)
at
soot.jimple.toolkits.callgraph.OnFlyCallGraphBuilder.processNewMethod(OnFlyCallGraphBuilder.java:181)
at
soot.jimple.toolkits.callgraph.OnFlyCallGraphBuilder.processReachables(OnFlyCallGraphBuilder.java:81)
at soot.jimple.spark.solver.OnFlyCallGraph.build(OnFlyCallGraph.java:55)
at soot.jimple.spark.solver.PropWorklist.handleVarNode(PropWorklist.java:123)
at soot.jimple.spark.solver.PropWorklist.propagate(PropWorklist.java:53)
at
soot.jimple.spark.SparkTransformer.internalTransform(SparkTransformer.java:151)
at soot.SceneTransformer.transform(SceneTransformer.java:39)
at soot.Transform.apply(Transform.java:89)
at soot.RadioScenePack.internalApply(RadioScenePack.java:57)
at
soot.jimple.toolkits.callgraph.CallGraphPack.internalApply(CallGraphPack.java:47)
at soot.Pack.apply(Pack.java:114)
at soot.PackManager.runWholeProgramPacks(PackManager.java:406)
at soot.PackManager.runPacks(PackManager.java:327)
at soot.Main.run(Main.java:202)
at soot.Main.main(Main.java:145)
The problem is only present when using the development version of Soot from
the SVN repository. Release 2.3.0 has no problems. However, the method to
obtain the Deadlock Graph is not present there. :)
Thanks for your help.
Greetings,
Marco.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part.
Url : http://mailman.CS.McGill.CA/pipermail/soot-list/attachments/20081127/df36ac41/attachment.bin
More information about the Soot-list
mailing list