Skip to content

Netty Native Transport Crash with PAPIProxyBridge on Ubuntu 22.04 #231

@purejosh

Description

@purejosh

Environment

  • OS: Ubuntu 22.04 (glibc)
  • Java: OpenJDK 21 (compatibility level set to JAVA_17 in Fabric Loader)
  • Minecraft: 1.20.1
  • Fabric Loader: 0.16.14
  • Fabric API: 0.92.6+1.20.1
  • Mod: PAPIProxyBridge-Fabric 1.8.4
  • Other mods: Large pack (~473 mods), including Krypton, C2ME, SimplySkills, SimplySwords, etc.

Description

When running the server with PAPIProxyBridge-Fabric 1.8.4, the server crashes repeatedly with Netty epoll JNI errors. The crash occurs on both Java 21 and Java 17.

Crash Log (excerpt)

[13:05:18] [Netty Epoll Server IO #0/WARN]: An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception.
java.lang.NoClassDefFoundError: Could not initialize class io.netty.channel.unix.Errors
        at io.netty.channel.unix.Socket.accept(Socket.java:403) ~[netty-transport-native-unix-common-4.1.82.Final.jar:?]
        at io.netty.channel.epoll.AbstractEpollServerChannel$EpollServerSocketUnsafe.epollInReady(AbstractEpollServerChannel.java:112) ~[netty-transport-classes-epoll-4.1.82.Final.jar:?]
        at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe$1.run(AbstractEpollChannel.java:425) ~[netty-transport-classes-epoll-4.1.82.Final.jar:?]
        at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:173) ~[PAPIProxyBridge-Fabric-1.8.4+mc.1.20.1%20(1).jar:?]
        at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:166) ~[PAPIProxyBridge-Fabric-1.8.4+mc.1.20.1%20(1).jar:?]
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472) ~[PAPIProxyBridge-Fabric-1.8.4+mc.1.20.1%20(1).jar:?]
        at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:406) ~[netty-transport-classes-epoll-4.1.82.Final.jar:?]
        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:998) ~[PAPIProxyBridge-Fabric-1.8.4+mc.1.20.1%20(1).jar:?]
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[PAPIProxyBridge-Fabric-1.8.4+mc.1.20.1%20(1).jar:?]
        at java.lang.Thread.run(Thread.java:1583) ~[?:?]
Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.UnsatisfiedLinkError: 'int io.netty.channel.unix.ErrorsStaticallyReferencedJniMethods.errorEHOSTUNREACH()' [in thread "Netty Epoll Server IO #0"]
        at io.netty.channel.unix.ErrorsStaticallyReferencedJniMethods.errorEHOSTUNREACH(Native Method) ~[PAPIProxyBridge-Fabric-1.8.4+mc.1.20.1%20(1).jar:?]
        at io.netty.channel.unix.Errors.<clinit>(Errors.java:62) ~[PAPIProxyBridge-Fabric-1.8.4+mc.1.20.1%20(1).jar:?]
        at io.netty.channel.unix.Socket.accept(Socket.java:403) ~[netty-transport-native-unix-common-4.1.82.Final.jar:?]
        at io.netty.channel.epoll.AbstractEpollServerChannel$EpollServerSocketUnsafe.epollInReady(AbstractEpollServerChannel.java:112) ~[netty-transport-classes-epoll-4.1.82.Final.jar:?]
        at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:499) ~[netty-transport-classes-epoll-4.1.82.Final.jar:?]
        at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:397) ~[netty-transport-classes-epoll-4.1.82.Final.jar:?]
        ... 3 more

Workaround

Adding the JVM flag -Dio.netty.transport.noNative=true allows the server to start and run normally, bypassing native epoll transport.

Expected Behavior

The mod should run without requiring -Dio.netty.transport.noNative=true on supported Linux environments (Ubuntu 22.04 with glibc).

Steps to Reproduce

  1. Run Fabric server with Java 17 or 21 on Ubuntu 22.04.
  2. Install PAPIProxyBridge-Fabric 1.8.4.
  3. Start the server.
  4. Observe crash loop with Netty epoll JNI errors.

Additional Notes

  • Removing PAPIProxyBridge resolves the crash.
  • Other mods and Fabric Loader/API are up to date.
  • Large modpack present, but crash is isolated to PAPIProxyBridge.

Request

Is PAPIProxyBridge currently incompatible with Netty native transport on Linux? Can support for Java 21 and native epoll be added, or should users rely on the NIO fallback flag?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions