RFR: JDK-8164913: JVMTI.agent_load dcmd should show useful error message

David Holmes david.holmes at oracle.com
Thu Sep 8 10:18:01 UTC 2016


On 8/09/2016 1:47 PM, Yasumasa Suenaga wrote:
> Hi all,
>
> This changes has been approved. But it was not passed JPRT.
> It is caused by checking return value in
> HotSpotVirtualMachine#loadAgentLibrary().
>
> I've fixed it and uploaded webrev. This changes has been passed JPRT.
> (Thanks David!)
> Could you review again?
>
>   hotspot:
> http://cr.openjdk.java.net/~ysuenaga/JDK-8164913/webrev.02/hotspot/

Looks ok.

>       jdk: http://cr.openjdk.java.net/~ysuenaga/JDK-8164913/webrev.02/jdk/

src/jdk.attach/share/classes/sun/tools/attach/HotSpotVirtualMachine.java

63         try(BufferedReader reader = new BufferedReader(new 
InputStreamReader(
   64                                execute("load", agentLibrary,
   65                                      Boolean.toString(isAbsolute), 
options)))) {

This one is tricky to get indentation reasonable but at the moment it 
seems inconsistent maybe something like:

try (BufferedReader reader =
          new BufferedReader(
                             new InputStreamReader(
                                                   execute("load", 
agentLibrary,
 
Boolean.toString(isAbsolute), options)
))) {

I can't get the above to display correctly in my mail client but 
hopefully you get the idea. Also note space after 'try'.

67             if (result == null) {
68                 throw new AgentInitializationException(
69                                      "Agent_OnAttach failed: " + result);

You know result is null here.

74                     int retCode = Integer.parseInt(matcher.group(1));

This can throw NumberFormatException which is not declared for this 
method. The original code wraps this in an IOException.

Thanks,
David

>
> Thanks,
>
> Yasumasa
>
>
> On 2016/09/07 16:47, serguei.spitsyn at oracle.com wrote:
>> On 9/7/16 00:45, Dmitry Samersoff wrote:
>>> Serguei,
>>>
>>> I'm OK with the fix and OK to be listed as a reviewer.
>>
>> Thanks, Dmitry!
>> Serguei
>>>
>>> -Dmitry
>>>
>>> On 2016-09-07 07:08, serguei.spitsyn at oracle.com wrote:
>>>> Hi Dmitry,
>>>>
>>>> As a sponsor I'm going to push this fix if you are Ok with the fix.
>>>> Please, let me know if you still have any concerns.
>>>> Also, confirm if you are Ok to be in the list of reviewers.
>>>>
>>>>
>>>> On 9/5/16 06:46, Dmitry Samersoff wrote:
>>>>> Yasumasa,
>>>>>
>>>>> I'll look closely to the fix.
>>>>>
>>>>> Please, notice:
>>>>>
>>>>> 1. We typically avoid printing attach error messages on
>>>>> the target VM side.
>>>> Some message was already printed:
>>>>
>>>> 2410 // Agent_OnAttach executed so completion status is JNI_OK
>>>> 2411 st->print_cr("%d", result);
>>>> 2412 result = JNI_OK;
>>>>
>>>> It is just a replacement. :)
>>>>
>>>>
>>>>> 2. We are in RDP1 for jdk9.
>>>>>
>>>>>
>>>>> http://mail.openjdk.java.net/pipermail/jdk9-dev/2016-August/004777.html
>>>>>
>>>> I've set the priority to P3, so it can be pushed to the jdk9/hs.
>>>>
>>>> Thanks,
>>>> Serguei
>>>>
>>>>> -Dmitry
>>>>>
>>>>> On 2016-09-05 16:25, Yasumasa Suenaga wrote:
>>>>>> PING: Could you review and sponsor it?
>>>>>>
>>>>>>>        http://cr.openjdk.java.net/~ysuenaga/JDK-8164913/webrev.01/
>>>>>> Thanks,
>>>>>>
>>>>>> Yasumasa
>>>>>>
>>>>>>
>>>>>> On 2016/09/01 12:47, Yasumasa Suenaga wrote:
>>>>>>> Hi all,
>>>>>>>
>>>>>>> I think RDP1 has been started.
>>>>>>> Cannot I fix this?
>>>>>>>
>>>>>>> This problem is that jcmd shows incorrect status when JVMTI agent
>>>>>>> cannot be attached.
>>>>>>> I think this problem should be fixed in 9 GA.
>>>>>>> The users who want.to <http://want.to> attach JVMTI agent want to
>>>>>>> know
>>>>>>> whether it succeed.
>>>>>>>
>>>>>>> Yasumasa
>>>>>>>
>>>>>>>
>>>>>>> 2016/08/29 15:42 "Yasumasa Suenaga" <yasuenag at gmail.com
>>>>>>> <mailto:yasuenag at gmail.com>>:
>>>>>>>
>>>>>>>          This comment no longer matches the code and should be
>>>>>>> deleted:
>>>>>>>
>>>>>>>          2412       // Agent_OnAttach executed so completion
>>>>>>> status is
>>>>>>> JNI_OK
>>>>>>>          2413       st->print_cr("return code: %d", result);
>>>>>>>
>>>>>>>
>>>>>>>      Thanks David!
>>>>>>>      I removed it in new webrev.
>>>>>>>
>>>>>>>        http://cr.openjdk.java.net/~ysuenaga/JDK-8164913/webrev.01/
>>>>>>> <http://cr.openjdk.java.net/~ysuenaga/JDK-8164913/webrev.01/>
>>>>>>>
>>>>>>>
>>>>>>>      Yasumasa
>>>>>>>
>>>>>>>
>>>>>>>      On 2016/08/29 12:59, David Holmes wrote:
>>>>>>>
>>>>>>>          Hi Yasumasa,
>>>>>>>
>>>>>>>          On 28/08/2016 10:47 PM, Yasumasa Suenaga wrote:
>>>>>>>
>>>>>>>              Hi all,
>>>>>>>
>>>>>>>              If we try to attach invalid JVMTI agent via
>>>>>>> JVMTI.agent_load dcmd, we
>>>>>>>              will get
>>>>>>>              "Command executed successfully". However, it implies
>>>>>>> error in
>>>>>>>              JVMTIAgentLoadDCmd.
>>>>>>>
>>>>>>>              This message is from JCmd.java when jcmd does not
>>>>>>> receive
>>>>>>> output from
>>>>>>>              target VM.
>>>>>>>              So we should send error message from
>>>>>>> JVMTIAgentLoadDCmd.
>>>>>>>
>>>>>>>              I uploaded a webrev for it. Could you review it?
>>>>>>>
>>>>>>>
>>>>>>> http://cr.openjdk.java.net/~ysuenaga/JDK-8164913/webrev.00/
>>>>>>> <http://cr.openjdk.java.net/~ysuenaga/JDK-8164913/webrev.00/>
>>>>>>>
>>>>>>>
>>>>>>>          This seems reasonable.
>>>>>>>
>>>>>>>          src/share/vm/prims/jvmtiExport.cpp
>>>>>>>
>>>>>>>          This comment no longer matches the code and should be
>>>>>>> deleted:
>>>>>>>
>>>>>>>          2412       // Agent_OnAttach executed so completion
>>>>>>> status is
>>>>>>> JNI_OK
>>>>>>>          2413       st->print_cr("return code: %d", result);
>>>>>>>
>>>>>>>          Thanks,
>>>>>>>          David
>>>>>>>
>>>>>>>              I cannot access JPRT.
>>>>>>>              So I need a sponsor.
>>>>>>>
>>>>>>>
>>>>>>>              Thanks,
>>>>>>>
>>>>>>>              Yasumasa
>>>>>>>
>>>
>>


More information about the serviceability-dev mailing list