[Soot-list] RuntimeException when using Spark with -no-bodies-for-excluded
Michael Faes
rolve at trick17.ch
Tue Mar 5 09:57:13 EST 2013
Hi everyone,
I'm trying to switch from CHA to Spark and getting the following exception:
Exception in thread "main" java.lang.RuntimeException: This operation
requires resolving level HIERARCHY but
javax.security.auth.callback.Callback is at resolving level DANGLING
If you are extending Soot, try to add the following call before calling
soot.Main.main(..):
Scene.v().addBasicClass(javax.security.auth.callback.Callback,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:113)
at
soot.jimple.spark.internal.TypeManager.makeTypeMask(TypeManager.java:92)
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)
...
I'm using custom entry points and therefore setting up Soot in a custom way:
----
final soot.options.Options opts = soot.options.Options.v();
opts.set_output_format(soot.options.Options.output_format_none);
opts.set_via_shimple(true);
opts.set_whole_program(true);
opts.set_whole_shimple(true);
opts.set_omit_excepting_unit_edges(true);
opts.set_allow_phantom_refs(true);
opts.set_no_bodies_for_excluded(true);
opts.set_include_all(true);
opts.set_exclude(myOptions.excludedPackages());
final List<String> included = new ArrayList<String>(myOptions
.includedPackages());
included.add("java.util.concurrent.locks.");
opts.set_include(included);
opts.setPhaseOption("cg", "verbose:true");
opts.setPhaseOption("cg.cha", "enabled:false");
opts.setPhaseOption("cg.spark", "enabled:true");
opts.parse(myOptions.classes().toArray(new String[0]));
final Scene scene = Scene.v();
for(final String name : myOptions.classes())
scene.forceResolve(name, SootClass.BODIES);
scene.loadNecessaryClasses();
scene.setEntryPoints(SootUtils.allLibraryMethods());
...
PackManager.v().runPacks();
----
Does anyone have an idea what the problem here could be? I'm using
soot-2.5.0. Many thanks in advance.
Best regards,
Michael
More information about the Soot-list
mailing list