Lua 崩溃,原因不明。

我们已经将 Lua 集成到项目中,但我们发现一个奇怪的测试用例在 ARM 平台上会连续崩溃:

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()); //将要调用的函数名推入栈中
if (lua_isnil(Lua, -1))
{
    // 错误
    lua_pop(Lua, 1);
    return -1;
}
lua_pushlightuserdata (Lua, (void *)object);  // 将引用对象推入栈中

if (lua_pcall(Lua, 1, 1, 0) != 0) //调用函数,传递 1 个参数,返回 1 个值
{
    // 错误
    lua_pop(Lua, 1);
    return -1;
}

lua_pop(Lua, 1);
return 1;

在被调用 5 次后,OnTick 会崩溃。

Lua 在垃圾回收程序尝试清理时似乎会崩溃。是否有其他人遇到过这样的情况并解决了它?

点赞
用户819577
用户819577

解决了这个问题,客户端代码正在损坏 Lua 状态。

2012-09-06 22:48:05