Elytrium / Elytrium/LimboAuth

[BUG] io.netty.buffer.EmptyByteBuf.readByte(EmptyByteBuf.java:523)

Open
#241 0 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
Java
Stars
238
Forks
125
PR merge metrics
No merged PRs in 30d

Description

One of the plugins has an issue when connecting a player from a browser (branded Eagler).
An "Internal Error" occurs on the client.

Velocity server logs:

[15:03:18 INFO] [limboapi]: Test (/127.0.0.1:50500) has connected to the LimboAuth Limbo
[15:03:18 ERROR]: java.lang.IndexOutOfBoundsException
[15:03:18 ERROR]: at io.netty.buffer.EmptyByteBuf.readByte(EmptyByteBuf.java:523)
[15:03:18 ERROR]: at net.lax1dude.eaglercraft.backend.server.base.pipeline.BufferUtils.readVarInt(BufferUtils.java:50)
[15:03:18 ERROR]: at net.lax1dude.eaglercraft.backend.server.base.handshake.VanillaInitializer.handleInbound(VanillaInitializer.java:107)
[15:03:18 ERROR]: at net.lax1dude.eaglercraft.backend.server.base.pipeline.WebSocketEaglerInitialHandler.encode(WebSocketEaglerInitialHandler.java:606)
[15:03:18 ERROR]: at net.lax1dude.eaglercraft.backend.server.base.pipeline.WebSocketEaglerInitialHandler.encode(WebSocketEaglerInitialHandler.java:51)
[15:03:18 ERROR]: at io.netty.handler.codec.MessageToMessageCodec$2.encode(MessageToMessageCodec.java:85)
[15:03:18 ERROR]: at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:90)
[15:03:18 ERROR]: at io.netty.handler.codec.MessageToMessageCodec.write(MessageToMessageCodec.java:130)
[15:03:18 ERROR]: at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:798)
[15:03:18 ERROR]: at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:737)
[15:03:18 ERROR]: at io.netty.handler.timeout.IdleStateHandler.write(IdleStateHandler.java:306)
[15:03:18 ERROR]: at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:798)
[15:03:18 ERROR]: at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:737)
[15:03:18 ERROR]: at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:116)
[15:03:18 ERROR]: at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:800)
[15:03:18 ERROR]: at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:737)
[15:03:18 ERROR]: at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:120)
[15:03:18 ERROR]: at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:800)
[15:03:18 ERROR]: at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:737)
[15:03:18 ERROR]: at net.elytrium.limboapi.thirdparty.fastprepare.handler.PreparedPacketEncoder.write(PreparedPacketEncoder.java:66)
[15:03:18 ERROR]: at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:800)
[15:03:18 ERROR]: at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:737)
[15:03:18 ERROR]: at io.netty.channel.DefaultChannelPipeline.write(DefaultChannelPipeline.java:1036)
[15:03:18 ERROR]: at io.netty.channel.Channel.write(Channel.java:267)
[15:03:18 ERROR]: at com.velocitypowered.proxy.connection.MinecraftConnection.delayedWrite(MinecraftConnection.java:253)
[15:03:18 ERROR]: at net.elytrium.limboapi.server.LimboImpl.onSpawn(LimboImpl.java:572)
[15:03:18 ERROR]: at net.elytrium.limboapi.server.LimboImpl.spawnPlayerLocal(LimboImpl.java:462)
[15:03:18 ERROR]: at net.elytrium.limboapi.server.LimboImpl.lambda$spawnPlayerLocal$1(LimboImpl.java:551)
[15:03:18 ERROR]: at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:148)
[15:03:18 ERROR]: at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:141)
[15:03:18 ERROR]: at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:535)
[15:03:18 ERROR]: at io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:201)
[15:03:18 ERROR]: at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1195)
[15:03:18 ERROR]: at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
[15:03:18 ERROR]: at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
[15:03:18 ERROR]: at java.base/java.lang.Thread.run(Thread.java:1583)
[15:03:18 INFO]: [connected player] Test (/127.0.0.1:50500) has disconnected: ?? ???????? ????????????? ?????????? ?????????????????? ??????? ???????!
[15:03:18 INFO] [limboapi]: Test (/127.0.0.1:50500) has disconnected from the LimboAuth Limbo
[15:03:18 INFO]: [initial connection] /127.0.0.1:50500 has disconnected

Also

[15:03:07 WARN]: The server channel initializer has been replaced by java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)

Velocity info:
velocity-3.5.0-SNAPSHOT-605

Velocity plugins:

[15:11:55 INFO]: Plugins: velocity, luckperms, maintenance, advancedserverlist, skinsrestorer, eaglerxserver, limboapi, limboauth, packetevents, pl-hide-pro, velocity-tools

Removing any plugin from the chain works, but if you use this specific combination:
limboapi
limboauth
packetevents

eaglerx breaks.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by tracing BufferUtils.readVarInt and VanillaInitializer.handleInbound in the stack trace, then inspect WebSocketEaglerInitialHandler.encode while reproducing the connection with limboapi, limboauth, packetevents, and eaglerxserver enabled. Compare the pipeline behavior with plugins removed; done means the browser connection no longer raises EmptyByteBuf.readByte or disconnects with an internal error.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
backend, networking
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.