-
Notifications
You must be signed in to change notification settings - Fork 436
Description
大概从1个半月前,就一直被这个bug困扰,一直没有找到稳定复现的方式。崩溃堆栈的截图如下
std::__1::enable_if<(std::is_base_of<UObject, UClass>::value) && (!(std::is_same<UObject, UClass>::value)), UClass*>::type slua::LuaObject::testudata(slua::lua_State*, int, bool) + 1152
1 std::__1::enable_if<(std::is_base_of<UObject, UClass>::value) && (!(std::is_same<UObject, UClass>::value)), UClass*>::type slua::LuaObject::testudata(slua::lua_State*, int, bool) + 4136157135018918980
2 UClass* slua::LuaObject::checkUD(slua::lua_State*, int, bool) + 60
3 slua::checkUClassProperty(slua::lua_State*, UProperty*, unsigned char*, int) + 52
4 slua::fillParamFromState(slua::lua_State*, UProperty*, unsigned char*, int) + 104
5 slua::LuaObject::fillParam(slua::lua_State*, int, UFunction*, unsigned char*) + 252
6 slua::ufuncClosure(slua::lua_State*) + 256
症状就是抛到lua端的UObject在UE端已经被释放了,但UD_HADFREE没有被正确标记,导致testudata时直接调用isUObjectValid(ptr->ud)野指针,但为什么会没有正确标记UD_HADFREE我们这完全没有头绪,反复检查都没找出原因。求各路大佬看一看有没有什么思路。