當玩家走動時,我的sevrer有時會崩潰。 我試圖用調試器運行它,服務器出現錯誤:程序收到信號SIGILL,非法指令。C++ Server有時會崩潰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 LogicHandler ::運行0x0040624d(此= 0x3e9be0)在F:\ EternalHeroes \服務器\ SRC \遊戲\ SRC \處理程序\ LogicHandler.cpp:59
F:\ EternalHeroes \服務器的\ src \遊戲\ SRC \處理器\ LogicHandler.cpp:59:1387:求:0x40624d 在F:\ EternalHeroes \服務器的\ src \遊戲\ SRC \處理器\ LogicHandler.cpp:59
1 0x0040624d在在F:\ EternalHeroes \ server \ src \ game \ src \ handler \ LogicHandler.cpp中的LogicHandler :: run(this = 0x3e9be0):59
F:\ EternalHeroes \ server \ src \ game \ src \ handler \ LogicHandler .cpp:59:1387:beg:0x40624d 繼續...程序接收到的信號SIGILL,非法指令。在 ?? ()()
1 LogicHandler ::運行0x0040624d(此= 0x3e9be0)在F:\ EternalHeroes \服務器\ SRC \遊戲\ SRC \處理程序\ LogicHandler.cpp:59
F:\ EternalHeroes \服務器的\ src \遊戲\ SRC \處理器\ LogicHandler.cpp:59:1387:求:0x40624d 在F:\ EternalHeroes \服務器的\ src \遊戲\ SRC \處理器\ LogicHandler.cpp:59
1 0x0040624d在在F:\ EternalHeroes \ server \ src \ game \ src \ handler \ LogicHandler.cpp中的LogicHandler :: run(this = 0x3e9be0):59
F:\ EternalHeroes \ server \ src \ game \ src \ handler \ LogicHandler .cpp:59:1387:beg:0x40624d 繼續... [劣質1(29040進程)退出,代碼爲 030000000035]調試完成了狀態0