8032456: vm/jni/Miscellaneous/misc001/misc00101m1/misc00101m1.html failing on OS X
Mandy Chung
mandy.chung at oracle.com
Fri Jan 24 17:43:16 UTC 2014
This patch looks fine.
For JDK 9, it might be worth considering using the common code via JVM
functions to replace getProcessHandle, JDK_FindJvmEntry,
JDK_InitJvmEntry for native symbol lookup (jni_util.h and jdk_util.h)
Mandy
On 1/24/2014 3:00 AM, Alan Bateman wrote:
>
> I need a reviewer to fix an issue with the changes in JDK 8 to support
> statically linked JNI libraries. The issue arises with tests that have
> both JNI_OnLoad and JNI_OnLoad_libname functions defined, and code
> attempts to load the library more than once. In that scenario then
> both functions are called.
>
> Staffan Larsen did the hard work in JDK-8031968 where he observed that
> dlopen(NULL, RTLD_LAZY) behaves differently on OS X and that we should
> be using dlopen(NULL, RTLD_FIRST) to get the handle of the main
> program. Staffan has fixed this in the hotspot repository for JVM TI
> agent libraries, we need to do the same in the libjava code used by
> ClassLoader's native methods.
>
> Note that the include of string.h is not directly part of the issue
> here, instead it's just a drive-by fix to the warning related to the
> strcat usages.
>
> -Alan
>
>
> diff --git a/src/solaris/native/common/jni_util_md.c
> b/src/solaris/native/common/jni_util_md.c
> --- a/src/solaris/native/common/jni_util_md.c
> +++ b/src/solaris/native/common/jni_util_md.c
> @@ -23,6 +23,8 @@
> * questions.
> */
>
> +#include <string.h>
> +
> #include "jni.h"
> #include "jni_util.h"
> #include "dlfcn.h"
> @@ -40,7 +42,11 @@
> if (procHandle != NULL) {
> return procHandle;
> }
> - procHandle = (void*)dlopen(NULL, RTLD_LAZY);
> +#ifdef __APPLE__
> + procHandle = (void*)dlopen(NULL, RTLD_FIRST);
> +#else
> + procHandle = (void*)dlopen(NULL, RTLD_LAZY);
> +#endif
> return procHandle;
> }
>
More information about the core-libs-dev
mailing list