jvm-profiling-tools / perf-map-agent

A java agent to generate method mappings to use with the linux `perf` tool
GNU General Public License v2.0
1.64k stars 260 forks source link

Trouble to attach with high PID value #89

Open ymartin59 opened 3 years ago

ymartin59 commented 3 years ago

I am facing this issue with trying to load agent into JVM when system process PID out of integer range:

/usr/lib/jvm/java-8-oracle/bin/java -cp attach-main.jar:/usr/lib/jvm/java-8-oracle/lib/tools.jar net.virtualvoid.perf.AttachOnce 115323
Exception in thread "main" java.io.IOException: Non-numeric value found - int expected
    at sun.tools.attach.HotSpotVirtualMachine.readInt(HotSpotVirtualMachine.java:299)
    at sun.tools.attach.HotSpotVirtualMachine.loadAgentLibrary(HotSpotVirtualMachine.java:63)
    at sun.tools.attach.HotSpotVirtualMachine.loadAgentPath(HotSpotVirtualMachine.java:88)
    at net.virtualvoid.perf.AttachOnce.loadAgent(AttachOnce.java:51)
    at net.virtualvoid.perf.AttachOnce.main(AttachOnce.java:34)

Is there any other work-around than reboot Linux?

Generally speaking, is this "integer" PID restriction for hotspot VM attachment has been fixed in any recent Java 8 or OpenJDK version?

jrudolph commented 3 years ago

When I saw error like this the last time, it was a mismatch between the target JDK and the tools.jar. The attach protocol is not guaranteed to be compatible between JDKs.

For me using "long" (> 65536) PIDs works in general.