JVMTI not receiving field access events with fast_getfield

Amir Rapson amir at vfunction.com
Wed Dec 20 13:40:39 UTC 2017


Hi,

If you could please remove my phone number from the comments of the bug.

Thanks,
Amir

-----Original Message-----
From: Amir Rapson [mailto:amir at vfunction.com]
Sent: Tuesday, December 12, 2017 3:24 PM
To: 'daniel.daugherty at oracle.com' <daniel.daugherty at oracle.com>; 'Vladimir
Ivanov' <vladimir.x.ivanov at oracle.com>;
'serviceability-dev at openjdk.java.net' <serviceability-dev at openjdk.java.net>
Cc: 'Coleen.Phillimore at oracle.com' <Coleen.Phillimore at oracle.com>
Subject: RE: JVMTI not receiving field access events with fast_getfield

Thank you Dan. Much appreciated.

Again, let me know if I can assist with anything.

Best,
Amir

-----Original Message-----
From: Daniel D. Daugherty [mailto:daniel.daugherty at oracle.com]
Sent: Tuesday, December 12, 2017 3:13 PM
To: Amir Rapson <amir at vfunction.com>; Vladimir Ivanov
<vladimir.x.ivanov at oracle.com>; serviceability-dev at openjdk.java.net
Cc: Coleen.Phillimore at oracle.com
Subject: Re: JVMTI not receiving field access events with fast_getfield

Amir,

Your https://bugs.openjdk.java.net/browse/JI-9051849 bug has been moved to
https://bugs.openjdk.java.net/browse/JDK-8193369.

Someone on the Serviceability team should pick up this thread from here, but
we're right at the end game for JDK10 so it might take some time...

Dan


On 12/12/17 8:03 AM, Amir Rapson wrote:
> Hi,
>
> I know the code has some relevant code, but it doesn't seem to work.
> You will see some differences: the CALL_VM to the post function has
> only 2 arguments and not 3, I'm not sure it matters.
>
> The platform is x86_64, Java version is 1.8.0-152. I can try other
> versions if you wish.
>
> Please find the attached MyAgent.cpp MyAgent.h and
> com_vfunction_Main.h to compile the agent.
> Please also find the attached com.vfunction.zip that holds the simple
> java util to reproduce the problem.
>
> You'll see the problem on ArrayList.add(item) where you'll get events
> only on codes #16 and #22 and not on #2 and #11 (see attached
> bytecode.txt of said function).
>
> Please let me know once you managed to reproduce it. I can also send
> you a patch file to disable the fast_getfield (and fast putfield) to
> show that the problem disappears.
>
> I'm currently looking at the actual assembly of the add function, both
> with the modified hotspot and without and will try to assist will
> offering a fix for this issue.
>
> One last thing. I saw a very old issue (resolved by Daniel Daugherty)
> stating that fast_getfield was not completely addressed with the
> resolution on this issue. The bug ID is
> https://bugs.openjdk.java.net/browse/JDK-4300409
>
> I'll be happy to assist further.
>
> Best regards,
> Amir
>
>
> -----Original Message-----
> From: Vladimir Ivanov [mailto:vladimir.x.ivanov at oracle.com]
> Sent: Tuesday, December 12, 2017 2:46 PM
> To: Amir Rapson <amir at vfunction.com>
> Cc: Coleen.Phillimore at oracle.com; daniel.daugherty at oracle.com
> Subject: Re: JVMTI not receiving field access events with
> fast_getfield
>
> Thanks for the report, Amir!
>
> Unfortunately, I can't access the bug you filed.
>
> Can you, please, share the test case and instructions how to reproduce
> the problem?
>
> Also, what Java version & platform do you observe the bug on?
>
> I briefly looked into template interpreter code on x86 and it does
> have relevant code to post JVMTI events in fast accessors.
>
> Best regards,
> Vladimir Ivanov
>
> On 12/12/17 11:12 AM, Amir Rapson wrote:
>> Hi Daniel, Coleen and Vladimir,
>>
>> I tracked your email addresses from some mailing lists and hopefully
>> one of you is a relevant person for my problem.
>>
>> I also filed a bug request (ID 9051849) but since I don’t have an
>> option to add information I decided to email you.
>>
>> The problem I’m seeing is that JMTI does not receive field access
>> events (and probably field modification events) when /fast_getfield/
>> is used instead of /get_field/.
>>
>> I verified this by disabling all the
>> /patch_bytecode(Bytecodes::_fast_?getfield, bc, rbx)/ in
>> /TemplateTable::getfield_or_static()/ and made sure that JVMTI
>> receives all the correct events.
>>
>> I have the agent code and a short java program that can reproduce the
>> problem and would be happy to assist in fixing and or debugging this
>> issue.
>>
>> I would appreciate any feedback.
>>
>> Best regards,
>>
>> Amir
>>
>> ​​​​​Amir Rapson | Founder & VP Eng @ *vFunction* | 7 HaPelech St.
>> Tel-Aviv | +972-522650968
>>


More information about the serviceability-dev mailing list