View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||
---|---|---|---|---|---|---|---|---|---|
0001160 | Spring engine | General | public | 2008-10-19 21:26 | 2008-11-16 17:59 | ||||
Reporter | imbaczek | ||||||||
Assigned To | zerver | ||||||||
Priority | normal | Severity | crash | Reproducibility | always | ||||
Status | resolved | Resolution | fixed | ||||||
Product Version | |||||||||
Target Version | Fixed in Version | 0.77b5+svn | |||||||
Summary | 0001160: errors in lua scripts can cause spring crashes (uncaught throw in luaD_throw?) | ||||||||
Description | IW b41v3 seems to trigger this a lot. | ||||||||
Additional Information | example stacktrace: rts/System/SpringApp.cpp:91 UNTRANSLATED: C:\WINDOWS\system32\msvcrt.dll(raise+0x14d) [0x77C352DA] UNTRANSLATED: C:\WINDOWS\system32\msvcrt.dll(abort+0xe) [0x77C36BC1] e:/projects/libogg-1.1/src/bitwise.c:447 [oggpackB_get_buffer] e:/projects/libogg-1.1/src/bitwise.c:447 [oggpackB_get_buffer] e:/projects/libogg-1.1/src/bitwise.c:447 [oggpackB_get_buffer] rts/lib/lua/src/ldo.cpp:100 [luaD_throw(lua_State*, int)] rts/lib/lua/src/ldebug.cpp:612 [luaG_errormsg(lua_State*)] rts/lib/lua/src/ldebug.cpp:621 [luaG_runerror(lua_State*, char const*, ...)] rts/lib/lua/src/ldebug.cpp:562 [luaG_typeerror(lua_State*, lua_TValue const*, char const*)] rts/lib/lua/src/lvm.cpp:152 [luaV_gettable(lua_State*, lua_TValue const*, lua_TValue*, lua_TValue*)] rts/lib/lua/src/lvm.cpp:466 [luaV_execute(lua_State*, int)] rts/lib/lua/src/ldo.cpp:377 [luaD_call(lua_State*, lua_TValue*, int)] rts/lib/lua/src/lapi.cpp:818 [f_call] rts/lib/lua/src/ldo.cpp:119 [luaD_rawrunprotected(lua_State*, void (*)(lua_State*, void*), void*)] rts/lib/lua/src/ldo.cpp:462 [luaD_pcall(lua_State*, void (*)(lua_State*, void*), void*, int, int)] rts/lib/lua/src/lapi.cpp:839 [lua_pcall(lua_State*, int, int, int)] rts/Lua/LuaHandle.h:344 [CLuaHandle::SetActiveHandle(CLuaHandle*)] rts/Lua/LuaHandle.cpp:191 rts/Lua/LuaHandleSynced.cpp:718 rts/Game/Game.cpp:3121 rts/System/Sync/SyncChecker.h:43 [CSyncChecker::GetChecksum()] rts/Game/Game.cpp:3580 rts/Game/Game.cpp:2475 rts/System/SpringApp.cpp:870 rts/System/SpringApp.cpp:1069 rts/System/Main.cpp:60 [Run(int, char**)] rts/System/Main.cpp:122 [WinMain@16] Action.cpp:0 /src/mingw-runtime-3.13-20070825-1/crt1.c:237 [__mingw_CRTStartup] /src/mingw-runtime-3.13-20070825-1/crt1.c:271 UNTRANSLATED: C:\WINDOWS\system32\kernel32.dll(RegisterWaitForInputIdle+0x49) [0x7C816FD7] -- profile=default sys=windows auto=yes rev=6740 file=http://forums.imperialwinter.com/index.php?action=dlattach;topic=170.0;attach=735 buildsys=scons tag=spring_0.77b4 | ||||||||
Tags | No tags attached. | ||||||||
Checked infolog.txt for Errors | |||||||||
Attached Files |
|
Relationships | ||||||
|
Notes | |
zerver (reporter) 2008-11-15 16:06 |
I have encountered this couple of times with my multithreading version. http://planetspring.free.fr/spring/stacktrace/%5Bgmlsim%5Dgmltest_spring_stktrc_R7041_1226713973.txt http://planetspring.free.fr/spring/stacktrace/%5Bgmlsim%5Dgmltest_spring_stktrc_R6990_1226242544.txt http://planetspring.free.fr/spring/stacktrace/%5Bgmlsim%5Dgmltest_spring_stktrc_R6981_1225984944.txt http://planetspring.free.fr/spring/stacktrace/%5Bgmlsim%5Dgmltest_spring_stktrc_R6936_1225558029.txt http://planetspring.free.fr/spring/stacktrace/%5Bgmlsim%5Dgmltest_spring_stktrc_R6936_1225482991.txt I thought it was multithreading-related (bad synchronization), but after seeing your stacktrace I'm not so sure anymore. All my stacktraces seem so point to settable/gettable, but this could be coincidence. I guess we are missing a LUAI_TRY somewhere? |
zerver (reporter) 2008-11-16 14:39 |
This one is really weird. It seems that if you throw an exception - ANY exception - inside luaD_rawrunprotected, it instantly crashes with GCC. The same code works fine with MSVC. |
imbaczek (reporter) 2008-11-16 15:03 |
is that bibim's 4.2.1 or tdragon's 4.3.2? or both? probably have to switch lua exceptions to explicit setjmp/longjmp, it's possible to #define a macro for that. |
zerver (reporter) 2008-11-16 16:24 |
It's both. Yeah, I'll make a macro to disable the LUA try...catch thing for GCC 4.X |
zerver (reporter) 2008-11-16 17:59 |
Disabled LUA try/catch for GCC 4.X |
Issue History | |||
Date Modified | Username | Field | Change |
---|---|---|---|
2008-10-19 21:26 | imbaczek | New Issue | |
2008-10-20 18:24 | imbaczek | Additional Information Updated | |
2008-11-06 19:27 | Auswaschbar | Relationship added | has duplicate 0001195 |
2008-11-15 16:06 | zerver | Note Added: 0003072 | |
2008-11-16 14:39 | zerver | Note Added: 0003073 | |
2008-11-16 15:03 | imbaczek | Note Added: 0003074 | |
2008-11-16 16:24 | zerver | Note Added: 0003075 | |
2008-11-16 17:59 | zerver | Note Added: 0003076 | |
2008-11-16 17:59 | zerver | Status | new => resolved |
2008-11-16 17:59 | zerver | Fixed in Version | => 0.77b5+svn |
2008-11-16 17:59 | zerver | Resolution | open => fixed |
2008-11-16 17:59 | zerver | Assigned To | => zerver |