Description
Provide complete information about the problem
- Version of JNA and related jars
jna-platform-5.9.0.jar
- Version and vendor of the java virtual machine
SAPJVM 8 on linux s390x
- Operating system
Linux s390x (issue is independent of distro, test run was on SLES)
- System architecture (CPU type, bitness of the JVM)
s390x also known as zarch_64 (64bit)
- Complete description of the problem
The SAPJVM8 JDK8 port on linux s390x unfortunately has system property os.arch == zArch_64 and not s390x.
This leads to an UnsatisfiedLinkError when running the Renaissance Java benchmark.
Probably adding a architecture name mapping might help to solve the issue , see
jna/src/com/sun/jna/Platform.java
Line 237 in 5ac6161
static String getCanonicalArchitecture(String arch, int platform) {
arch = arch.toLowerCase().trim();
if ("zarch_64".equals(arch)) {
arch = "s390x";
}
- Steps to reproduce
run the renaissance benchmark on Linux s390x, sub benchmark db-shootout
sapjvm_8/bin/java -jar renaissance-gpl-0.13.0-4-g2755c79.jar db-shootout
java.lang.UnsatisfiedLinkError: Native library (com/sun/jna/linux-zarch_64/libjnidispatch.so) not found in resource path
...
at com.sun.jna.Native.loadNativeDispatchLibraryFromClasspath(Native.java:1033)
at com.sun.jna.Native.loadNativeDispatchLibrary(Native.java:989)
at com.sun.jna.Native.(Native.java:195)
at net.openhft.chronicle.hash.impl.util.jna.PosixFallocate.(PosixFallocate.java:18)
at net.openhft.chronicle.hash.impl.VanillaChronicleHash.map(VanillaChronicleHash.java:977)
at net.openhft.chronicle.hash.impl.VanillaChronicleHash.createMappedStoreAndSegments(VanillaChronicleHash.java:485)
at net.openhft.chronicle.map.ChronicleMapBuilder.createWithNewFile(ChronicleMapBuilder.java:1748)
at net.openhft.chronicle.map.ChronicleMapBuilder.createWithFile(ChronicleMapBuilder.java:1652)
at net.openhft.chronicle.map.ChronicleMapBuilder.createPersistedTo(ChronicleMapBuilder.java:1552)
at org.lmdbjava.bench.Chronicle$CommonChronicleMap.setup(Chronicle.java:122)
at org.lmdbjava.bench.Chronicle$Reader.setup(Chronicle.java:204)
at org.renaissance.database.DbShootout.setUpBeforeAll(DbShootout.scala:65)
at org.renaissance.harness.ExecutionDriver.executeBenchmark(ExecutionDriver.java:82)
at org.renaissance.harness.RenaissanceSuite$.$anonfun$runBenchmarks$1(RenaissanceSuite.scala:140)
at org.renaissance.harness.RenaissanceSuite$.$anonfun$runBenchmarks$1$adapted(RenaissanceSuite.scala:136)
at scala.collection.immutable.List.foreach(List.scala:333)
at org.renaissance.harness.RenaissanceSuite$.runBenchmarks(RenaissanceSuite.scala:136)
at org.renaissance.harness.RenaissanceSuite$.main(RenaissanceSuite.scala:117)
at org.renaissance.harness.RenaissanceSuite.main(RenaissanceSuite.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.renaissance.core.Launcher.loadAndInvokeHarnessClass(Launcher.java:114)
at org.renaissance.core.Launcher.launchHarnessClass(Launcher.java:73)
at org.renaissance.core.Launcher.main(Launcher.java:37)
See also the issue renaissance-benchmarks/renaissance#296 (comment)
at the renaissance-benchmarks suite . There the renaissance-gpl-0.13.0-4-g2755c79.jar can be found .