JVMTI retransformation and addition of private methods
Daniel D. Daugherty
daniel.daugherty at oracle.com
Wed Feb 21 15:40:42 UTC 2018
On 2/21/18 2:45 AM, serguei.spitsyn at oracle.com wrote:
> On 2/20/18 23:01, David Holmes wrote:
>> On 21/02/2018 4:50 PM, serguei.spitsyn at oracle.com wrote:
>>> Hi Karen and David,
>>>
>>>
>>> On 2/20/18 19:52, David Holmes wrote:
>>>> Hi Karen,
>>>>
>>>> On 21/02/2018 1:54 AM, Karen Kinnear wrote:
>>>>> Folks,
>>>>>
>>>>> As part of the Valhalla EG discussions for JVMTI changes for
>>>>> nestmates (thank you Serguei and David),
>>>>> IBM brought up a request that we update the JVMTI documentation to
>>>>> reflect that we allow addition
>>>>> of private methods.
>>>>>
>>>>> Is there a reason we do not document this? I’m inviting those who
>>>>> were involved at the time - please include
>>>>> others if needed.
>>>
>>> I support documenting this in the JVMTI spec and had a plan to fix
>>> it in 11.
>>> However, it is not clear to me yet if we have a consensus on it.
>>
>> I would like to see a detailed analysis of the implications of
>> allowing this. I _think_ it is safe but ...
>
> Valid concern.
> Also, I'd love to collect more details on the initial motivation to
> relax the JVMTI spec.
> Most likely we had no CCC/CSR filed on this change.
>
>
>>>> This issue is tracked by:
>>>>
>>>> https://bugs.openjdk.java.net/browse/JDK-8192936
>>>>
>>>> "RI does not follow the JVMTI RedefineClasses spec that is too
>>>> strict in the definition"
>>>
>>> Yes, this is the one.
>>> Thank you, David, for posting the link.
>>>
>>>
>>>> As I wrote there ... It is not at all clear how JDK-6404550 morphed
>>>> into "Permit the adding or deleting of private final/static methods
>>>> with redefine" - nor why those changes failed to make any change to
>>>> the spec itself. It is also unclear whether the add/delete is
>>>> restricted to final/static methods or any private method? I can see
>>>> that the intent was to only allow something that would not perturb
>>>> the vtable for existing instances.
>>>
>>> I agree, there is a confusion somewhere.
>>> Is it possible, the JDK-6404550 in JIRA is a different bug than the
>>> one in the Bugtraq system?
>>>
>>> The JDK-6404550 in JIRA has a different synopsis:
>>> https://bugs.openjdk.java.net/browse/JDK-6404550
>>> Cannot implement late attach in NetBeans Profiler due to
>>> missing functionality in JVMTI
>>
>> Digging deeper ... to fix the problem described in that bug they
>> augmented JVM TI to allow private method redefinition as an alternate
>> to the "native rebinding" technique that had been used previously.
>> See the final comment in:
>>
>> https://bugs.openjdk.java.net/browse/JDK-6341303
>>
>> "JVMTI Spec: Need a way how to rebind Object.wait and Thread.sleep
>> with late attach"
>>
>> which was closed as a duplicate.
>
> Thank you for the point.
> This explains it.
> It seems, the bug synopsis was changed at some moment.
The synopsis for 6404550 has never changed. Here's the subject line when
it was created on 2006.03.27:
> CR 6404550 *HOT* Created P1 hotspot/jvmti Cannot implement late
attach in NetBeans Profiler due to missing functionality in JVMTI
I think the confusion arises over comments like this in 6341303:
> rfield Robert Field
> <https://bugs.openjdk.java.net/secure/ViewProfile.jspa?name=rfield>
> added a comment - 2006-05-04 11:54
> BT2:EVALUATION
>
> This can now be accomplished with Java programming language
> instrumentation, via:
>
> 6404550: missing late attach (JVM TI redefine) functionality
> Permit the adding or deleting of private final/static
> methods with redefine
>
> Closing this bug as a duplicate.
That's just Robert's style for an sccs delta comment:
D 1.65.2.3 06/04/25 23:36:35 rfield 140 139 00023/00013/03263
MRs:
COMMENTS:
6404550: missing late attach (JVM TI redefine) functionality
Add/delete private methods, continued: changes per review
Back in the ancient past we tried to include some brief
info about the change in the delta comment. This was one of many
deltas associated with 6404550.
Please see the attached email that I sent on 2012.12.17 about the
history behind this issue... (sent to Karen, Mikael V, and Serguei)
It seems I forwarded that same email to Coleen, Markus G and Serguei
back on 2014.05.20. Since Markus is on that thread, it must have had
something to do with research about JFR...
I need to do a detailed read thru my e-mail archive for 6404550 to
see if I can spot some clues about why we didn't do a spec update.
Dan
>
> Thanks,
> Serguei
>
>>
>> David
>> -----
>>
>>>
>>> Thanks,
>>> Serguei
>>>
>>>
>>>> --
>>>> David
>>>>
>>>>
>>>>> thanks,
>>>>> Karen
>>>>>
>>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/serviceability-dev/attachments/20180221/c063db92/attachment-0001.html>
-------------- next part --------------
An embedded message was scrubbed...
From: "Daniel D. Daugherty" <daniel.daugherty at oracle.com>
Subject: Re: adding/deleting methods in JVM/TI RedefineClasses()/RetransformClasses()
Date: Mon, 17 Dec 2012 13:03:14 -0700
Size: 6818
URL: <http://mail.openjdk.java.net/pipermail/serviceability-dev/attachments/20180221/c063db92/AttachedMessage-0001.mht>
More information about the serviceability-dev
mailing list