[Soot-list] Interprocedural without transitive dependencies?

Marc-Andre Laverdiere-Papineau marc-andre.laverdiere-papineau at polymtl.ca
Wed Jul 11 08:30:40 EDT 2012


Silly me!

I needed to turn those options manually with Options.v() for that bit of 
code.

Now I am getting another error a bit later, which seems to be of the 
same 'family' :(

Exception in thread "main" java.lang.RuntimeException: This operation 
requires resolving level HIERARCHY but sun.misc.ClassFileTransformer is 
at resolving level DANGLING
If you are extending Soot, try to add the following call before calling 
soot.Main.main(..):
Scene.v().addBasicClass(sun.misc.ClassFileTransformer,HIERARCHY);
Otherwise, try whole-program mode (-w).
	at soot.SootClass.checkLevel(SootClass.java:125)
	at soot.FastHierarchy.canStoreClass(FastHierarchy.java:280)
	at soot.FastHierarchy.canStoreType(FastHierarchy.java:215)
	at soot.FastHierarchy.canStoreType(FastHierarchy.java:261)
	at 
soot.jimple.spark.internal.TypeManager.castNeverFails(TypeManager.java:143)
	at 
soot.jimple.spark.internal.TypeManager.makeTypeMask(TypeManager.java:122)
	at 
soot.jimple.spark.SparkTransformer.internalTransform(SparkTransformer.java:91)
	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:49)
	at soot.Pack.apply(Pack.java:114)
	at soot.PackManager.runWholeProgramPacks(PackManager.java:454)
	at soot.PackManager.runPacksNormally(PackManager.java:368)
	at soot.PackManager.runPacks(PackManager.java:334)
	at soot.Main.run(Main.java:198)
	at soot.Main.main(Main.java:141)
	at ca.polymtl.gigl.casi.darwini.SootMain.main(SootMain.java:238)

Note that 'sun' is in my list of exceptions

On 07/11/2012 03:57 AM, Eric Bodden wrote:
> Hi Marc-Andre.
>
> This looks very odd. I guess a little debugging would help there....
> Normally, when -allow-phantom-refs is set you should not be able to
> reach the line that throws this exception. Also, I was unable to find
> any code in Soot that would reset this flag to false.
>
> Eric
>
> On 10 July 2012 14:17, Marc-Andre Laverdiere-Papineau
> <marc-andre.laverdiere-papineau at polymtl.ca> wrote:
>> Hello,
>>
>> Thanks to Phil's trick, I was able to get started with my custom entry
>> points.
>>
>> Now I am getting another issue: as I am analyzing JEE applications, I
>> keep on hitting one exception after another that a class file isn't
>> found. e.g.
>>
>> Exception in thread "main" java.lang.RuntimeException: couldn't find
>> class: org.jboss.aop.proxy.ClassProxy (is your soot-class-path set
>> properly?)
>>          at soot.SootResolver.bringToHierarchy(SootResolver.java:205)
>>          at soot.SootResolver.bringToSignatures(SootResolver.java:239)
>>          at soot.SootResolver.bringToBodies(SootResolver.java:280)
>>          at soot.SootResolver.processResolveWorklist(SootResolver.java:150)
>>          at soot.SootResolver.resolveClass(SootResolver.java:124)
>>          at soot.Scene.loadClass(Scene.java:448)
>>          at ca.polymtl.gigl.casi.darwini.SootMain$1.transform(SootMain.java:164)
>>          at
>> org.apache.commons.collections.CollectionUtils.collect(CollectionUtils.java:632)
>>          at
>> org.apache.commons.collections.CollectionUtils.collect(CollectionUtils.java:610)
>>          at
>> org.apache.commons.collections.CollectionUtils.collect(CollectionUtils.java:575)
>>          at ca.polymtl.gigl.casi.darwini.SootMain.main(SootMain.java:161)
>>
>> And I can confirm that org.jboss is in my exclusions.
>>
>> So I am jar-hunting on Jarvana, every single time, which is no fun.
>>
>> The thing is, I have a lot of exclusions and I am running with
>> -allow-phantom-refs and -no-bodies-for-excluded, which I would've
>> guessed would've avoided this situation.
>>
>> I am running with a build of soot made a few days ago.
>>
>> So I end up with two questions: how exactly do exclusions work? and is
>> there a way to turn off transitive dependency resolution in whole
>> program mode?
>> In other words, can I get a call graph without -w?
>>
>> --
>> Marc-André Laverdière-Papineau
>> Étudiant au doctorat - PhD Student
>>
>> _______________________________________________
>> Soot-list mailing list
>> Soot-list at sable.mcgill.ca
>> http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>
>
>


-- 
Marc-André Laverdière-Papineau
Étudiant au doctorat - PhD Student




More information about the Soot-list mailing list