View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||
---|---|---|---|---|---|---|---|---|---|
0001321 | Spring engine | General | public | 2009-02-02 20:59 | 2011-11-10 17:51 | ||||
Reporter | spliff | ||||||||
Assigned To | Kloot | ||||||||
Priority | normal | Severity | crash | Reproducibility | always | ||||
Status | resolved | Resolution | fixed | ||||||
Product Version | 0.82.6.1 | ||||||||
Target Version | Fixed in Version | 84.0 | |||||||
Summary | 0001321: Crashes and poor feedback on missing content | ||||||||
Description | Been doing some testing with a very minimal mod using Dummy Mod as a starting point. I've noticed that the engine seems to handle missing content and definitions in 5 ways: 1.) In some cases it ignores the problem (may crash later though). 2.) In some cases it ignores and logs a warning. 3.) In some cases it crashes with a popup message and log line. 4.) In some cases it simply crashes with an unhelpful (to a content dev) stacktrace. 5.) In rare cases Spring becomes "non responsive" and must be killed. Unfortunately 4 is far too common and 3 happens in cases where 2 would be better. For instance missing unittextures should have a gray fallback texture it can load from the spring base content. I would say that as it stands the system presents a considerable barrier to new content developers trying to debug units and would therefore be worth the time to fix. There may also be legitimate reasons to be missing a resource (it hasn't been made yet or it's added later via some custom lua). Types of content affected (error type in above list): * missing explosion generator (5): Crashes. No log (except "loading weapon definitions"). Exception: Access violation (0xc0000005) * missing model (5): Crashes. Seems to be transported units in particular when they die and the corpse object is missing. No log. Exception: Access violation (0xc0000005) Exception Address: 0x0dd3d716 * missing cob scripts (2): Gives a warning and disables the unitDef, however accessing the unit gives: LuaRules::RunCallIn: error = 2, GameFrame, [string "LuaRules/Gadgets/cmd_spawn.lua"]:45: attempt to index field '?' (a nil value) This error could be improved with a metatable fallback on unitDefs. * missing unitDef (2): Presumably same as above or any other issue that prevents a required (by lua) unitDef loading. * Anims/cursornormal.png (3): Engine won't load if you don't have this one. | ||||||||
Additional Information | Obviously there's no easy way to tell how the engine will handing missing content under all conditions but I would suggest the following behaviour: * Missing sound: Replace with silence and log (so there's still sound data in the buffer) * Missing texture: Replace with a pink texture and log (makes the problem easier to spot) * Missing or crashing COB script: Log and disable unit. * Missing or broken unit or feature def: Log "Missing unit/feature <name>" and traceback when attempting access from lua. * Missing or broken explosion: Use no explosion and log. * Missing cursor: Fallback to a default cursor and log. * Missing weapon: Remove weapon from unit and log. These should happen even if the mod doesn't depend on springcontent. This may require a new automatic base archive (ie, engine.sdz) for some of these essential items. Types of content tested and working as expected: * wreckage (2): Couldnt find wreckage info armjeth_dead * feature (2): Unknown map feature type armjeth_dead * texture (map or unit) (2): Unknown texture armv4a00. Unit/feature goes grey. * sound (1): Simply plays no sound (except beep6 etc which may be fixed in git). To make replicating these errors easier I've attached a simple mod as an sdd archive. Try deleting a sound, unittexture, explosion, cursor, cob file etc to see the resulting error or crash. I've also left an error in it (game crash on unit death due to missing dead unit). | ||||||||
Tags | No tags attached. | ||||||||
Checked infolog.txt for Errors | |||||||||
Attached Files |
|
![]() |
||||||||||||||||
|
![]() |
|
spliff (reporter) 2009-02-02 21:01 |
Correction: Missing corpse model on transported unit and missing explosion generator crash Spring, not a lockup. |
imbaczek (reporter) 2009-02-10 12:24 |
i've got a hunch this is related to recent builds not starting. |
abma (administrator) 2010-12-30 01:21 |
still crashes: (0.82.6.1) C:\Games\Spring\spring.exe 0xcbb5c2 GameData.cpp:0 C:\Games\Spring\spring.exe 0x893546 /usr/lib/gcc/i586-mingw32msvc/4.4.2/include/c++/ext/atomicity.h:78 C:\Games\Spring\spring.exe 0x8be6bc rts/Sim/Units/UnitDefHandler.cpp:92 C:\Games\Spring\spring.exe 0x8bf43f rts/Sim/Units/UnitDefHandler.cpp:54 C:\Games\Spring\spring.exe 0x40545e rts/Game/Game.cpp:500 C:\Games\Spring\spring.exe 0x41678e rts/Game/Game.cpp:319 C:\Games\Spring\spring.exe 0x490899 rts/Game/PreGame.cpp:285 C:\Games\Spring\spring.exe 0x4916ad rts/Game/PreGame.cpp:160 C:\Games\Spring\spring.exe 0x9869f1 rts/System/SpringApp.cpp:1051 C:\Games\Spring\spring.exe 0x991d39 rts/System/SpringApp.cpp:1182 C:\Games\Spring\spring.exe 0x992064 rts/System/Main.cpp:55 C:\Games\Spring\spring.exe 0x992840 rts/System/Main.cpp:91 C:\Games\Spring\spring.exe 0x4010a7 buildd/mingw32-runtime-3.15.2/build_dir/src/mingwrt-3.15.2-mingw32/crt1.c:237 C:\Games\Spring\spring.exe 0x401123 buildd/mingw32-runtime-3.15.2/build_dir/src/mingwrt-3.15.2-mingw32/crt1.c:271 C:\WINDOWS\system32\kernel32.dll 0x7C817077 ??:0 |
abma (administrator) 2010-12-30 01:25 |
spring_0.82.3-1166-gaed7437: (win32-inline-fix-branch) C:\temp\spring_0.82.3-1166-gaed7437\spring.exe 0x00AB7FF1 GameData.cpp:0 C:\temp\spring_0.82.3-1166-gaed7437\spring.exe 0x00CD13D2 GameData.cpp:0 C:\temp\spring_0.82.3-1166-gaed7437\spring.exe 0x00A8B7D5 rts/lib/lua/src/ldo.cpp:100 C:\temp\spring_0.82.3-1166-gaed7437\spring.exe 0x00A85263 rts/lib/lua/src/ldebug.cpp:628 C:\temp\spring_0.82.3-1166-gaed7437\spring.exe 0x00A852D1 rts/lib/lua/src/ldebug.cpp:637 C:\temp\spring_0.82.3-1166-gaed7437\spring.exe 0x00A855B8 rts/lib/lua/src/ldebug.cpp:578 C:\temp\spring_0.82.3-1166-gaed7437\spring.exe 0x00A86EB7 rts/lib/lua/src/lvm.cpp:145 C:\temp\spring_0.82.3-1166-gaed7437\spring.exe 0x00A87E49 rts/lib/lua/src/lvm.cpp:462 C:\temp\spring_0.82.3-1166-gaed7437\spring.exe 0x00A8BD60 rts/lib/lua/src/ldo.cpp:377 C:\temp\spring_0.82.3-1166-gaed7437\spring.exe 0x00A7A071 rts/lib/lua/src/lapi.cpp:813 C:\temp\spring_0.82.3-1166-gaed7437\spring.exe 0x00A8B502 rts/lib/lua/src/ldo.cpp:119 C:\temp\spring_0.82.3-1166-gaed7437\spring.exe 0x00A8B5A9 rts/lib/lua/src/ldo.cpp:464 C:\temp\spring_0.82.3-1166-gaed7437\spring.exe 0x00A79EBA rts/lib/lua/src/lapi.cpp:834 C:\temp\spring_0.82.3-1166-gaed7437\spring.exe 0x00656C74 rts/Lua/LuaHandle.cpp:226 C:\temp\spring_0.82.3-1166-gaed7437\spring.exe 0x0065A934 rts/Lua/LuaHandle.cpp:255 C:\temp\spring_0.82.3-1166-gaed7437\spring.exe 0x0066048A rts/Lua/LuaHandle.cpp:428 C:\temp\spring_0.82.3-1166-gaed7437\spring.exe 0x00974988 rts/System/EventHandler.cpp:366 C:\temp\spring_0.82.3-1166-gaed7437\spring.exe 0x00403FB4 rts/Game/Game.cpp:1751 C:\temp\spring_0.82.3-1166-gaed7437\spring.exe 0x0044744C rts/System/Sync/SyncChecker.h:40 C:\temp\spring_0.82.3-1166-gaed7437\spring.exe 0x004119D0 rts/Game/Game.cpp:1006 C:\temp\spring_0.82.3-1166-gaed7437\spring.exe 0x00993311 rts/System/SpringApp.cpp:1071 C:\temp\spring_0.82.3-1166-gaed7437\spring.exe 0x0099E5FB rts/System/SpringApp.cpp:1205 C:\temp\spring_0.82.3-1166-gaed7437\spring.exe 0x009A153B rts/System/Main.cpp:53 C:\temp\spring_0.82.3-1166-gaed7437\spring.exe 0x00B8B400 /slave/mingwlibs/include/boost/thread/detail/thread.hpp:57 C:\temp\spring_0.82.3-1166-gaed7437\spring.exe 0x00A674B5 /home/robin/src/boost_1_42_0/libs/thread/src/win32/thread.cpp:167 C:\WINDOWS\system32\MSVCRT.dll 0x77C0A3B0 ??:0 C:\WINDOWS\system32\kernel32.dll 0x7C80B729 ??:0 |
FLOZi (reporter) 2010-12-30 17:08 Last edited: 2010-12-31 18:57 |
Also related to http://springrts.com/mantis/view.php?id=2178 which is partly fixed in master RE: The cursor, there is a full set of cursors in cursors.sdz in base. There's probably no reason thy couldn't be in springcontent.sdz itself though. |
abma (administrator) 2011-11-06 18:45 |
i couldn't get 0.83 to crash... anyone did? if so, how? if not, i'll close this report... |
2011-11-10 11:22 |
non-mono sounds are now reported and missing .s3o files now give a message too instead of just crashing. So that is very nice :) >i couldn't get 0.83 to crash... anyone did? challenge accepted... download this: knorke.darkstars.co.uk/bricks/Brickcraft_epenis6_8nov2011.sdz in scripts\tpvierling.lua uncomment this line: --EmitSfx(barrels [shotfrom], ejectshell) -- <- crash*** (in function script.FireWeapon1()) /cheat /give tpvierling unit firing will cause this crash: http://pastebin.com/9b8tzcLF (both in 0.82.7 and 83) Doing something silly like EmitSfx(flares [shotfrom], lolololo) simply gives a "bad arguement" message. Did not report before because it is some moderror. (It used to work but then I messed something up either in the ceg file or in resources.lua or somewhere else and that broke it) |
2011-11-10 11:38 |
problem is/was missing colormap in this ceg: tpejectshell.lua missing colormap in a ceg: -> crash when ceg is spawned invalid colormap in a ceg: colormap = "lolol", -> crash during load. (83.0) Btw, these messages: [f=0000000] Warning: [CCEG::ParseExplosionCode] unknown op-code " would be more helpfull if they included the filename & line number. I have several of those in my game but no idea where they come from. |
Kloot (developer) 2011-11-10 17:50 |
colormap = "lolol", -> crash during load. The exact error is "Incorrect/Missing content: Could not load texture from file bitmaps\trololol" for invalid colormaps, so I will let that one slide. Missing colormap lines in a SimpleParticleSystem definition are no longer fatal now. Anyway, reopen when you find something new to troll Spring with. |
![]() |
|||
Date Modified | Username | Field | Change |
---|---|---|---|
2009-02-02 20:59 | spliff | New Issue | |
2009-02-02 20:59 | spliff | File Added: CrashSpring.sdd.zip | |
2009-02-02 21:01 | spliff | Note Added: 0003260 | |
2009-02-06 19:35 | imbaczek | Relationship added | related to 0001333 |
2009-02-10 12:24 | imbaczek | Note Added: 0003274 | |
2010-11-23 02:05 | abma | Relationship added | related to 0002228 |
2010-12-30 01:21 | abma | Product Version | 0.78.2.1 => 0.82.6.1 |
2010-12-30 01:21 | abma | Note Added: 0006165 | |
2010-12-30 01:25 | abma | Note Added: 0006166 | |
2010-12-30 17:08 | FLOZi | Note Added: 0006172 | |
2010-12-31 18:57 | FLOZi | Note Edited: 0006172 | |
2011-11-06 18:45 | abma | Note Added: 0007503 | |
2011-11-06 18:45 | abma | Status | new => feedback |
2011-11-10 11:22 |
|
Note Added: 0007569 | |
2011-11-10 11:38 |
|
Note Added: 0007570 | |
2011-11-10 17:50 | Kloot | Note Added: 0007574 | |
2011-11-10 17:51 | Kloot | Status | feedback => resolved |
2011-11-10 17:51 | Kloot | Fixed in Version | => 84.0 |
2011-11-10 17:51 | Kloot | Resolution | open => fixed |
2011-11-10 17:51 | Kloot | Assigned To | => Kloot |
2011-12-02 16:03 | Kloot | Relationship added | related to 0002196 |