[Soot-list] Active body not present
Richard L. Halpert
richardlhalpert at gmail.com
Tue Jun 24 14:58:08 EDT 2008
FYI, I'm working on refactoring both mhp and thread-local objects into their
own analysis phases within wjtp.
-Richard
On Tue, Jun 24, 2008 at 11:54 AM, Richard L. Halpert <
richardlhalpert at gmail.com> wrote:
> I'd guess that jimple bodies get purged before the end of Soot.Main.main(),
> probably when Soot moves on to a Baf or output stage. Try creating your own
> whole-program analysis, and add it to the wjtp stage, *then* run
> Soot.Main.main(). Within your whole-program analysis' transform method, you
> should be able to run the UnsynchronizedMhpAnalysis.
>
> By the way, you don't need to run wjtp.tn in order to run the mhp
> analysis. wjtp.tn analyzes and transforms the locks in your program. Mhp
> is simply used as a phase within it. I can see from your output that
> wjtp.tn is running mhp (and printing the results if it, in case you're
> interested in just seeing them), a local-objects analysis, and a lock
> analysis, and transforming your program. I doubt that this is what you
> want.
>
> -Richard
>
> On Tue, Jun 24, 2008 at 9:56 AM, Kristen Walcott <walcott at virginia.edu>
> wrote:
>
>> Hi,
>>
>> I'm very new to Soot, and I'm trying to create an instance of
>> UnsynchronizedMhpAnalysis. I keep getting an error that no active body is
>> present. I've also received this error when trying to draw a PEG and
>> retrieveActiveBody() was called. After loading the class and support, I can
>> call getActiveBody on each method, but once I set whole program mode, the
>> active bodies can no longer be found. The code I'm using and exact error
>> are below. Does anyone know what I'm doing wrong?
>>
>> Thank you,
>> Kristen
>>
>> public class MHPrunner {
>> public static void main(String[] args){
>> args = new String[] {"RaceNotFixed"};
>> if (args.length == 0){
>> System.out.println("Usage: java MHPrunner class_to_analyse");
>> System.exit(0);
>> }
>>
>> PhaseOptions.v().setPhaseOption("jb", "enabled:true");
>> Options.v().set_keep_line_number(true);
>> Options.v().setPhaseOption("jb", "use-original-names:true");
>> Options.v().set_whole_program(true);
>> Options.v().set_app(true);
>>
>> SootClass sClass = Scene.v().loadClassAndSupport(args[0]);
>> sClass.setApplicationClass();
>> Scene.v().setMainClass(sClass);
>>
>> //Enable Spark
>> HashMap<String,String> opt = new HashMap<String,String>();
>> opt.put("verbose","true");
>> opt.put("propagator","worklist");
>> opt.put("simple-edges-bidirectional","false");
>> opt.put("on-fly-cg","true");
>> opt.put("set-impl","double");
>> opt.put("double-set-old","hybrid");
>> opt.put("double-set-new","hybrid");
>> opt.put("pre_jimplify", "true");
>> SparkTransformer.v().transform("",opt);
>> SparkOptions opts = new SparkOptions( opt );
>>
>> PhaseOptions.v().setPhaseOption("cg", "enabled:true");
>> PhaseOptions.v().setPhaseOption("cg.spark", "enabled:true");
>>
>> PackManager.v().getPack("wjtp").apply();
>> PhaseOptions.v().setPhaseOption("wjtp.tn", "enabled:true");
>> PhaseOptions.v().setPhaseOption("wjtp.tn", "do-mhp:true");
>>
>> String[] args2 = { "-w", args[0]};
>> soot.Main.main(args2);
>> UnsynchronizedMhpAnalysis uma = new UnsynchronizedMhpAnalysis();
>> }
>>
>> Output:
>> Soot started on Sat Jun 21 14:29:59 EDT 2008
>> [Call Graph] For information on where the call graph may be incomplete,
>> use the verbose option to the cg phase.
>> [Spark] Pointer Assignment Graph in 3.0 seconds.
>> [Spark] Type masks in 0.7 seconds.
>> [Spark] Pointer Graph simplified in 0.0 seconds.
>> [Spark] Propagation in 115.2 seconds.
>> [Spark] Solution found in 115.2 seconds.
>> [wjtp.tn] *** Build May-Happen-in-Parallel Info *** Sat Jun 21 14:32:01
>> EDT 2008
>> [mhp]
>> [mhp] User Thread (Single, SRO,---): Started in <RaceNotFixed: void
>> main(java.lang.String[])> by virtualinvoke lo.<java.lang.Thread: void
>> start()>()
>> [mhp] [<RaceNotFixed: void run()>
>> [mhp] <SharedNotFixed: int dif()>
>> [mhp] <RaceNotFixed: void <clinit>()>]
>> [mhp]
>> [mhp] Main Thread (Single, ---,---):
>> [mhp] [<RaceNotFixed: void main(java.lang.String[])>
>> [mhp] <RaceNotFixed: void <clinit>()>
>> [mhp] <RaceNotFixed: void run()>
>> [mhp] <RaceNotFixed: void <init>(java.lang.String)>
>> [mhp] <SharedNotFixed: void bump()>
>> [mhp] <SharedNotFixed: void <init>()>
>> [mhp] <SharedNotFixed: int dif()>]
>> [mhp]
>> [wjtp.tn] *** Find Thread-Local Objects *** Sat Jun 21 14:32:01 EDT 2008
>> [local-objects] Analyzing local objects for RaceNotFixed
>> [local-objects] preparing class Sat Jun 21 14:32:01 EDT 2008
>> [local-objects] analyzing class Sat Jun 21 14:32:01 EDT 2008
>> [local-objects] propagating over call graph Sat Jun 21 14:32:02 EDT 2008
>> [local-objects] finished at Sat Jun 21 14:32:02 EDT 2008
>> [local-objects] (#analyzed/#encountered): 49/106
>> [wjtp.tn] TLO totals (#analyzed/#encountered): 49/106
>> [wjtp.tn] *** Find and Name Transactions *** Sat Jun 21 14:32:02 EDT 2008
>> Warning: using default implementation of addAll. You should implement a
>> faster specialized implementation.
>> this is of type soot.jimple.spark.sets.HashPointsToSet
>> other is of type soot.jimple.spark.sets.HybridPointsToSet
>> exclude is null
>> [wjtp.tn] *** Find Transitive Read/Write Sets *** Sat Jun 21 14:32:02 EDT
>> 2008
>> [wjtp.tn] *** Calculate Locking Groups *** Sat Jun 21 14:32:02 EDT 2008
>> [wjtp.tn] *** Detect the Possibility of Deadlock *** Sat Jun 21 14:32:02
>> EDT 2008
>> [wjtp.tn] *** Calculate Locking Objects *** Sat Jun 21 14:32:02 EDT 2008
>> [wjtp.tn] * m001n01 *
>> [wjtp.tn] Healthy lockset: S1/G1/O1 [this] refToBase:{} refToIndex:{}
>> [wjtp.tn] |= results:{this=1} refToBaseGroup:{}
>> [wjtp.tn] * m000n01 *
>> [wjtp.tn] Healthy lockset: S1/G1/O1 [this] refToBase:{} refToIndex:{}
>> [wjtp.tn] |= results:{this=5} refToBaseGroup:{}
>> [wjtp.tn] *** Print Output and Transform Program *** Sat Jun 21 14:32:02
>> EDT 2008
>> Transforming SharedNotFixed...
>> Transforming RaceNotFixed...
>> Writing to sootOutput/SharedNotFixed.class
>> Writing to sootOutput/RaceNotFixed.class
>> Soot finished on Sat Jun 21 14:32:03 EDT 2008
>> Soot has run for 2 min. 3 sec.
>> Done setting whole program mode
>> about to run Unsynchronized MHP analysis
>> Exception in thread "main" java.lang.RuntimeException: no active body
>> present for method <RaceNotFixed: void <clinit>()>
>> at soot.SootMethod.getActiveBody(SootMethod.java:304)
>> at
>> soot.jimple.toolkits.thread.mhp.findobject.AllocNodesFinder.find(AllocNodesFinder.java:53)
>> at
>> soot.jimple.toolkits.thread.mhp.findobject.AllocNodesFinder.<init>(AllocNodesFinder.java:41)
>> at
>> soot.jimple.toolkits.thread.mhp.UnsynchronizedMhpAnalysis.run(UnsynchronizedMhpAnalysis.java:91)
>> at
>> soot.jimple.toolkits.thread.mhp.UnsynchronizedMhpAnalysis.buildMHPLists(UnsynchronizedMhpAnalysis.java:61)
>> at
>> soot.jimple.toolkits.thread.mhp.UnsynchronizedMhpAnalysis.<init>(UnsynchronizedMhpAnalysis.java:47)
>> at MHPrunner.main(MHPrunner.java:87)
>>
>> ____________________________
>> Kristen R. Walcott
>> Department of Computer Science
>> University of Virginia
>> http://www.cs.virginia.edu/walcott
>> walcott at cs.virginia.edu
>> 814-573-1283
>> _______________________________________________
>> Soot-list mailing list
>> Soot-list at sable.mcgill.ca
>> http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.CS.McGill.CA/pipermail/soot-list/attachments/20080624/390c471e/attachment.htm
More information about the Soot-list
mailing list