[prev in list] [next in list] [prev in thread] [next in thread]
List: soot-list
Subject: [Soot-list] java.lang.VerifyError: (class: org/apache/lucene/util/CloseableThreadLocal, method: set
From: Nikhil <cs16m028 () smail ! iitm ! ac ! in>
Date: 2018-05-15 5:29:31
Message-ID: 743b74da-7fbc-4f67-8802-be364a414d71 () googlegroups ! com
[Download RAW message or body]
[Attachment #2 (multipart/alternative)]
Hi,
for my work I need to replace *InterfaceInvokeExpr* with *VirtualInvokeExpr*
using same receiver and arguments.
e.g) if Map.put(K,V) is called in program I want to change it to
HashMap.put(K,V)
Please note that in this program Map is implemented using only HashMap.
Map<k,v> map = new HashMap<>();
The way I am trying to achieve it is like this:
if(unit instanceof InvokeStmt)
{
InvokeExpr ie = ((InvokeStmt) u).getInvokeExpr();
if(ie instanceof InterfaceInvokeExpr)
{
SootMethod sM = Scene.v().getMethod("method signature here"); //Here I
am getting the method successfully
InvokeExpr vi = Jimple.v().newVirtualInvokeExpr(local,sM.makeRef(),ie.
getArgs())
}
}
After that I replace it successfully.
But after replacing I am getting java.lang.VerifyError: (class:
org/apache/lucene/util/CloseableThreadLocal, method: set signature:
(Ljava/lang/Object;)V) Incompatible object argument for function call
After closely reviewing class org.apache.lucene.util.CloseableThreadLocal I
found that the replaced VirtualInvokeExpr does not use same arguments as
InterfaceInvokeExpr.
InterfaceInvokeExpr:
$r1 = new java.lang.ThreadLocal;
$r9 = r0.<org.apache.lucene.util.CloseableThreadLocal: java.util.Map
hardRefs>;
$r10 = staticinvoke <java.lang.Thread: java.lang.Thread
currentThread()>();
interfaceinvoke $r9.<java.util.Map: java.lang.Object put(java.lang.
Object,java.lang.Object)>($r10, r1);
VirtualInvokeExpr:
r0 := @this: org.apache.lucene.util.CloseableThreadLocal;
$r4 = r12.<org.apache.lucene.util.CloseableThreadLocal: java.util.
Map hardRefs>;
$r5 = staticinvoke <java.lang.Thread: java.lang.Thread currentThread
()>();
r16 = (java.util.HashMap) $r4;
virtualinvoke r16.<java.util.HashMap: java.lang.Object put(java.lang
.Object,java.lang.Object)>($r5, r0);
Here r0 and r1 have different type I think that is why the error is
occuring.
Any guesses why this is happening? Am I setting the arguments for the
function call incorrectly?
Full error message for the reference:
=======================================================
TamiFlex Play-In Agent Version 2.0.3
Loaded properties from /home/nikkhil/.tamiflex/pia.properties
=======================================================
===== DaCapo 9.12-MR1 luindex starting =====
java.lang.reflect.InvocationTargetException
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(
DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.dacapo.harness.Luindex.iterate(Luindex.java:66)
at org.dacapo.harness.Benchmark.run(Benchmark.java:187)
at org.dacapo.harness.TestHarness.runBenchmark(TestHarness.java:199)
at org.dacapo.harness.TestHarness.main(TestHarness.java:152)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(
DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at Harness.main(Unknown Source)
Caused by: java.lang.VerifyError: (class: org/apache/lucene/util/
CloseableThreadLocal, method: set signature: (Ljava/lang/Object;)V)
Incompatible object argument for function call
at org.apache.lucene.analysis.Analyzer.<init>(Analyzer.java:50)
at org.apache.lucene.analysis.standard.StandardAnalyzer.<init>(
StandardAnalyzer.java:102)
at org.apache.lucene.analysis.standard.StandardAnalyzer.<init>(
StandardAnalyzer.java:93)
at org.dacapo.luindex.Index.main(Index.java:64)
... 13 more
Thanks,
--Nikhil
[Attachment #5 (text/html)]
<div dir="ltr"><br>Hi,<br><br>for my work I need to replace \
<b>InterfaceInvokeExpr</b> with <b>VirtualInvokeExpr</b> using same receiver and \
arguments.<br><br>e.g) if Map.put(K,V) is called in program I want to change it to \
HashMap.put(K,V)<br><br>Please note that in this program Map is implemented using \
only HashMap.<br>Map<k,v> map = new HashMap<>();<br><br>The way I am \
trying to achieve it is like this:<br><br><div style="background-color: rgb(250, 250, \
250); border-color: rgb(187, 187, 187); border-style: solid; border-width: 1px; \
overflow-wrap: break-word;" class="prettyprint"><code class="prettyprint"><div \
class="subprettyprint"><span style="color: #008;" \
class="styled-by-prettify">if</span><span style="color: #660;" \
class="styled-by-prettify">(</span><span style="color: #000;" \
class="styled-by-prettify">unit </span><span style="color: #008;" \
class="styled-by-prettify">instanceof</span><span style="color: #000;" \
class="styled-by-prettify"> </span><span style="color: #606;" \
class="styled-by-prettify">InvokeStmt</span><span style="color: #660;" \
class="styled-by-prettify">)</span><span style="color: #000;" \
class="styled-by-prettify"> <br></span><span style="color: #660;" \
class="styled-by-prettify">{</span><span style="color: #000;" \
class="styled-by-prettify"><br> </span><span style="color: #606;" \
class="styled-by-prettify">InvokeExpr</span><span style="color: #000;" \
class="styled-by-prettify"> ie </span><span style="color: #660;" \
class="styled-by-prettify">=</span><span style="color: #000;" \
class="styled-by-prettify"> </span><span style="color: #660;" \
class="styled-by-prettify">((</span><span style="color: #606;" \
class="styled-by-prettify">InvokeStmt</span><span style="color: #660;" \
class="styled-by-prettify">)</span><span style="color: #000;" \
class="styled-by-prettify"> u</span><span style="color: #660;" \
class="styled-by-prettify">).</span><span style="color: #000;" \
class="styled-by-prettify">getInvokeExpr</span><span style="color: #660;" \
class="styled-by-prettify">();</span><span style="color: #000;" \
class="styled-by-prettify"><br> </span><span style="color: #008;" \
class="styled-by-prettify">if</span><span style="color: #660;" \
class="styled-by-prettify">(</span><span style="color: #000;" \
class="styled-by-prettify">ie </span><span style="color: #008;" \
class="styled-by-prettify">instanceof</span><span style="color: #000;" \
class="styled-by-prettify"> </span><span style="color: #606;" \
class="styled-by-prettify">InterfaceInvokeExpr</span><span style="color: #660;" \
class="styled-by-prettify">)</span><span style="color: #000;" \
class="styled-by-prettify"><br> </span><span style="color: #660;" \
class="styled-by-prettify">{</span><span style="color: #000;" \
class="styled-by-prettify"><br> </span><span style="color: #606;" \
class="styled-by-prettify">SootMethod</span><span style="color: #000;" \
class="styled-by-prettify"> sM </span><span style="color: #660;" \
class="styled-by-prettify">=</span><span style="color: #000;" \
class="styled-by-prettify"> </span><span style="color: #606;" \
class="styled-by-prettify">Scene</span><span style="color: #660;" \
class="styled-by-prettify">.</span><span style="color: #000;" \
class="styled-by-prettify">v</span><span style="color: #660;" \
class="styled-by-prettify">().</span><span style="color: #000;" \
class="styled-by-prettify">getMethod</span><span style="color: #660;" \
class="styled-by-prettify">(</span><span style="color: #080;" \
class="styled-by-prettify">"method signature here"</span><span \
style="color: #660;" class="styled-by-prettify">);</span><span style="color: #000;" \
class="styled-by-prettify"> </span><span style="color: #800;" \
class="styled-by-prettify">//Here I am getting the method successfully</span><span \
style="color: #000;" class="styled-by-prettify"><br> </span><span style="color: \
#606;" class="styled-by-prettify">InvokeExpr</span><span style="color: #000;" \
class="styled-by-prettify"> vi </span><span style="color: #660;" \
class="styled-by-prettify">=</span><span style="color: #000;" \
class="styled-by-prettify"> </span><span style="color: #606;" \
class="styled-by-prettify">Jimple</span><span style="color: #660;" \
class="styled-by-prettify">.</span><span style="color: #000;" \
class="styled-by-prettify">v</span><span style="color: #660;" \
class="styled-by-prettify">().</span><span style="color: #000;" \
class="styled-by-prettify">newVirtualInvokeExpr</span><span style="color: #660;" \
class="styled-by-prettify">(</span><span style="color: #008;" \
class="styled-by-prettify">local</span><span style="color: #660;" \
class="styled-by-prettify">,</span><span style="color: #000;" \
class="styled-by-prettify">sM</span><span style="color: #660;" \
class="styled-by-prettify">.</span><span style="color: #000;" \
class="styled-by-prettify">makeRef</span><span style="color: #660;" \
class="styled-by-prettify">(),</span><span style="color: #000;" \
class="styled-by-prettify">ie</span><span style="color: #660;" \
class="styled-by-prettify">.</span><span style="color: #000;" \
class="styled-by-prettify">getArgs</span><span style="color: #660;" \
class="styled-by-prettify">())</span><span style="color: #000;" \
class="styled-by-prettify"><br> </span><span style="color: #660;" \
class="styled-by-prettify">}</span><span style="color: #000;" \
class="styled-by-prettify"><br></span><span style="color: #660;" \
class="styled-by-prettify">}</span><span style="color: #000;" \
class="styled-by-prettify"><br><br></span></div></code></div><br><br>After that I \
replace it successfully.<br><br>But after replacing I am getting \
java.lang.VerifyError: (class: org/apache/lucene/util/CloseableThreadLocal, method: \
set signature: (Ljava/lang/Object;)V) Incompatible object argument for function \
call<br><br>After closely reviewing class org.apache.lucene.util.CloseableThreadLocal \
I found that the replaced VirtualInvokeExpr does not use same arguments as \
InterfaceInvokeExpr.<br><br><div style="background-color: rgb(250, 250, 250); \
border-color: rgb(187, 187, 187); border-style: solid; border-width: 1px; \
overflow-wrap: break-word;" class="prettyprint"><code class="prettyprint"><div \
class="subprettyprint"><span style="color: #606;" \
class="styled-by-prettify">InterfaceInvokeExpr</span><span style="color: #660;" \
class="styled-by-prettify">:</span><span style="color: #000;" \
class="styled-by-prettify"><br><br> $r1 </span><span style="color: #660;" \
class="styled-by-prettify">=</span><span style="color: #000;" \
class="styled-by-prettify"> </span><span style="color: #008;" \
class="styled-by-prettify">new</span><span style="color: #000;" \
class="styled-by-prettify"> java</span><span style="color: #660;" \
class="styled-by-prettify">.</span><span style="color: #000;" \
class="styled-by-prettify">lang</span><span style="color: #660;" \
class="styled-by-prettify">.</span><span style="color: #606;" \
class="styled-by-prettify">ThreadLocal</span><span style="color: #660;" \
class="styled-by-prettify">;</span><span style="color: #000;" \
class="styled-by-prettify"><br><br> $r9 </span><span style="color: #660;" \
class="styled-by-prettify">=</span><span style="color: #000;" \
class="styled-by-prettify"> r0</span><span style="color: #660;" \
class="styled-by-prettify">.<</span><span style="color: #000;" \
class="styled-by-prettify">org</span><span style="color: #660;" \
class="styled-by-prettify">.</span><span style="color: #000;" \
class="styled-by-prettify">apache</span><span style="color: #660;" \
class="styled-by-prettify">.</span><span style="color: #000;" \
class="styled-by-prettify">lucene</span><span style="color: #660;" \
class="styled-by-prettify">.</span><span style="color: #000;" \
class="styled-by-prettify">util</span><span style="color: #660;" \
class="styled-by-prettify">.</span><span style="color: #606;" \
class="styled-by-prettify">CloseableThreadLocal</span><span style="color: #660;" \
class="styled-by-prettify">:</span><span style="color: #000;" \
class="styled-by-prettify"> java</span><span style="color: #660;" \
class="styled-by-prettify">.</span><span style="color: #000;" \
class="styled-by-prettify">util</span><span style="color: #660;" \
class="styled-by-prettify">.</span><span style="color: #606;" \
class="styled-by-prettify">Map</span><span style="color: #000;" \
class="styled-by-prettify"> hardRefs</span><span style="color: #660;" \
class="styled-by-prettify">>;</span><span style="color: #000;" \
class="styled-by-prettify"><br><br> $r10 </span><span style="color: #660;" \
class="styled-by-prettify">=</span><span style="color: #000;" \
class="styled-by-prettify"> staticinvoke </span><span style="color: #660;" \
class="styled-by-prettify"><</span><span style="color: #000;" \
class="styled-by-prettify">java</span><span style="color: #660;" \
class="styled-by-prettify">.</span><span style="color: #000;" \
class="styled-by-prettify">lang</span><span style="color: #660;" \
class="styled-by-prettify">.</span><span style="color: #606;" \
class="styled-by-prettify">Thread</span><span style="color: #660;" \
class="styled-by-prettify">:</span><span style="color: #000;" \
class="styled-by-prettify"> java</span><span style="color: #660;" \
class="styled-by-prettify">.</span><span style="color: #000;" \
class="styled-by-prettify">lang</span><span style="color: #660;" \
class="styled-by-prettify">.</span><span style="color: #606;" \
class="styled-by-prettify">Thread</span><span style="color: #000;" \
class="styled-by-prettify"> currentThread</span><span style="color: #660;" \
class="styled-by-prettify">()>();</span><span style="color: #000;" \
class="styled-by-prettify"><br><br> interfaceinvoke $r9</span><span \
style="color: #660;" class="styled-by-prettify">.<</span><span style="color: \
#000;" class="styled-by-prettify">java</span><span style="color: #660;" \
class="styled-by-prettify">.</span><span style="color: #000;" \
class="styled-by-prettify">util</span><span style="color: #660;" \
class="styled-by-prettify">.</span><span style="color: #606;" \
class="styled-by-prettify">Map</span><span style="color: #660;" \
class="styled-by-prettify">:</span><span style="color: #000;" \
class="styled-by-prettify"> java</span><span style="color: #660;" \
class="styled-by-prettify">.</span><span style="color: #000;" \
class="styled-by-prettify">lang</span><span style="color: #660;" \
class="styled-by-prettify">.</span><span style="color: #606;" \
class="styled-by-prettify">Object</span><span style="color: #000;" \
class="styled-by-prettify"> put</span><span style="color: #660;" \
class="styled-by-prettify">(</span><span style="color: #000;" \
class="styled-by-prettify">java</span><span style="color: #660;" \
class="styled-by-prettify">.</span><span style="color: #000;" \
class="styled-by-prettify">lang</span><span style="color: #660;" \
class="styled-by-prettify">.</span><span style="color: #606;" \
class="styled-by-prettify">Object</span><span style="color: #660;" \
class="styled-by-prettify">,</span><span style="color: #000;" \
class="styled-by-prettify">java</span><span style="color: #660;" \
class="styled-by-prettify">.</span><span style="color: #000;" \
class="styled-by-prettify">lang</span><span style="color: #660;" \
class="styled-by-prettify">.</span><span style="color: #606;" \
class="styled-by-prettify">Object</span><span style="color: #660;" \
class="styled-by-prettify">)>(</span><span style="color: #000;" \
class="styled-by-prettify">$r10</span><span style="color: #660;" \
class="styled-by-prettify">,</span><span style="color: #000;" \
class="styled-by-prettify"> r1</span><span style="color: #660;" \
class="styled-by-prettify">);</span></div></code></div><br><br> \
<br><div style="background-color: rgb(250, 250, 250); border-color: rgb(187, 187, \
187); border-style: solid; border-width: 1px; overflow-wrap: break-word;" \
class="prettyprint"><code class="prettyprint"><div class="subprettyprint"><span \
style="color: #606;" class="styled-by-prettify">VirtualInvokeExpr</span><span \
style="color: #660;" class="styled-by-prettify">:</span><span style="color: #000;" \
class="styled-by-prettify"><br><br> r0 </span><span style="color: #660;" \
class="styled-by-prettify">:=</span><span style="color: #000;" \
class="styled-by-prettify"> </span><span style="color: #066;" \
class="styled-by-prettify">@this</span><span style="color: #660;" \
class="styled-by-prettify">:</span><span style="color: #000;" \
class="styled-by-prettify"> org</span><span style="color: #660;" \
class="styled-by-prettify">.</span><span style="color: #000;" \
class="styled-by-prettify">apache</span><span style="color: #660;" \
class="styled-by-prettify">.</span><span style="color: #000;" \
class="styled-by-prettify">lucene</span><span style="color: #660;" \
class="styled-by-prettify">.</span><span style="color: #000;" \
class="styled-by-prettify">util</span><span style="color: #660;" \
class="styled-by-prettify">.</span><span style="color: #606;" \
class="styled-by-prettify">CloseableThreadLocal</span><span style="color: #660;" \
class="styled-by-prettify">;</span><span style="color: #000;" \
class="styled-by-prettify"><br> <br> $r4 </span><span \
style="color: #660;" class="styled-by-prettify">=</span><span style="color: #000;" \
class="styled-by-prettify"> r12</span><span style="color: #660;" \
class="styled-by-prettify">.<</span><span style="color: #000;" \
class="styled-by-prettify">org</span><span style="color: #660;" \
class="styled-by-prettify">.</span><span style="color: #000;" \
class="styled-by-prettify">apache</span><span style="color: #660;" \
class="styled-by-prettify">.</span><span style="color: #000;" \
class="styled-by-prettify">lucene</span><span style="color: #660;" \
class="styled-by-prettify">.</span><span style="color: #000;" \
class="styled-by-prettify">util</span><span style="color: #660;" \
_______________________________________________
Soot-list mailing list
Soot-list@CS.McGill.CA
https://mailman.CS.McGill.CA/mailman/listinfo/soot-list
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic