looking at the "attacher" code in jdk.attach it certainly does not
appear to attempt to "attach" via cwd, so I would say that the
"attachee" code to check this is redundant, unless there is a backwards
compatibility/interoperability issue that requires this where
an early JDK "attacher" might attempt to rendezvous via cwd...
Rgds
- Larry
p.s also "littering" arbitrary directories with .attach files seems
"rude" :)
On 3/4/24 9:38 PM, David Holmes wrote:
Hi Sonia,
Adding serviceability and Alan Bateman ...
On 5/03/2024 2:35 am, Sonia Zaldana Calles wrote:
Hi folks,
I’m working on JDK-8324683 [0].
I’m hoping to unify the code for attachListener_<os>.cpp for posix
platforms.
While reviewing linux against bsd, I noted a difference in
AttachListener::is_init_trigger().
Both linux and AIX implementations, first try “<current
dir>/.attach<pid>” and failing that, attempt “/tmp/.attach<pid>”.
[1][2]
On the other hand, bsd doesn’t attempt “/tmp/.attach<pid>” [3].
I think you meant it doesn't attempt <current dir>/.attach<pid>
I have been trying to do a bit of digging to see if this disparity
was intentional but I have found that this change precedes the MacOS
port, so I’m having trouble coming to a conclusion.
Looking at the history here:
https://hg.openjdk.org/macosx-port/macosx-port/hotspot/log/407770c31c18/src/os/bsd/vm/attachListener_bsd.cpp
The very first load of the file did check the current directory too:
https://hg.openjdk.org/macosx-port/macosx-port/hotspot/rev/be94a5de4d32
but that was removed in the very next upload (though they never fixed
the comment preceding the code):
https://hg.openjdk.org/macosx-port/macosx-port/hotspot/rev/9f1dd0b1d28c
To know why you would have to ask the person that did it I'm afraid.
I was wondering if perhaps anyone on this list could shed some light
on this matter and whether it would be acceptable to do the alternate
path on BSD too.
The init trigger mechanism was added by Alan under:
https://bugs.openjdk.org/browse/JDK-6272307
I get the sense that having the well-known file in the working
directory was actually a bit of an anachronism. That may be why the
macOS folk didn't bother with it (speculation on my part). AIX simply
copied the Linux code.
Whether it would be okay/harmless/safe to have macOS/BSD also check
there I really can't say. I'm not sure if we have code that would ever
write the file to the target cwd these days? Hopefully Alan or current
serviceability folk can say more.
Cheers,
David
-----
Thanks for your help,
Sonia
[0] https://bugs.openjdk.org/browse/JDK-8324683
<https://bugs.openjdk.org/browse/JDK-8324683>
[1]
https://github.com/openjdk/jdk/blob/master/src/hotspot/os/linux/attachListener_linux.cpp#L521C3-L529C4
<https://github.com/openjdk/jdk/blob/master/src/hotspot/os/linux/attachListener_linux.cpp#L521C3-L529C4>
[2]
https://github.com/openjdk/jdk/blob/master/src/hotspot/os/aix/attachListener_aix.cpp#L551C2-L559C4
<https://github.com/openjdk/jdk/blob/master/src/hotspot/os/aix/attachListener_aix.cpp#L551C2-L559C4>
[3]
https://github.com/openjdk/jdk/blob/master/src/hotspot/os/bsd/attachListener_bsd.cpp#L520C2-L522C4
<https://github.com/openjdk/jdk/blob/master/src/hotspot/os/bsd/attachListener_bsd.cpp#L520C2-L522C4>
--
Sonia Zaldaña Calles
Software Engineer, OpenJDK
Red Hat