◐ Shell
reader mode source ↗
Skip to content

could not load FFI provider (Centos 7 and lmdbjava 0.8.3) #234

New issue
New issue
@at055612

Description

@at055612

When running lmdbjava 0.8.3 on Centos 7 we are seeing the following error when lmdbjava attempts to load the lmdb library. This is a critical bug as it is preventing all use of LMDB.

It is working fine on 0.8.2 and 0.8.3 when used with other OSs (e.g. arch, alpine).

I believe it is related to this issue on jffi which is a dependency of jnr-ffi as used by lmdbjava.
jnr/jffi#138

It appears that they have fixed the issue so I will raise a PR to uplift jnr-ffi to the latest version.

Exception in thread "main" java.lang.UnsatisfiedLinkError: could not load FFI provider jnr.ffi.provider.jffi.Provider
        at jnr.ffi.provider.InvalidProvider$1.loadLibrary(InvalidProvider.java:49)
        at jnr.ffi.LibraryLoader.load(LibraryLoader.java:420)
        at jnr.ffi.LibraryLoader.load(LibraryLoader.java:399)
        at org.lmdbjava.Library.<clinit>(Library.java:125)
        at org.lmdbjava.Env$Builder.open(Env.java:521)
        at org.lmdbjava.Env$Builder.open(Env.java:547)
        at lmdbjava.testbed.App.run(App.java:44)
        at lmdbjava.testbed.App.main(App.java:25)
Caused by: java.lang.UnsatisfiedLinkError: could not get native definition for type `POINTER`, original error message follows: java.lang.UnsatisfiedLinkError: Unable to execute or load jffi binary stub from `/tmp`. Set `TMPDIR` or Java property `java.io.tmpdir` to a read/write path that is not mounted "noexec".
/xxxxxxxx/xxxxxxxxx/jffi3458157951401511179.so: /lib64/libc.so.6: version `GLIBC_2.27' not found (required by /xxxxxx/xxxxxxx/jffi3458157951401511179.so)
        at com.kenai.jffi.internal.StubLoader.tempLoadError(StubLoader.java:555)
        at com.kenai.jffi.internal.StubLoader.loadFromJar(StubLoader.java:454)
        at com.kenai.jffi.internal.StubLoader.load(StubLoader.java:330)
        at com.kenai.jffi.internal.StubLoader.<clinit>(StubLoader.java:618)
        at java.base/java.lang.Class.forName0(Native Method)
        at java.base/java.lang.Class.forName(Class.java:467)
        at com.kenai.jffi.Init.load(Init.java:68)
        at com.kenai.jffi.Foreign$InstanceHolder.getInstanceHolder(Foreign.java:50)
        at com.kenai.jffi.Foreign$InstanceHolder.<clinit>(Foreign.java:46)
        at com.kenai.jffi.Foreign.getInstance(Foreign.java:104)
        at com.kenai.jffi.Type$Builtin.lookupTypeInfo(Type.java:242)
        at com.kenai.jffi.Type$Builtin.getTypeInfo(Type.java:237)
        at com.kenai.jffi.Type.resolveSize(Type.java:155)
        at com.kenai.jffi.Type.size(Type.java:138)
        at jnr.ffi.provider.jffi.NativeRuntime$TypeDelegate.size(NativeRuntime.java:198)
        at jnr.ffi.provider.AbstractRuntime.<init>(AbstractRuntime.java:48)
        at jnr.ffi.provider.jffi.NativeRuntime.<init>(NativeRuntime.java:77)
        at jnr.ffi.provider.jffi.NativeRuntime.<init>(NativeRuntime.java:49)
        at jnr.ffi.provider.jffi.NativeRuntime$SingletonHolder.<clinit>(NativeRuntime.java:73)
        at jnr.ffi.provider.jffi.NativeRuntime.getInstance(NativeRuntime.java:60)
        at jnr.ffi.provider.jffi.Provider.<init>(Provider.java:29)
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
        at java.base/java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128)
        at java.base/jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:347)
        at java.base/java.lang.Class.newInstance(Class.java:645)
        at jnr.ffi.provider.FFIProvider$SystemProviderSingletonHolder.getInstance(FFIProvider.java:68)
        at jnr.ffi.provider.FFIProvider$SystemProviderSingletonHolder.<clinit>(FFIProvider.java:57)
        at jnr.ffi.provider.FFIProvider.getSystemProvider(FFIProvider.java:35)
        at jnr.ffi.LibraryLoader.create(LibraryLoader.java:89)
        at org.lmdbjava.Library.<clinit>(Library.java:125)
        at org.lmdbjava.Env$Builder.open(Env.java:521)
        at org.lmdbjava.Env$Builder.open(Env.java:547)
        at lmdbjava.testbed.App.run(App.java:44)
        at lmdbjava.testbed.App.main(App.java:25)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions