Thank you very much. Evgeny and Marc

I am supposed to add some details to perfect jacoco. the first two classes, 
abap.classs and aaqc.class, are created by dex2jar 2.x 
<https://github.com/pxb1988/dex2jar>, while the last one, 
UiApiPlugin.class, was created by enjarify 
<https://github.com/Storyyeller/enjarify> which is developed by Google and 
shows the superiority.

So the conclusion is jacoco has a little bug with handling frame right? 

I notice that jacoco could exclude some classes in execution analysis 
<https://www.jacoco.org/jacoco/trunk/doc/agent.html>, However, it could not 
exclude the classes in instrumentation so that I have to delete the .class 
manually before instrumentation to avoid this issues. Is there any other 
more elegant way.

在 2018年3月29日星期四 UTC+8上午5:34:54,Evgeny Mandrikov写道:
>
> On Wednesday, March 28, 2018 at 9:02:57 PM UTC+2, Evgeny Mandrikov wrote:
>
>> It is actually pretty easy to demonstrate that we add frames near probes 
>> into classes that have no frames initially - see attachment.
>>
>
> Given that changelog for JaCoCo 0.5.6 contains "Don't insert stackmap 
> frames for class files before version 1.6" - either this was overlooked, or 
> regression.
>  
>
>> Maybe this shocks ASM during expansion of wide jumps in absence of other 
>> frames, causing AIOOBE? There is definitely such expansion during 
>> instrumentation of "UiApiPlugin.class" because stack trace contains call of 
>> "ClassReader.accept" from "ClassWriter.toByteArray". But so far didn't 
>> succeeded with creation/reduction of reproducer for AIOOBE.
>>
>
> And here is reproducer of AIOBE in attachment.
>
> So, Marc, I think that we should congratulate Qian Ren about uncovering 
> all this! And I'm going to create ticket. WDYT?
>  
>
>> On Wednesday, March 28, 2018 at 7:45:50 PM UTC+2, Evgeny Mandrikov wrote:
>>>
>>> Marc, how you execute CheckClassAdapter ?
>>>
>>> My attempt shows a lot of "ClassNotFoundException" because of missing 
>>> classes that this class depends on, but no "Execution can fall off end of 
>>> the code".
>>> Also looking at "<clinit>" in output of "javap -v -p UiApiPlugin.class", 
>>> I don't see how it can fall off end of the code.
>>>
>>> Even if class is potentially is invalid, I have strong feeling of 
>>> something fishy here - an attempt to add frame into class that originally 
>>> has no frames.
>>> Seems that for instructions of method 
>>> "a(Lcom/tencent/biz/webviewplugin/PubAccountUIPlugin;)Ljava/lang/String" , 
>>> I'm currently investigating and will keep you posted.
>>>
>>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"JaCoCo and EclEmma Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to jacoco+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jacoco/cad0bcee-f30c-49b9-b01f-1543d80e1985%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to