Skip to content

[Bug] StacklessClosedChannelException spam on client timeout when using Ambassador & Simple Voice Chat via Velocity #79

Description

@TNT44777

Description

When a player connected to a backend server through Velocity times out (e.g., unplugging their ethernet cable), the proxy console is flooded with io.netty.channel.StacklessClosedChannelException errors.

This issue appears to be related to the interaction between the Ambassador and Simple Voice Chat plugins.

  • On the Forge backend, the error occurs when Ambassador is enabled and the client times out.
  • On the Fabric backend, the exact same error occurs, but only if both Simple Voice Chat and Ambassador are enabled simultaneously.

Modpack Links


Environment

Client Setup:

  • OS: Windows 11
  • Minecraft Version: 1.20.1
  • Mod Loader: Forge
  • Problematic Mods: Simple Voice Chat / Ambassador (Proxy-side interaction)

Proxy Setup:

  • OS: Ubuntu 24.04 LTS
  • Proxy Software & Version: Velocity 3.5.0-SNAPSHOT (git-1b64a70)
  • Java Version: Java 22
  • Proxy Plugins:
    • Ambassador-Velocity-1.4.5-all.jar
    • LiteBans.jar
    • LuckPerms-Velocity-5.5.9.jar
    • minimotd-velocity-2.2.2.jar
    • ServerSwitcher-1.2.2.jar
    • TAB.v5.5.0.jar
    • VelocityScoreboardAPI.v1.1.7.jar
    • voicechat-velocity-2.6.18.jar

Backend Server Setup:

  • Server Software: Forge 1.20.1 / Fabric 26.1.2
  • Java Version: Fabric = Java 25/Forge = Java 21
  • Server Flags: java -Xms128M -Xmx{{SERVER_MEMORY}}M -XX:+UseG1GC -XX:G1HeapRegionSize=4M -Dvelocity.packet-decode-logging=true -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -XX:MaxInlineLevel=15 -jar {{SERVER_JARFILE}}

Steps to Reproduce

  1. Set up a Velocity proxy routing to both a Forge and a Fabric backend server.
  2. Ensure both the Ambassador and Simple Voice Chat plugins are installed and enabled on the proxy.
  3. Connect a client to the Forge server.
  4. Force a connection timeout (e.g., unplug the RJ-45 ethernet cable).
  5. Observe the proxy console flooding with StacklessClosedChannelException errors.
  6. Connect to the Fabric server and repeat the timeout process; observe that the same error occurs (only if both VC and Ambassador are enabled).

Logs & Error Outputs

Velocity Proxy Console Error Snippet:

io.netty.channel.StacklessClosedChannelException
        at io.netty.channel.AbstractChannel.close(ChannelPromise)(Unknown Source) ~[velocity.jar:3.5.0-SNAPSHOT (git-1b64a70a-b601)]
[02:37:53 WARN]: Exception caught while decoding frame for /just.an.ip.address:30714
io.netty.channel.StacklessClosedChannelException
        at io.netty.channel.AbstractChannel.close(ChannelPromise)(Unknown Source) ~[velocity.jar:3.5.0-SNAPSHOT (git-1b64a70a-b601)]

# ... [The above lines repeat endlessly in the console] ...

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