infraio
infraio

Reputation: 271

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

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

Upvotes: 27

Views: 61621

Answers (5)

Christoph Bimminger
Christoph Bimminger

Reputation: 1018

I had the same issue with jstack. It turned out that I wasn't using Oracle JRE but OpenJDK as runtime for the process, but had only Oracle's JDK installed. Oracle's jstack cannot access an OpenJDK process. See also Does OpenJDK have a tool similar to jstack (Oracle Java)?

Upvotes: 0

user1039322
user1039322

Reputation: 71

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.

Upvotes: 4

Ajay Kr Choudhary
Ajay Kr Choudhary

Reputation: 1372

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 :)

Upvotes: 19

eebbesen
eebbesen

Reputation: 5148

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 ;).

Upvotes: 5

hakish
hakish

Reputation: 4048

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

Upvotes: 32

Related Questions