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
- Set up a Velocity proxy routing to both a Forge and a Fabric backend server.
- Ensure both the Ambassador and Simple Voice Chat plugins are installed and enabled on the proxy.
- Connect a client to the Forge server.
- Force a connection timeout (e.g., unplug the RJ-45 ethernet cable).
- Observe the proxy console flooding with
StacklessClosedChannelException errors.
- 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] ...
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.StacklessClosedChannelExceptionerrors.This issue appears to be related to the interaction between the Ambassador and Simple Voice Chat plugins.
Modpack Links
Environment
Client Setup:
Proxy Setup:
Backend Server Setup:
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
StacklessClosedChannelExceptionerrors.Logs & Error Outputs
Velocity Proxy Console Error Snippet: