Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error attaching to process: sun.jvm.hotspot.debugger.DebuggerException: cannot open binary file

Tags:

java

ubuntu

jmap

When I use jmap to get the heap info about a process, I got error like that:

$jmap -heap process_id

Attaching to process ID process_id, please wait...
Error attaching to process: sun.jvm.hotspot.debugger.DebuggerException: cannot open binary
file
sun.jvm.hotspot.debugger.DebuggerException: sun.jvm.hotspot.debugger.DebuggerException:
cannot open binary file    

OS: Ubuntu 14.04

I have solved another error (DebuggerException: Can't attach to the process) by updating kernel.yama.ptrace_scope = 0.

See: https://bugs.openjdk.java.net/browse/JDK-7050524

like image 462
infraio Avatar asked Aug 02 '16 01:08

infraio


4 Answers

I faced the same issue, however when I su'd to the correct user having the relevant permissions the issue went away.

like image 176
hakish Avatar answered Oct 11 '22 05:10

hakish


Not directly related to the question asked. But, I encountered a similar error while using the jstack command while taking the thread dump of a java process. Let's say the pid of the java process for which I wanted thread dump is 1234.

I had used the command jstack -l 1234 /home/users/a/thread-dump.txt

What I missed in the above command is the redirection operator(>). The correct version of the command is

jstack -l 1234  > /home/users/a/thread-dump.txt

Maybe it helps someone :)

like image 29
Ajay Kr Choudhary Avatar answered Oct 11 '22 03:10

Ajay Kr Choudhary


This will also happen if you attempt to attach to an ineligible process so it's a good idea to reconfirm your pid.

For example, a friend of mine got this when they attempted to attach to the jps process they used to search for eligible pids ;).

like image 5
eebbesen Avatar answered Oct 11 '22 05:10

eebbesen


In our case, the java process was using .../JAVA_HOME/jre/bin/java binary and the jmap process was using .../JAVA_HOME/bin/jmap binary.

Once we changed java process to use .../JAVA_HOME/bin/java binary, then the issue got resolved. We were able to run the jmap successfully.

Key is to use run the java process using JDK java binary instead of JRE java binary.

like image 3
user1039322 Avatar answered Oct 11 '22 03:10

user1039322