RFR: 8228343: JCMD and attach fail to work across Linux Container boundary [v2]
Kevin Walls
kevinw at openjdk.java.net
Wed Jun 9 13:03:32 UTC 2021
> 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
More information about the serviceability-dev
mailing list