[Soot-list] CallGraph exception

Eric Bodden eric.bodden at ec-spride.de
Mon Jun 25 05:48:52 EDT 2012


Hi all.

Thanks Phil for the patch. This is now merged into the master branch.

Eric

On 25 June 2012 10:22, Andrea Mattavelli <andrea.mattavelli at usi.ch> wrote:
> Hi Phil,
> thanks for your patch, it correctly solved the typing problem!
>
> However, I get another exception (I am sorry but this stack trace is a bit long):
>
> Exception in thread "main" soot.SootMethodRefImpl$ClassResolutionFailedException: Class com.google.javascript.jscomp.DefaultPassConfig doesn't have method access$2100([]) : com.google.javascript.jscomp.DiagnosticType; failed to resolve in superclasses and interfacesLooking in com.google.javascript.jscomp.DefaultPassConfig which has methods [<com.google.javascript.jscomp.DefaultPassConfig: void <clinit>()>, <com.google.javascript.jscomp.DefaultPassConfig: void <init>(com.google.javascript.jscomp.CompilerOptions)>, <com.google.javascript.jscomp.DefaultPassConfig: com.google.javascript.jscomp.PassConfig$State getIntermediateState()>, <com.google.javascript.jscomp.DefaultPassConfig: void setIntermediateState(com.google.javascript.jscomp.PassConfig$State)>, <com.google.javascript.jscomp.DefaultPassConfig: com.google.javascript.jscomp.GlobalNamespace getGlobalNamespace()>, <com.google.javascript.jscomp.DefaultPassConfig: com.google.javascript.jscomp.PreprocessorSymbolTable getPrepr
>  ocessorSymbolTable()>, <com.google.javascript.jscomp.DefaultPassConfig: void maybeInitializePreprocessorSymbolTable(com.google.javascript.jscomp.AbstractCompiler)>, <com.google.javascript.jscomp.DefaultPassConfig: java.util.List getChecks()>, <com.google.javascript.jscomp.DefaultPassConfig: java.util.List getOptimizations()>, <com.google.javascript.jscomp.DefaultPassConfig: java.util.List getMainOptimizationLoop()>, <com.google.javascript.jscomp.DefaultPassConfig: java.util.List getCodeRemovingPasses()>, <com.google.javascript.jscomp.DefaultPassConfig: void assertAllOneTimePasses(java.util.List)>, <com.google.javascript.jscomp.DefaultPassConfig: void assertAllLoopablePasses(java.util.List)>, <com.google.javascript.jscomp.DefaultPassConfig: com.google.javascript.jscomp.HotSwapCompilerPass combineChecks(com.google.javascript.jscomp.AbstractCompiler,java.util.List)>, <com.google.javascript.jscomp.DefaultPassConfig: com.google.javascript.jscomp.VariableMap runPropertyRenaming(co
>  m.google.javascript.jscomp.AbstractCompiler,com.google.javascript.jscomp.VariableMap,com.google.javascript.rhino.Node,com.google.javascript.rhino.Node)>, <com.google.javascript.jscomp.DefaultPassConfig: com.google.javascript.jscomp.VariableMap runVariableRenaming(com.google.javascript.jscomp.AbstractCompiler,com.google.javascript.jscomp.VariableMap,com.google.javascript.rhino.Node,com.google.javascript.rhino.Node)>, <com.google.javascript.jscomp.DefaultPassConfig: com.google.javascript.jscomp.PassFactory createEmptyPass(java.lang.String)>, <com.google.javascript.jscomp.DefaultPassConfig: com.google.javascript.jscomp.PassFactory getCustomPasses(com.google.javascript.jscomp.CustomPassExecutionTime)>, <com.google.javascript.jscomp.DefaultPassConfig: boolean isInliningForbidden()>, <com.google.javascript.jscomp.DefaultPassConfig: com.google.javascript.jscomp.CompilerPass runInSerial(com.google.javascript.jscomp.CompilerPass[])>, <com.google.javascript.jscomp.DefaultPassConfig: c
>  om.google.javascript.jscomp.CompilerPass runInSerial(java.util.Collection)>, <com.google.javascript.jscomp.DefaultPassConfig: java.util.Map getAdditionalReplacements(com.google.javascript.jscomp.CompilerOptions)>, <com.google.javascript.jscomp.DefaultPassConfig: com.google.javascript.jscomp.HotSwapCompilerPass access$0(com.google.javascript.jscomp.AbstractCompiler,java.util.List)>, <com.google.javascript.jscomp.DefaultPassConfig: com.google.javascript.jscomp.DiagnosticType access$1()>, <com.google.javascript.jscomp.DefaultPassConfig: java.util.Set access$2(com.google.javascript.jscomp.DefaultPassConfig)>, <com.google.javascript.jscomp.DefaultPassConfig: void access$3(com.google.javascript.jscomp.DefaultPassConfig,java.util.Set)>, <com.google.javascript.jscomp.DefaultPassConfig: com.google.javascript.jscomp.PreprocessorSymbolTable access$4(com.google.javascript.jscomp.DefaultPassConfig)>, <com.google.javascript.jscomp.DefaultPassConfig: void access$5(com.google.javascript.jsc
>  omp.DefaultPassConfig,java.util.Map)>, <com.google.javascript.jscomp.DefaultPassConfig: void access$6(com.google.javascript.jscomp.DefaultPassConfig,com.google.javascript.jscomp.GlobalNamespace)>, <com.google.javascript.jscomp.DefaultPassConfig: com.google.javascript.jscomp.GlobalNamespace access$7(com.google.javascript.jscomp.DefaultPassConfig)>, <com.google.javascript.jscomp.DefaultPassConfig: void access$8(com.google.javascript.jscomp.DefaultPassConfig,com.google.javascript.jscomp.FunctionNames)>, <com.google.javascript.jscomp.DefaultPassConfig: void access$9(com.google.javascript.jscomp.DefaultPassConfig,java.lang.String)>, <com.google.javascript.jscomp.DefaultPassConfig: void access$10(com.google.javascript.jscomp.DefaultPassConfig,com.google.javascript.jscomp.VariableMap)>, <com.google.javascript.jscomp.DefaultPassConfig: boolean access$11(com.google.javascript.jscomp.DefaultPassConfig)>, <com.google.javascript.jscomp.DefaultPassConfig: void access$12(com.google.javasc
>  ript.jscomp.DefaultPassConfig,com.google.javascript.jscomp.TightenTypes)>, <com.google.javascript.jscomp.DefaultPassConfig: com.google.javascript.jscomp.TightenTypes access$13(com.google.javascript.jscomp.DefaultPassConfig)>, <com.google.javascript.jscomp.DefaultPassConfig: com.google.javascript.jscomp.CrossModuleMethodMotion$IdGenerator access$14(com.google.javascript.jscomp.DefaultPassConfig)>, <com.google.javascript.jscomp.DefaultPassConfig: void access$15(com.google.javascript.jscomp.DefaultPassConfig,com.google.javascript.jscomp.VariableMap)>, <com.google.javascript.jscomp.DefaultPassConfig: com.google.javascript.jscomp.DiagnosticType access$16()>, <com.google.javascript.jscomp.DefaultPassConfig: com.google.javascript.jscomp.VariableMap access$17(com.google.javascript.jscomp.DefaultPassConfig,com.google.javascript.jscomp.AbstractCompiler,com.google.javascript.jscomp.VariableMap,com.google.javascript.rhino.Node,com.google.javascript.rhino.Node)>, <com.google.javascript.j
>  scomp.DefaultPassConfig: void access$18(com.google.javascript.jscomp.DefaultPassConfig,com.google.javascript.jscomp.VariableMap)>, <com.google.javascript.jscomp.DefaultPassConfig: com.google.javascript.jscomp.DiagnosticType access$19()>, <com.google.javascript.jscomp.DefaultPassConfig: com.google.javascript.jscomp.VariableMap access$20(com.google.javascript.jscomp.DefaultPassConfig,com.google.javascript.jscomp.AbstractCompiler,com.google.javascript.jscomp.VariableMap,com.google.javascript.rhino.Node,com.google.javascript.rhino.Node)>, <com.google.javascript.jscomp.DefaultPassConfig: void access$21(com.google.javascript.jscomp.DefaultPassConfig,com.google.javascript.jscomp.VariableMap)>, <com.google.javascript.jscomp.DefaultPassConfig: com.google.javascript.jscomp.FunctionNames access$22(com.google.javascript.jscomp.DefaultPassConfig)>, <com.google.javascript.jscomp.DefaultPassConfig: com.google.javascript.jscomp.DiagnosticType access$23()>, <com.google.javascript.jscomp.Defa
>  ultPassConfig: com.google.javascript.jscomp.DiagnosticType access$24()>, <com.google.javascript.jscomp.DefaultPassConfig: int[] $SWITCH_TABLE$com$google$javascript$jscomp$PropertyRenamingPolicy()>, <com.google.javascript.jscomp.DefaultPassConfig: com.google.javascript.jscomp.CompilerPass access$26(com.google.javascript.jscomp.CompilerPass[])>, <com.google.javascript.jscomp.DefaultPassConfig: com.google.javascript.jscomp.CompilerPass access$27(java.util.Collection)>]
> Looking in com.google.javascript.jscomp.PassConfig which has methods [<com.google.javascript.jscomp.PassConfig: void <init>(com.google.javascript.jscomp.CompilerOptions)>, <com.google.javascript.jscomp.PassConfig: void regenerateGlobalTypedScope(com.google.javascript.jscomp.AbstractCompiler,com.google.javascript.rhino.Node)>, <com.google.javascript.jscomp.PassConfig: void patchGlobalTypedScope(com.google.javascript.jscomp.AbstractCompiler,com.google.javascript.rhino.Node)>, <com.google.javascript.jscomp.PassConfig: com.google.javascript.jscomp.MemoizedScopeCreator getTypedScopeCreator()>, <com.google.javascript.jscomp.PassConfig: com.google.javascript.jscomp.Scope getTopScope()>, <com.google.javascript.jscomp.PassConfig: java.util.List getChecks()>, <com.google.javascript.jscomp.PassConfig: java.util.List getOptimizations()>, <com.google.javascript.jscomp.PassConfig: com.google.javascript.jscomp.graph.GraphvizGraph getPassGraph()>, <com.google.javascript.jscomp.PassConfig: co
>  m.google.javascript.jscomp.TypeInferencePass makeTypeInference(com.google.javascript.jscomp.AbstractCompiler)>, <com.google.javascript.jscomp.PassConfig: com.google.javascript.jscomp.InferJSDocInfo makeInferJsDocInfo(com.google.javascript.jscomp.AbstractCompiler)>, <com.google.javascript.jscomp.PassConfig: com.google.javascript.jscomp.TypeCheck makeTypeCheck(com.google.javascript.jscomp.AbstractCompiler)>, <com.google.javascript.jscomp.PassConfig: void addPassFactoryBefore(java.util.List,com.google.javascript.jscomp.PassFactory,java.lang.String)>, <com.google.javascript.jscomp.PassConfig: void replacePassFactory(java.util.List,com.google.javascript.jscomp.PassFactory)>, <com.google.javascript.jscomp.PassConfig: int findPassIndexByName(java.util.List,java.lang.String)>, <com.google.javascript.jscomp.PassConfig: com.google.javascript.jscomp.PassConfig getBasePassConfig()>, <com.google.javascript.jscomp.PassConfig: com.google.javascript.jscomp.PassConfig$State getIntermediateSt
>  ate()>, <com.google.javascript.jscomp.PassConfig: void setIntermediateState(com.google.javascript.jscomp.PassConfig$State)>]
> Looking in java.lang.Object which has methods [<java.lang.Object: void <init>()>, <java.lang.Object: void registerNatives()>, <java.lang.Object: java.lang.Class getClass()>, <java.lang.Object: int hashCode()>, <java.lang.Object: boolean equals(java.lang.Object)>, <java.lang.Object: java.lang.Object clone()>, <java.lang.Object: java.lang.String toString()>, <java.lang.Object: void notify()>, <java.lang.Object: void notifyAll()>, <java.lang.Object: void wait(long)>, <java.lang.Object: void wait(long,int)>, <java.lang.Object: void wait()>, <java.lang.Object: void finalize()>, <java.lang.Object: void <clinit>()>]
>
> at soot.SootMethodRefImpl.resolve(SootMethodRefImpl.java:183)
> at soot.SootMethodRefImpl.resolve(SootMethodRefImpl.java:109)
> at soot.jimple.internal.AbstractInvokeExpr.getMethod(AbstractInvokeExpr.java:54)
> at soot.jimple.toolkits.callgraph.OnFlyCallGraphBuilder.findReceivers(OnFlyCallGraphBuilder.java:553)
> at soot.jimple.toolkits.callgraph.OnFlyCallGraphBuilder.processNewMethod(OnFlyCallGraphBuilder.java:533)
> at soot.jimple.toolkits.callgraph.OnFlyCallGraphBuilder.processReachables(OnFlyCallGraphBuilder.java:426)
> at soot.jimple.toolkits.callgraph.CallGraphBuilder.build(CallGraphBuilder.java:84)
> at soot.jimple.toolkits.callgraph.CHATransformer.internalTransform(CHATransformer.java:43)
> 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 Main.main(Main.java:42)
>
>
> Actually, Soot is right: there's no access$2100 method in that class!
> Does anybody have an idea of the possible source of this problem?
>
> Thank you very much!
>
> Andrea
>
> _______________________________
>
> Andrea Mattavelli
>
> PhD Student
> Faculty of Informatics
> University of Lugano
> via G. Buffi 13
> CH-6900 Lugano - Switzerland
>
> email:    andrea.mattavelli at usi.ch<mailto:andrea.mattavelli at usi.ch>
> phone:  +41 58 666 4312
> http://star.inf.usi.ch<http://star.inf.usi.ch/>
>
> On 25-giu-2012, at 09:04, Phil Pratt-Szeliga wrote:
>
> Hi Andrea,
>
> The patch found in this email [1] was never applied. I have submitted
> a pull request on github. In the meantime, you can apply the patch
> yourself if you want to.
>
> Phil Pratt-Szeliga
> Syracuse University
>
> [1] http://www.sable.mcgill.ca/pipermail/soot-list/2012-May/004307.html
>
> On Mon, Jun 25, 2012 at 2:07 AM, Andrea Mattavelli
> <andrea.mattavelli at usi.ch<mailto:andrea.mattavelli at usi.ch>> wrote:
> Hi Phil,
> I've just tried to use the latest version from GIT but I obtain the same "null typing" exception:
>
> java.lang.Exception: null typing passed to useChecker
> at soot.jimple.toolkits.typing.fast.UseChecker.check(UseChecker.java:50)
> at soot.jimple.toolkits.typing.fast.TypeResolver.insertCasts(TypeResolver.java:345)
> at soot.jimple.toolkits.typing.fast.TypeResolver.inferTypes(TypeResolver.java:124)
> at soot.jimple.toolkits.typing.TypeAssigner.internalTransform(TypeAssigner.java:101)
> at soot.BodyTransformer.transform(BodyTransformer.java:51)
> at soot.Transform.apply(Transform.java:104)
> at soot.JimpleBodyPack.applyPhaseOptions(JimpleBodyPack.java:66)
> 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:89)
> at soot.SootMethod.retrieveActiveBody(SootMethod.java:322)
> at soot.jimple.toolkits.callgraph.OnFlyCallGraphBuilder.processNewMethod(OnFlyCallGraphBuilder.java:531)
> at soot.jimple.toolkits.callgraph.OnFlyCallGraphBuilder.processReachables(OnFlyCallGraphBuilder.java:426)
> at soot.jimple.toolkits.callgraph.CallGraphBuilder.build(CallGraphBuilder.java:84)
> at soot.jimple.toolkits.callgraph.CHATransformer.internalTransform(CHATransformer.java:43)
> 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 Main.main(Main.java:42)
>
> I cloned the 'trunk' repository https://github.com/Sable/soot, is it correct? Or has your patch been placed into a specific branch?
>
> Thanks,
> Andrea
>
> _______________________________
>
> Andrea Mattavelli
>
> PhD Student
> Faculty of Informatics
> University of Lugano
> via G. Buffi 13
> CH-6900 Lugano - Switzerland
>
> email:    andrea.mattavelli at usi.ch<mailto:andrea.mattavelli at usi.ch><mailto:andrea.mattavelli at usi.ch>
> phone:  +41 58 666 4312
> http://star.inf.usi.ch<http://star.inf.usi.ch/>
>
> On 22-giu-2012, at 18:22, Phil Pratt-Szeliga wrote:
>
> Hi Andrea,
>
> Regarding this exception:
>
> java.lang.Exception: null typing passed to useChecker
> at soot.jimple.toolkits.typing.fast.UseChecker.check(UseChecker.java:50)
> at soot.jimple.toolkits.typing.fast.TypeResolver.insertCasts(TypeResolver.java:345)
> at soot.jimple.toolkits.typing.fast.TypeResolver.inferTypes(TypeResolver.java:124)
> at soot.jimple.toolkits.typing.TypeAssigner.internalTransform(TypeAssigner.java:101)
>
> I think a patch I submitted has fixed this problem. Can you try again
> using the latest from the new github [1] repository and let me know if
> you are still getting the "null typing" problem?
>
> Phil Pratt-Szeliga
> Syracuse University
>
> [1] https://github.com/Sable/soot
>
>
>
>
> _______________________________________________
> Soot-list mailing list
> Soot-list at sable.mcgill.ca
> http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list



-- 
Eric Bodden, Ph.D., http://bodden.de/
Head of Secure Software Engineering Group at EC SPRIDE
Principal Investigator in Secure Services at CASED
Tel: +49 6151 16-75422    Fax: +49 6151 16-72051
Room 3.2.14, Mornewegstr. 30, 64293 Darmstadt


More information about the Soot-list mailing list