3

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 がクラッシュしているように見えます。他の誰かがこのようなものに出くわして解決しましたか?

4

1 に答える 1

-1

この問題を解決しました。クライアントコードがLuaの状態を破壊していました

于 2012-09-06T22:48:05.437 に答える