> Since 8214300, jcmd cannot attach to a Java process in a docker container. > > That change started using a canonicalized File to create the .attach_pidXXX > file. For a target process in a container, it will follow a symlink that is > likely not the same as for the target process. e.g. follow a symlink to a > cwd of / which is not the same directory for the container host, as it is > within the container. Containerized VM never sees the file, never creates > the socket file, the attach times out and fails. > > To keep the 8214300 change working for non-container situations, we can keep > a canonical version of the attach File to use for deleting. > > For containers there will remain the problem 8214300 describes, although it > is unlikely: if you start the attach to a containerized VM, and it then > exits, we can't delete the .attach_pidXXX file. Neither the /proc/PID/cwd or > canonical form are any use. > > (Possibly leaving a .attach_pidXXX file if the target dies in that small > window is better than the current situation.) > > Here I'm suggesting the same change on AIX, although I can't build/test that. > I'm expecting it has the same problem, as /proc/pid/cwd is still a symlink.
Kevin Walls has updated the pull request incrementally with one additional commit since the last revision: One less File reference. ------------- Changes: - all: https://git.openjdk.java.net/jdk/pull/4418/files - new: https://git.openjdk.java.net/jdk/pull/4418/files/b3d76d54..6c023f6f Webrevs: - full: https://webrevs.openjdk.java.net/?repo=jdk&pr=4418&range=01 - incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=4418&range=00-01 Stats: 8 lines in 2 files changed: 0 ins; 2 del; 6 mod Patch: https://git.openjdk.java.net/jdk/pull/4418.diff Fetch: git fetch https://git.openjdk.java.net/jdk pull/4418/head:pull/4418 PR: https://git.openjdk.java.net/jdk/pull/4418