2012-08-29 71 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狀態