RFR: 8252657: JVMTI agent is not unloaded when Agent_OnAttach is failed

David Holmes david.holmes at oracle.com
Tue Dec 1 05:19:04 UTC 2020


On 1/12/2020 2:46 pm, Yasumasa Suenaga wrote:
> Hi Chris, David,
> 
> Currently Agent_OnUnload() is not called when Agent_OnLoad() is failed - 
> JVM will abort.
> Should we re-think this behavior?

We should we rethink that? It is probably one of the clearest parts of 
the spec. If Agent_Onload fails that is considered a fatal error - end 
of story.

The issue is with Agent_onAttach and how its failure should, or should 
not, impact Agent_OnUnload.

David
-----

> https://github.com/YaSuenag/jvmti-examples/tree/master/helloworld
> 
> ```
> $ java -agentpath:/path/to/libhelloworld.so=error --version
> Hello World from Agent_OnLoad()
>    options = error
> Error occurred during initialization of VM
> agent library failed to init: /path/to/libhelloworld.so
> ```
> 
> 
> Thanks,
> 
> Yasumasa
> 
> 
> On 2020/12/01 11:44, David Holmes wrote:
>> On 1/12/2020 11:45 am, Chris Plummer wrote:
>>> On Fri, 2 Oct 2020 07:27:43 GMT, Yasumasa Suenaga 
>>> <ysuenaga at openjdk.org> wrote:
>>>
>>>>> * Q3: What has to be done for statically linked agent?
>>>>
>>>> JVMTI spec says "unless it is statically linked into the 
>>>> executable", so I think we can ignore about Agent_OnUnload_L() in 
>>>> this PR.
>>>
>>> I don't think that makes sense. If you call it for dynamically linked 
>>> then you need to call it for statically linked also.
>>
>> Agreed. Even though you can't physically unload the statically linked 
>> library, if it is logically unloaded by some mechanism, then 
>> Agent_OnUnload_L is supposed to be called.
>>
>> David
>> -----
>>
>>> -------------
>>>
>>> PR: https://git.openjdk.java.net/jdk/pull/19
>>>


More information about the serviceability-dev mailing list