[Soot-list] CallGraph exception

Andrea Mattavelli andrea.mattavelli at usi.ch
Mon Jun 25 04:22:37 EDT 2012


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 getPreprocessorSymbolTable()>, <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(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.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: com.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.jscomp.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.javascript.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.jscomp.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.DefaultPassConfig: 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: com.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 getIntermediateState()>, <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






More information about the Soot-list mailing list