[Soot-list] Interface Invoke marked as Virtual Invoke in the bytecode
Marc-André Laverdière
marc-andre.laverdiere-papineau at polymtl.ca
Fri Aug 2 15:46:42 EDT 2013
It turns out that I found a real world scenario :(
mysql-connector-java-5.1.15-bin.jar has this class as an interface,
whereas it is a class in mysql-connector-java-5.0.4-bin.jar, and both
are on the class path.
The matter of conflicting class definitions is not going away. I think
we need some kind of way of dealing with that. Or at least to warn the
user...
On 08/02/2013 12:45 PM, Phil Pratt-Szeliga wrote:
> Hi Marc-Andre,
>
> That is an issue with classloading. I don't remember the cases that
> this happens.
>
> Phil Pratt-Szeliga
> Syracuse University
> http://trifort.org/
>
> On Fri, Aug 2, 2013 at 12:38 PM, Marc-André Laverdière
> <marc-andre.laverdiere-papineau at polymtl.ca> wrote:
>> Hello,
>>
>> I got this crash when analyzing some system (of which I know almost
>> nothing about) when running Spark.
>>
>> I could try to put some logic around this, but I am actually interested
>> in finding out if this is a real bug in our .class file loader.
>>
>> Or is it that there could be some kind of classpath issue, where one
>> class is labeled as interface in a jar, but it is a non-interface is
>> another jar? (I can't think of real-world case of that.
>>
>> Exception in thread "main" java.lang.RuntimeException: Trying to create
>> virtual invoke expression for interface type. Use JInterfaceInvokeExpr
>> instead!
>> at
>> soot.jimple.internal.JVirtualInvokeExpr.<init>(JVirtualInvokeExpr.java:45)
>> at soot.jimple.Jimple.newVirtualInvokeExpr(Jimple.java:464)
>> at soot.coffi.CFG.generateJimple(CFG.java:4378)
>> at soot.coffi.CFG.jimplify(CFG.java:1237)
>> at soot.coffi.CFG.jimplify(CFG.java:925)
>> at soot.coffi.CoffiMethodSource.getBody(CoffiMethodSource.java:107)
>> at soot.SootMethod.getBodyFromMethodSource(SootMethod.java:89)
>> at soot.SootMethod.retrieveActiveBody(SootMethod.java:324)
>> at
>> soot.jimple.toolkits.callgraph.OnFlyCallGraphBuilder.processNewMethod(OnFlyCallGraphBuilder.java:532)
>> at
>> soot.jimple.toolkits.callgraph.OnFlyCallGraphBuilder.processReachables(OnFlyCallGraphBuilder.java:427)
>> at soot.jimple.spark.solver.OnFlyCallGraph.build(OnFlyCallGraph.java:55)
>> at // ...
>> --
>> Marc-André Laverdière-Papineau
>> Doctorant - PhD Candidate
>> _______________________________________________
>> Soot-list mailing list
>> Soot-list at sable.mcgill.ca
>> http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>
--
Marc-André Laverdière-Papineau
Doctorant - PhD Candidate
More information about the Soot-list
mailing list