Lua无缘无故撞车

Lua无缘无故撞车,lua,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()); // Push function name

我们已经将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()); // 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似乎正在崩溃。其他人遇到类似的问题并解决了吗?

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

此代码中没有任何东西会导致Lua崩溃,但很可能在代码中有一些您没有向我们展示的东西会导致Lua崩溃。需要更多的上下文来回答这个问题。我已经更新了这个问题,并详细介绍了它是如何从C++调用的。