RFR: JDK-8315706: com/sun/tools/attach/warnings/DynamicLoadWarningTest.java real fix for failure on AIX [v3]
Alan Bateman
alanb at openjdk.org
Thu Sep 14 09:46:44 UTC 2023
On Thu, 14 Sep 2023 09:20:24 GMT, Joachim Kern <jkern 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.
>
> Joachim Kern has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains three additional commits since the last revision:
>
> - Merge branch 'openjdk:master' into JDK-8315706
> - try to improve code following Davids suggestions and do some cosmetic changes
> - JDK-8315706
No objection to doing this but just to repeat again that the spec does not not require that warnings are de-duplicated. This means the change is not necessary, only happens the case where someone is loading the same agent dynamically many times into a VM running on AIX, it just means there will be one rather than N warnings in the logs.
src/hotspot/share/prims/jvmtiAgent.hpp line 48:
> 46: #ifdef AIX
> 47: long _inode;
> 48: long _device;
How are dev_t and ino_t defined on AIX, I'm wondering if long is okay here.
-------------
PR Review: https://git.openjdk.org/jdk/pull/15583#pullrequestreview-1626479247
PR Review Comment: https://git.openjdk.org/jdk/pull/15583#discussion_r1325687093
More information about the serviceability-dev
mailing list