-
Notifications
You must be signed in to change notification settings - Fork 92
Open
Description
I set a lua function as a callback in C++.
In a child thread ,I call a "run_in_main_thread" function , to call this callback in main thread. (because
this callback can not be called in child thread ).
the problem is , when this callback cause some errors , the catch code In CppBindingModule.h doesn't trigger.
struct CppBindMethodBase{
static int call(lua_State* L)
{
try {
assert(lua_isuserdata(L, lua_upvalueindex(1)));
const FN& fn = *reinterpret_cast<const FN*>(lua_touserdata(L, lua_upvalueindex(1)));
assert(fn);
CppArgTuple<P...> args;
CppArgTupleInput<P...>::get(L, IARG, args);
int n = CppInvokeMethod<FN, R, typename CppArg<P\>::HolderType...>::push(L, fn, args);
return n + CppArgTupleOutput<P...>::push(L, args);
} catch (std::exception& e) {
//!!! when error accur, this catch code didnot run. !!!
return luaL_error(L, e.what());
}
}
}
e.g: my callback is:
function callback()
error(1)
end
ps:
when I called this same callback in main thread ,the catch code worked.
Any idea why this happen? I am not familiar with these mutithread things between lua and C++,any detailed description is really appreciated !
Metadata
Metadata
Assignees
Labels
No labels