lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


What if I call lua_getglobal in c to the variables that does not exist in lua script, what will happen?

I am calling Lua function from C, every second
Here is my code:
void UCSimScript::TimerSignal()
{
    GetMutex();
    //get the function!
    lua_getglobal(L,"timer"); //line 826
    if(!lua_isfunction(L,-1))
    {
        mutex=1;
        return;
    }
    if ( lua_pcall(L, 0, 0, 0)!=0 )
    {
        Lua_Error("error: %s\n",lua_tostring(L, -1));
    }
    mutex=1;

}

but my lua script does not have the timer(), initially, it does not trigger any errors But after few hours, i get segmentation fault. with below are the traceback from gdb.

Core was generated by `./HostSim -w sim.lua'.
Program terminated with signal 11, Segmentation fault.
#0  0x080af44d in luaV_gettable ()
(gdb) bt
#0  0x080af44d in luaV_gettable ()
#1  0x080a5a0d in lua_getfield ()
#2  0x0808e176 in UCSimScript::TimerSignal (this=0x80dd710) at src/UCSimScript.cpp:826
#3  0x08070959 in TimerCB () at src/main.cpp:82
#4  0x080a3a49 in TimerThread (data_ptr=0x80dd720) at ucstdlib/ttimer.cpp:318
#5  0x005a550b in start_thread () from /lib/libpthread-2.7.so
#6  0x004e6b2e in clone () from /lib/libc-2.7.so

-------------------------------------------------------------------


 
Hean Kuan Ong
http://linux.byexamples.com
http://cc.byexamples.com
http://wordpress.byexamples.com