RFR: JDK-8147388: Add diagnostic commands to attach JVMTI agent.

Dmitry Samersoff dmitry.samersoff at oracle.com
Mon Jan 18 10:38:13 UTC 2016


Yasumasa,

1. It might be better to have one jcmd to run both java and native java
agent. If agent library name ends with ".jar" we can assume it's java agent.

2. Please get rid of malloc/free and check _libpath.value() for NULL at
ll. 295 and below.


if (_libpath.value() == NULL) {
   error ...
}

if (_option.value() == NULL) {
   JvmtiExport::load_agent_library("instrument",
                "false", _libpath.value(), output());
  return;
}

size_t option_len = \
   strlen(_libpath.value()) + strlen(_option.value()) + 1;

char options[option_len];

....

-Dmitry


On 2016-01-15 16:33, Yasumasa Suenaga wrote:
> Hi,
> 
> I added permissions and tests in new webrev:
>   http://cr.openjdk.java.net/~ysuenaga/JDK-8147388/webrev.01/
> 
> Two tests (LoadAgentDcmdTest, LoadJavaAgentDcmdTest) work fine.
> 
> 
> Thanks,
> 
> Yasumasa
> 
> 
> On 2016/01/15 17:20, Staffan Larsen wrote:
>> This is a good improvement overall.
>>
>> The new diagnostic commands need to have proper permissions set:
>>
>>     static const JavaPermission permission() {
>>        JavaPermission p = {"java.lang.management.ManagementPermission",
>>                           “control", NULL};
>>       return p;
>>    }
>>
>> And as David said: tests! See hotspot/test/serviceability/dcmd/jvmti.
>>
>> Thanks,
>> /Staffan
>>
>>> On 14 jan. 2016, at 15:00, Yasumasa Suenaga <yasuenag at gmail.com> wrote:
>>>
>>> Hi all,
>>>
>>> We can use Attach API to attach JVMTI agent to live process.
>>> However, we have to write Java code for it.
>>>
>>> If we can attach JVMTI agents through jcmd, it is very useful.
>>> So I want to add two new diagnostic commands:
>>>
>>> * JVMTI.agent_load: Load JVMTI native agent.
>>> * JVMTI.javaagent_load: Load JVMTI java agent.
>>>
>>> I maintain two JVMTI agents - HeapStats [1] and JLivePatcher [2].
>>> [1] is native agent, [2] is java agent.
>>> They provide a program for attaching to live process.
>>>
>>> I guess that various JVMTI agents provide own attach mechanism like
>>> them.
>>> I think that we should provide general way to attach.
>>>
>>> I've uploaded webrev. Could you review it?
>>>   http://cr.openjdk.java.net/~ysuenaga/JDK-8147388/webrev.00/
>>>
>>> I'm jdk9 committer, however I cannot access JPRT.
>>> So I need a sponsor.
>>>
>>>
>>> Thanks,
>>>
>>> Yasumasa
>>>
>>>
>>> [1] http://icedtea.classpath.org/wiki/HeapStats
>>> [2] https://github.com/YaSuenag/jlivepatcher  (in Japanese)
>>


-- 
Dmitry Samersoff
Oracle Java development team, Saint Petersburg, Russia
* I would love to change the world, but they won't give me the source code.


More information about the serviceability-dev mailing list