On Mon, 15 Apr 2024 08:30:57 GMT, Suchismith Roy <s...@openjdk.org> wrote:
>>> > Thanks! This looks like a good idea. Only the directory handling needs >>> > some modification. This version tries to load >>> > "test-support/jtreg_test_jdk_java_lang_RuntimeTests_loadLibrary_aix/scratch/0/native/libawt_headless.so", >>> > but it should load >>> > "test-support/jtreg_test_jdk_java_lang_RuntimeTests_loadLibrary_aix/java/lang/RuntimeTests/loadLibrary/aix/AIXLoadLibraryDriver/native/libfoobar.a". >>> >>> > Thanks! This looks like a good idea. Only the directory handling needs >>> > some modification. This version tries to load >>> > "test-support/jtreg_test_jdk_java_lang_RuntimeTests_loadLibrary_aix/scratch/0/native/libawt_headless.so", >>> > but it should load >>> > "test-support/jtreg_test_jdk_java_lang_RuntimeTests_loadLibrary_aix/java/lang/RuntimeTests/loadLibrary/aix/AIXLoadLibraryDriver/native/libfoobar.a". >>> >>> I am facing the same error. But i do not understand why is it resolved to >>> libawt_headless.so . >> >> stdout: [attempting to load library foobar >> ]; >> stderr: [Exception in thread "main" java.lang.UnsatisfiedLinkError: Can't >> load library: >> /home/hotspot/openjdk/jdk-suchi/jdk1/build/aix-ppc64-server-fastdebug/test-support/jtreg_test_jdk_java_lang_RuntimeTests_loadLibrary_aix_LoadAIXLibraryFromArchiveObject_java/scratch/0/native/libawt_headless.so >> at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2406) >> at java.base/java.lang.Runtime.load0(Runtime.java:852) >> at java.base/java.lang.System.load(System.java:2030) >> at java.base/jdk.internal.loader.NativeLibraries.load(Native Method) >> at >> java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:331) >> at >> java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:197) >> at >> java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:139) >> at >> java.base/jdk.internal.loader.NativeLibraries.findFromPaths(NativeLibraries.java:259) >> at >> java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:251) >> at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2435) >> at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:916) >> at java.base/java.lang.System.loadLibrary(System.java:2068) >> at >> LoadAIXLibraryFromArchiveObject$LoadLibraryApp.main(LoadAIXLibraryFromArchiveObject.java:52) >> ] >> exitValue = 1 > >> > > Thanks! This looks like a good idea. Only the directory handling needs >> > > some modification. This version tries to load >> > > "test-support/jtreg_test_jdk_java_lang_RuntimeTests_loadLibrary_aix/scratch/0/native/libawt_headless.so", >> > > but it should load >> > > "test-support/jtreg_test_jdk_java_lang_RuntimeTests_loadLibrary_aix/java/lang/RuntimeTests/loadLibrary/aix/AIXLoadLibraryDriver/native/libfoobar.a". >> > >> > >> > > Thanks! This looks like a good idea. Only the directory handling needs >> > > some modification. This version tries to load >> > > "test-support/jtreg_test_jdk_java_lang_RuntimeTests_loadLibrary_aix/scratch/0/native/libawt_headless.so", >> > > but it should load >> > > "test-support/jtreg_test_jdk_java_lang_RuntimeTests_loadLibrary_aix/java/lang/RuntimeTests/loadLibrary/aix/AIXLoadLibraryDriver/native/libfoobar.a". >> > >> > >> > I am facing the same error. But i do not understand why is it resolved to >> > libawt_headless.so . >> >> stdout: [attempting to load library foobar ]; stderr: [Exception in thread >> "main" java.lang.UnsatisfiedLinkError: Can't load library: >> /home/hotspot/openjdk/jdk-suchi/jdk1/build/aix-ppc64-server-fastdebug/test-support/jtreg_test_jdk_java_lang_RuntimeTests_loadLibrary_aix_LoadAIXLibraryFromArchiveObject_java/scratch/0/native/libawt_headless.so >> at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2406) at >> java.base/java.lang.Runtime.load0(Runtime.java:852) at >> java.base/java.lang.System.load(System.java:2030) at >> java.base/jdk.internal.loader.NativeLibraries.load(Native Method) at >> java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:331) >> at >> java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:197) >> at >> java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:139) >> at >> java.base/jdk.internal.loader.NativeLibraries.findFromPaths(NativeLibraries.java:259) >> at java.base/jdk.internal.loader.NativeLibr aries.loadLibrary(NativeLibraries.java:251) at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2435) at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:916) at java.base/java.lang.System.loadLibrary(System.java:2068) at LoadAIXLibraryFromArchiveObject$LoadLibraryApp.main(LoadAIXLibraryFromArchiveObject.java:52) ] exitValue = 1 > > @jaikiran I see it is attempting to load foobar. But for some reason it is > referring to different .so file. Some issue with usage of > ProcessTools/ProcessBuilder ? Hello @suchismith1993, I haven't looked too deep, but a quick check of the JDK code suggests that the library you have chosen for this test (`libawt`) appears to have dependencies on some other libraries too. The `libawt_headless.so` appears to be coming from here https://github.com/openjdk/jdk/blob/master/src/java.desktop/unix/native/libawt/awt/awt_LoadLibrary.c#L88 (it might even need `libawt_xawt.so`). I think all you have to do is copy over these additional library files as `.so` files from the JDK installation directory into the test specific directory. Either that or maybe pick a library that doesn't have any dependency. ------------- PR Comment: https://git.openjdk.org/jdk/pull/17945#issuecomment-2056258141