2025-06-14 04:51 CEST

View Issue Details Jump to Notes ]
IDProjectCategoryView StatusLast Update
0001321Spring engineGeneralpublic2011-11-10 17:51
Reporterspliff 
Assigned ToKloot 
PrioritynormalSeveritycrashReproducibilityalways
StatusresolvedResolutionfixed 
Product Version0.82.6.1 
Target VersionFixed in Version84.0 
Summary0001321: Crashes and poor feedback on missing content
DescriptionBeen 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 InformationObviously 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).
TagsNo tags attached.
Checked infolog.txt for Errors
Attached Files

-Relationships
related to 0001333resolvedAuswaschbar Synced crash in feature 
related to 0002228resolvedabma Spring.exe should give more & better error messages 
related to 0002196resolvedKloot faulty Lua CEG effects crash spring.exe 
+Relationships

-Notes

~0003260

spliff (reporter)

Correction: Missing corpse model on transported unit and missing explosion generator crash Spring, not a lockup.

~0003274

imbaczek (reporter)

i've got a hunch this is related to recent builds not starting.

~0006165

abma (administrator)

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

~0006166

abma (administrator)

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

~0006172

FLOZi (reporter)

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.

~0007503

abma (administrator)

i couldn't get 0.83 to crash... anyone did? if so, how? if not, i'll close this report...

~0007569

user744

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)

~0007570

user744

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.

~0007574

Kloot (developer)

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.
+Notes

-Issue History
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 user744 Note Added: 0007569
2011-11-10 11:38 user744 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
+Issue History