RFR: JDK-8315706: com/sun/tools/attach/warnings/DynamicLoadWarningTest.java real fix for failure on AIX
David Holmes
dholmes at openjdk.org
Tue Sep 12 05:01:40 UTC 2023
On Wed, 6 Sep 2023 08:18:45 GMT, JoKern65 <duke at openjdk.org> wrote:
> After push of [JDK-8307478](https://bugs.openjdk.org/browse/JDK-8307478) , the following test started to fail on AIX :
> com/sun/tools/attach/warnings/DynamicLoadWarningTest.java;
> The problem was described in [JDK-8309549](https://bugs.openjdk.org/browse/JDK-8309549) with a first try of a fix.
> A second fix via [JDK-8310191](https://bugs.openjdk.org/browse/JDK-8310191) was necessary.
> Both fixes just disable the specific subtest on AIX, without correction of the root cause.
> The root cause is, that dlopen() on AIX returns different handles every time, even if you load a library twice. There is no official AIX API available to get this information on a different way.
> My proposal is, to use the stat64x API with the fields st_device and st_inode. After a dlopen() the stat64x() API is called additionally to get this information which is then stored parallel to the library handle in the jvmtiAgent. For AIX we then can compare these values instead of the library handle and get the same functionality as on linux.
I would much rather see an AIX solution that was in the AIX version of `os::dll_load` rather than having to pollute the shared JVMTI code. I'm not sure how best to achieve that - it may not be possible to hide it completely - but we should be able to refactor things so `stat64x_LIBPATH` is defined in AIX code, and its use is via a helper so the code is only written once. Then we would only need a handful of `AIX_ONLY(...)` statements.
src/hotspot/share/prims/jvmtiAgentList.cpp line 251:
> 249: while (it.has_next()) {
> 250: JvmtiAgent* const agent = it.next();
> 251: if (!agent->is_static_lib() && device && inode &&
Style nit: we don't use implicit booleans so check `device != 0` and `inode != 0` explicitly please.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/15583#issuecomment-1714969165
PR Review Comment: https://git.openjdk.org/jdk/pull/15583#discussion_r1322387181
More information about the hotspot-dev
mailing list