Quantcast
Channel: Cocos中文社区 - 最新主题
Viewing all articles
Browse latest Browse all 88737

遇到了一个我暂时无能为力的bug

$
0
0

@lichaoxin16 写道:

发生一个暂时无法解决的bug,该bug是这样出现的(不是必现):
在连接进入游戏服务器成功时执行

// 这是运行run的代码,是开启一个新线程来运行一直循环跑run(直到游戏结束)
subThreadInstance = new std::thread(CCCALLBACK_0(CNetDelegate::run,this));
_subThreadInstance->detach();
is_need_quit = false;

void CNetDelegate::run()
{
while (!is_need_quit)
{
// ...
onConnected(); // 运行到这里
}
is_need_quit = true;
}

void LuaGameNet::onConnected()
{
this->dispatchConnectedEvent(); // 运行到这里
}

void LuaGameNet::dispatchConnectedEvent()
{
int nHandler = ScriptHandlerMgr::getInstance()->getObjectHandler((void*)this, ScriptHandlerMgr::HandlerType::COCOSSOCKET_OPEN);
if (0 != nHandler) {
CommonScriptData data(nHandler, "");
ScriptEvent event(kCommonEvent, (void*)&data);
ScriptEngineManager::getInstance()->getScriptEngine()->sendEvent(&event); // 运行到这里
}
}

int LuaEngine::sendEvent(ScriptEvent* evt)
{
// ...
case kCommonEvent:
{
return handleCommonEvent(evt->data); // 运行到这里
}
break;
}

int LuaEngine::handleCommonEvent(void* data)
{
// ...
int ret = _stack->executeFunctionByHandler(commonInfo->handler, commonInfo->eventSource ? 2 : 1); // 运行到这里
}
int LuaStack::executeFunctionByHandler(int nHandler, int numArgs)
{
// ...
ret = executeFunction(numArgs); // 运行到这里, 此时 numArgs 为 1
}

剩下的栈堆为:
-2:TD.exe!cocos2d::luaStack::executeFunctionByHandler(int nHandler, int numArgs) 行 488 + 0x13字节 【也就是上一行】
-1:[下面的框架可能不正确和/或缺失,没有为lua51.dll加载符号]
0:lua51.dll!lua_yield() + 0xf187 字节【这是出错位置了,无法显示】

出现的异常叫:
TD.exe 中的 0x002821e7 (lua51.dll) 处有未经处理的异常: 0xC0000005: 读取位置 0xffffffd0 时发生访问冲突
如有适用于此异常的处理程序,该程序便可安全地继续运行。

会不会有可能是lua那边的代码问题?

帖子: 2

参与者: 1

阅读整个主题


Viewing all articles
Browse latest Browse all 88737

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>