[Soot-list] forceResolve NullPointerException

glauco cardoso glaucogoca at gmail.com
Thu Mar 9 12:12:41 EST 2017


Dears,

I'm trying to use soot to implement my own flow analysis transformer.
I created a plugin for eclipse to try to get the project classpath and 
execute soot with my configuration.
This is my configuration

Options.v().set_validate(false);
Options.v().set_src_prec(Options.src_prec_java); 
Options.v().set_output_dir(this.directoryOutputName.getText());
Options.v().set_output_format(Options.output_format_S);

Options.v().set_allow_phantom_refs(true); 
Options.v().set_xml_attributes(false);
Options.v().set_force_overwrite(true);
Options.v().set_whole_shimple(true);
Options.v().set_soot_classpath(urls.toString());
Options.v().set_whole_program(true);
Options.v().set_app(true);
Options.v().set_via_shimple(true);

Scene.v().loadNecessaryClasses();
SootClass c = Scene.v().forceResolve(returnFullClassName(), 
SootClass.BODIES); // ERROR HERE!!
c.setApplicationClass();

SootMethod method = c.getMethodByName(this.methodName.getText());//main
List<SootMethod> entryPoints = new ArrayList<SootMethod>();
entryPoints.add(method);
Scene.v().setEntryPoints(entryPoints); 

Options.v().set_include(sourcePackage); 
PackManager v = PackManager.v();
Pack stp = v.getPack("stp");
ShimpleBodyTransformer bodyTransformer = new ShimpleBodyTransformer();
stp.add(new Transform("stp.mytransformer", bodyTransformer));
v.runPacks();

When I call *Scene.v().forceResolve *for the first time  it throws this 
exception:


MESSAGE Unhandled event loop exception
!STACK 0
java.lang.Error: Error: Failed to load java.lang.CharSequence.
   at soot.JastAddJ.PathPart.getCompilationUnit(PathPart.java:109)
at soot.JastAddJ.Program.getCompilationUnit(Program.java:873)
  at soot.JastAddJ.Program.getLibCompilationUnit_compute(Program.java:1517)
      at soot.JastAddJ.Program.getLibCompilationUnit(Program.java:1500)
      at soot.JastAddJ.Program.lookupLibType_compute(Program.java:1465)
      at soot.JastAddJ.Program.lookupLibType(Program.java:1433)
      at soot.JastAddJ.Program.lookupType_compute(Program.java:1412)
 at soot.JastAddJ.Program.lookupType(Program.java:1393)
 at soot.JastAddJ.Program.Define_TypeDecl_lookupType(Program.java:1981)
 ... ommited 
Caused by: java.lang.NullPointerException
     at soot.JastAddJ.BytecodeParser.parseThisClass(BytecodeParser.java:439)
at soot.JastAddJ.BytecodeParser.parseTypeDecl(BytecodeParser.java:423)
 at soot.JastAddJ.BytecodeParser.parse(BytecodeParser.java:331)
 at soot.JastAddJ.BytecodeParser.read(BytecodeParser.java:27)
   at soot.JastAddJ.PathPart.getCompilationUnit(PathPart.java:87)
 ... 122 more



But, when I run my program for the second time it works! 

I don't know why it happens. There are some problem on classpath order? Or 
there are any problem in my code  to set soot configuration and run?



Thanks in advanced!
Glauco Cardoso








-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.CS.McGill.CA/pipermail/soot-list/attachments/20170309/ee2287de/attachment-0001.html>


More information about the Soot-list mailing list