Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8320890

[AIX] Find a better way to mimic dl handle equality

    XMLWordPrintable

Details

    • b06
    • aix

    Backports

      Description


        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 (JDK-8315706). However, this fix causes follow-up problems since it assumes that the file name passed to `os::dll_load()` is the file that has been opened. It prevents efficient, os_aix.cpp-local workarounds for other AIX issues like the *.so/*.a duality. See JDK-8320005. As such, it is a hack that causes other, more uglier hacks to follow (see discussion of https://github.com/openjdk/jdk/pull/16604).

        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 JDK-8320830).

        This way we mimic dl handle equality as it is implemented on other platforms, and this works for all callers of os::dll_load.

        Attachments

          Issue Links

            Activity

              People

                jkern Joachim Kern
                stuefe Thomas Stuefe
                Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                  Created:
                  Updated:
                  Resolved: