On Wed, 9 Jun 2021 13:03:32 GMT, Kevin Walls <kev...@openjdk.org> wrote:

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

Hi Kevin,
This looks okay to me.
How do you test it to make sure no regressions are introduced?
Thanks,
Serguei

-------------

Marked as reviewed by sspitsyn (Reviewer).

PR: https://git.openjdk.java.net/jdk/pull/4418

Reply via email to