-
Enhancement
-
Resolution: Fixed
-
P4
-
21, 22, 23
-
b06
-
aix
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8325547 | 22.0.1 | Joachim Kern | P4 | Resolved | Fixed | b04 |
JDK-8326156 | 21.0.3 | Joachim Kern | P4 | Resolved | Fixed | b04 |
On AIX, repeated calls to dlopen referring to the same shared library may result in different, unique dl handles to be returned from libc. In that it differs from typical libc implementations that cache dl handles.
This causes problems in the JVM with code that assumes equality of handles. One such problem is in the JVMTI agent handler. That problem was fixed with a local fix to said handler (
We propose a different, cleaner way of handling this:
- Handle this entirely inside the AIX versions of os::dll_load and os::dll_unload.
- Cache dl handles; repeated opening of a library should return the cached handle.
- Increase handle-local ref counter on open, Decrease it on close
- Make sure calls to os::dll_load are matched to os::dll_unload (See
This way we mimic dl handle equality as it is implemented on other platforms, and this works for all callers of os::dll_load.
- backported by
-
JDK-8325547 [AIX] Find a better way to mimic dl handle equality
- Resolved
-
JDK-8326156 [AIX] Find a better way to mimic dl handle equality
- Resolved
- relates to
-
JDK-8329850 [AIX] Allow loading of different members of same shared library archive
- Resolved
-
JDK-8315706 com/sun/tools/attach/warnings/DynamicLoadWarningTest.java real fix for failure on AIX
- Resolved
-
JDK-8320005 Allow loading of shared objects with .a extension on AIX
- Resolved
-
JDK-8320830 [AIX] Dont mix os::dll_load() with direct dlclose() calls
- Resolved
- links to
-
Commit openjdk/jdk21u-dev/4d4c47d9
-
Commit openjdk/jdk22u/ce8d1c9b
-
Commit openjdk/jdk/b8ae4a8c
-
Review openjdk/jdk21u-dev/252
-
Review openjdk/jdk22u/40
-
Review openjdk/jdk/16920