Логин сервер выдает ошибку ERROR gameservercon.ReceivablePacket: java.nio.BufferUnderflowException

Lex_Praim

Выдающийся
Участник
Сообщения
60
Розыгрыши
0
Репутация
42
Реакции
32
Баллы
1 328
Хроники
  1. Chaotic Throne: High Five
Исходники
Присутствуют
Сборка
EmuRT R10
Запускаю ЛС и ГС работают хорошо и через несколько дней (бывает по разному может и неделю работать спокойно) вылетает ошибка на логин сервере и не могу ее понять с чем она связана. Прошу помощи!!! да и забыл дописать и при этом сайт теряет связь с базой сервера при этом сервер остается в работе и все нормально

ERROR gameservercon.ReceivablePacket: java.nio.BufferUnderflowException
at java.nio.Buffer.nextGetIndex(Unknown Source)
at java.nio.HeapByteBuffer.getInt(Unknown Source)
at l2p.commons.net.nio.ReceivablePacket.readD(ReceivablePacket.java:26)
at l2p.loginserver.network.gameservercon.gspackets.AuthRequest.readImpl(AuthRequest.java:34)
at l2p.loginserver.network.gameservercon.ReceivablePacket.read(ReceivablePacket.java:39)
at l2p.loginserver.network.gameservercon.GameServerCommunication.tryReadPacket(GameServerCommunication.java:165)
at l2p.loginserver.network.gameservercon.GameServerCommunication.read(GameServerCommunication.java:135)
at l2p.loginserver.network.gameservercon.GameServerCommunication.run(GameServerCommunication.java:82)
[28.03.19 19:18:10:118] ERROR gameservercon.GameServerCommunication: Gameserver I/O error: ????????? ???? ????????????? ???????? ???????????? ???????????
[29.03.19 05:00:01:052] INFO gameservercon.GameServerConnection: Connection with gameserver 6 [Gustin] lost.
[29.03.19 05:00:01:079] INFO gameservercon.GameServerConnection: Setting gameserver down.
[29.03.19 05:01:47:072] INFO gspackets.AuthRequest: Trying to register gameserver: 6 [IP]
[29.03.19 05:01:47:078] INFO gspackets.AuthRequest: Gameserver registration successful.
[29.03.19 11:03:08:984] ERROR gameservercon.GameServerCommunication: Gameserver I/O error: ????????? ???? ????????????? ???????? ???????????? ???????????
[29.03.19 11:03:09:034] ERROR gameservercon.ReceivablePacket: java.nio.BufferUnderflowException
at java.nio.Buffer.nextGetIndex(Unknown Source)
at java.nio.HeapByteBuffer.getInt(Unknown Source)
at l2p.commons.net.nio.ReceivablePacket.readD(ReceivablePacket.java:26)
at l2p.loginserver.network.gameservercon.gspackets.AuthRequest.readImpl(AuthRequest.java:34)
at l2p.loginserver.network.gameservercon.ReceivablePacket.read(ReceivablePacket.java:39)
at l2p.loginserver.network.gameservercon.GameServerCommunication.tryReadPacket(GameServerCommunication.java:165)
at l2p.loginserver.network.gameservercon.GameServerCommunication.read(GameServerCommunication.java:135)
at l2p.loginserver.network.gameservercon.GameServerCommunication.run(GameServerCommunication.java:82)
[29.03.19 11:04:52:032] ERROR gameservercon.GameServerCommunication: Gameserver I/O error: ????????? ???? ????????????? ???????? ???????????? ???????????[/CODE]
 

Похоже на переполнение буфера, но не уверен.
Включи логирование логинсервера если таковое имеется и последи за тем сколько у тебя съедает памяти логин сервер с течением времени.
 
Вообще если погуглить BufferUnderflowException появляется когда вы пытаетесь из стака буффера забрать больше байт, чем в нем есть:

И либо это битый пакет, либо гс в каком то случае отправляет в AuthRequest не то, что вы ожидаете получить. getInt ждет тип int(т.е. 4 байта), а получает меньше.
Я бы порекомендовал посмотреть логи гс в этот момент времени - что там происходило.
А также посмотреть что читает на этой строке AuthRequest.java:34 логинсервер -и исходя из наименования параметра посмотреть что шлет геймсервер в своем пакете AuthRequest.java в этом же участке тела пакета. Может быть в каком то случае там не int тип, а Integer и передается null - а null это 1 байт вместо 4 и вы получаете ошибку.
 
Вообще если погуглить BufferUnderflowException появляется когда вы пытаетесь из стака буффера забрать больше байт, чем в нем есть:

И либо это битый пакет, либо гс в каком то случае отправляет в AuthRequest не то, что вы ожидаете получить. getInt ждет тип int(т.е. 4 байта), а получает меньше.
Я бы порекомендовал посмотреть логи гс в этот момент времени - что там происходило.
А также посмотреть что читает на этой строке AuthRequest.java:34 логинсервер -и исходя из наименования параметра посмотреть что шлет геймсервер в своем пакете AuthRequest.java в этом же участке тела пакета. Может быть в каком то случае там не int тип, а Integer и передается null - а null это 1 байт вместо 4 и вы получаете ошибку.
Спасибо за ответ AuthRequest.java:34 это протакол
 
Похоже на переполнение буфера, но не уверен.
Включи логирование логинсервера если таковое имеется и последи за тем сколько у тебя съедает памяти логин сервер с течением времени.
Спасибо за ответ гляну
 
????????? ???????????
[00:49:08] ERROR
java.nio.BufferUnderflowException
at java.nio.Buffer.nextGetIndex(Unknown Source)
at java.nio.HeapByteBuffer.getInt(Unknown Source)
at l2p.commons.net.nio.ReceivablePacket.readD(ReceivablePacket.java:26)
at l2p.loginserver.network.gameservercon.gspackets.AuthRequest.readImpl(
AuthRequest.java:49)
at l2p.loginserver.network.gameservercon.ReceivablePacket.read(Receivabl
ePacket.java:39)
at l2p.loginserver.network.gameservercon.GameServerCommunication.tryRead
Packet(GameServerCommunication.java:165)
at l2p.loginserver.network.gameservercon.GameServerCommunication.read(Ga
meServerCommunication.java:135)
at l2p.loginserver.network.gameservercon.GameServerCommunication.run(Gam
eServerCommunication.java:82)


тоже с буфером проблемы
 

Похожие темы

Назад
Сверху Снизу