2012-08-29 32 views
3

我们的Lua集成到一个项目,但我们发现一贯崩溃ARM的一个奇怪的测试用例:Lua的崩溃没有明显的原因

data = {"A","B","C","D","E","F","G","H","I","J"}; 

function OnTick(_object) 

    local params = {}; 

    return 1; 
end 

这里是如何的功能正在从所谓的基本知识C++:

lua_getglobal(Lua, function_name->c_str()); // Push function name that we want to call onto the stack 
if (lua_isnil(Lua, -1)) 
{ 
    // Error 
    lua_pop(Lua, 1); 
    return -1; 
} 
lua_pushlightuserdata(Lua, (void*)object); // Push the reference object onto the stack 

if (lua_pcall(Lua, 1, 1, 0) != 0) 
{ 
    // Error 
    lua_pop(Lua, 1); 
    return -1; 
} 

lua_pop(Lua, 1); 
return 1; 

OnTick在被调用5次后崩溃。

当垃圾收集器尝试清理时,Lua似乎崩溃了。任何人都会遇到这样的事情并解决它?

+0

你是怎么打OnTick的? –

+3

这段代码中没有任何东西会导致Lua崩溃,但是在你没有向我们显示的代码中可能会有一些东西。需要更多的上下文才能成为可回答的问题。 – Mud

+0

我已经更新了关于如何从C++调用它的更多细节 – Mat

回答

0

解决了这个问题,客户端代码破坏了Lua状态