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

David Holmes david.holmes at oracle.com
Tue Dec 1 05:21:27 UTC 2020


On 1/12/2020 3:19 pm, David Holmes wrote:
> 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.

I meant, of course, "Why should we rethink that?".

David

> 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