JVMTI retransformation and addition of private methods

David Holmes david.holmes at oracle.com
Wed Feb 21 07:01:15 UTC 2018


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 ...

>> 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.

David
-----

> 
> Thanks,
> Serguei
> 
> 
>> -- 
>> David
>>
>>
>>> thanks,
>>> Karen
>>>
> 


More information about the serviceability-dev mailing list