プレイヤーが歩き回るとサーバーがクラッシュすることがあります。デバッガーで実行しようとしましたが、サーバーでエラーが発生しました:プログラムはシグナル SIGILL、不正な命令を受け取りました。
LogicHandler の 59 行目を示しています。関数実行です。その関数は次のとおりです。
void LogicHandler::run()
{
try
{
unsigned short packetID = (packet->getGroup() * 666) + packet->getType();
switch (packetID)
{
case 666:
handleQuit();
break;
case 670:
handleLogin();
break;
case 672:
handleCreateCharacter();
break;
case 673:
handleDeleteActor();
break;
case 675:
handleSelectCharacter();
break;
case 1345:
handleMove(); <- HERE OCCURS SIGILL
break;
case 11332:
if(!connection.isLogged())
{
throw Poco::Exception("Unlogged access.");
}
connection.sendPing();
default:
if(!connection.isLogged())
{
throw Poco::Exception("Unlogged access.");
}
connection.sendPing();
break;
}
}
catch(...)
{
connection.shutdownConnection();
}
delete this;
}
デバッガ出力は次のとおりです。
プログラムがシグナル SIGILL を受信しました。不正な命令です。の ??() ()
1 0x0040624d in LogicHandler::run (this=0x3e9be0) at F:\EternalHeroes\server\src\game\src\handler\LogicHandler.cpp:59
F:\EternalHeroes\server\src\game\src\handler\LogicHandler.cpp:59:1387:beg:0x40624d F:\EternalHeroes\server\src\game\src\handler\LogicHandler.cpp:59 で
1 0x0040624d in LogicHandler::run (this=0x3e9be0) at F:\EternalHeroes\server\src\game\src\handler\LogicHandler.cpp:59
F:\EternalHeroes\server\src\game\src\handler\LogicHandler.cpp:59:1387:beg:0x40624d 続行中... プログラムがシグナル SIGILL を受信しました。不正な命令です。の ??() ()
1 0x0040624d in LogicHandler::run (this=0x3e9be0) at F:\EternalHeroes\server\src\game\src\handler\LogicHandler.cpp:59
F:\EternalHeroes\server\src\game\src\handler\LogicHandler.cpp:59:1387:beg:0x40624d F:\EternalHeroes\server\src\game\src\handler\LogicHandler.cpp:59 で
1 0x0040624d in LogicHandler::run (this=0x3e9be0) at F:\EternalHeroes\server\src\game\src\handler\LogicHandler.cpp:59
F:\EternalHeroes\server\src\game\src\handler\LogicHandler.cpp:59:1387:beg:0x40624d Continueing... [Inferior 1 (プロセス 29040) がコード 030000000035 で終了しました] デバッガーがステータス 0 で終了しました