[ scummvm-Bugs-1188910 ] GOB1: Occasional crash when loading level

SourceForge.net noreply at sourceforge.net
Sun Apr 24 14:48:43 CEST 2005


Bugs item #1188910, was opened at 2005-04-24 14:48
Message generated for change (Tracker Item Submitted) made by Item Submitter
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=418820&aid=1188910&group_id=37116

Category: None
Group: None
Status: Open
Resolution: None
Priority: 5
Submitted By: Torbjörn Andersson (eriktorbjorn)
Assigned to: Nobody/Anonymous (nobody)
Summary: GOB1: Occasional crash when loading level

Initial Comment:
I know it's not really supported yet, but I don't know
if I'll be able to capture this in a debugger again so...

Latest ScummVM CVS snapshot
Gobliiins 1 CD

Sometimes - quite rarely - when going to a new level
ScummVM crashes. Today I finally managed to catch it in
GDB. At the time, I had compiled ScummVM with Electric
Fence, but I don't think that affects the test
negatively. Here's the backtrace:

#0  Gob::game_loadExtData (itemId=-29998,
pResWidth=0x0, pResHeight=0x0)
    at gob/game.cpp:107
#1  0x08202f76 in Gob::scen_loadStatic (search=-8 'ø')
at gob/scenery.cpp:136
#2  0x081fcf40 in Gob::inter_drawOperations () at
gob/inter.cpp:400
#3  0x081fe41d in Gob::inter_funcBlock (retFlag=2) at
gob/inter.cpp:1292
#4  0x081fe729 in Gob::inter_callSub (retFlag=2) at
gob/inter.cpp:1524
#5  0x081fe22e in Gob::inter_funcBlock (retFlag=2) at
gob/inter.cpp:1180
#6  0x081fe729 in Gob::inter_callSub (retFlag=2) at
gob/inter.cpp:1524
#7  0x081fc502 in Gob::game_playTot (skipPlay=16) at
gob/game.cpp:1863
#8  0x081fc6f0 in Gob::game_start () at gob/game.cpp:1931
#9  0x081f423e in Gob::init_initGame (totName=0x0) at
gob/init.cpp:283
#10 0x081f39e0 in Gob::GobEngine::go (this=0x41695fd8)
at gob/gob.cpp:139
#11 0x080597e4 in runGame (detector=@0xbffffaa0,
system=@0x416b1bb8)
    at base/main.cpp:277
#12 0x08059db6 in main (argc=2, argv=0xbffffb54) at
base/main.cpp:414

(I had to set EF_ALLOW_MALLOC_0 to run it with Electric
Fence, but I don't know whether or not that's a bug.
For reference, it's because mult_palFadeKeysCount can
be 0 in mult_loadMult().)

During an earlier attempt, I also caught the crash
happening in Valgrind. It looks like it's the same error:

==23541== 
==23541== Invalid read of size 4
==23541==    at 0x81F9264: Gob::game_loadExtData(short,
short*, short*) (game.cpp:107)
==23541==    by 0x8202F75: Gob::scen_loadStatic(char)
(scenery.cpp:136)
==23541==    by 0x81FCF3F: Gob::inter_drawOperations()
(inter.cpp:400)
==23541==    by 0x81FE41C: Gob::inter_funcBlock(short)
(inter.cpp:1292)
==23541==    by 0x81FE728: Gob::inter_callSub(short)
(inter.cpp:1524)
==23541==    by 0x81FE22D: Gob::inter_funcBlock(short)
(inter.cpp:1180)
==23541==    by 0x81FE728: Gob::inter_callSub(short)
(inter.cpp:1524)
==23541==    by 0x81FC501: Gob::game_playTot(short)
(game.cpp:1863)
==23541==    by 0x81FC6EF: Gob::game_start()
(game.cpp:1931)
==23541==    by 0x81F423D: Gob::init_initGame(char*)
(init.cpp:283)
==23541==    by 0x81F39DF: Gob::GobEngine::go()
(gob.cpp:139)
==23541==    by 0x80597D3: runGame(GameDetector&,
OSystem&) (main.cpp:277)
==23541==  Address 0x1C3B6D3F is 16311 bytes inside a
block of size 22117 free'd
==23541==    at 0x1B904B04: free (vg_replace_malloc.c:152)
==23541==    by 0x81F7CD8:
Gob::draw_spriteOperation(short) (draw.cpp:396)
==23541==    by 0x8203252:
Gob::scen_renderStatic(short, short) (scenery.cpp:240)
==23541==    by 0x8203399:
Gob::scen_interRenderStatic() (scenery.cpp:279)
==23541==    by 0x81FCF5A: Gob::inter_drawOperations()
(inter.cpp:408)
==23541==    by 0x81FE41C: Gob::inter_funcBlock(short)
(inter.cpp:1292)
==23541==    by 0x81FE728: Gob::inter_callSub(short)
(inter.cpp:1524)
==23541==    by 0x81FE22D: Gob::inter_funcBlock(short)
(inter.cpp:1180)
==23541==    by 0x81FE728: Gob::inter_callSub(short)
(inter.cpp:1524)
==23541==    by 0x81FC501: Gob::game_playTot(short)
(game.cpp:1863)
==23541==    by 0x81FC6EF: Gob::game_start()
(game.cpp:1931)
==23541==    by 0x81F423D: Gob::init_initGame(char*)
(init.cpp:283)
==23541== 
==23541== Invalid read of size 2
==23541==    at 0x81F9269: Gob::game_loadExtData(short,
short*, short*) (game.cpp:108)
==23541==    by 0x8202F75: Gob::scen_loadStatic(char)
(scenery.cpp:136)
==23541==    by 0x81FCF3F: Gob::inter_drawOperations()
(inter.cpp:400)
==23541==    by 0x81FE41C: Gob::inter_funcBlock(short)
(inter.cpp:1292)
==23541==    by 0x81FE728: Gob::inter_callSub(short)
(inter.cpp:1524)
==23541==    by 0x81FE22D: Gob::inter_funcBlock(short)
(inter.cpp:1180)
==23541==    by 0x81FE728: Gob::inter_callSub(short)
(inter.cpp:1524)
==23541==    by 0x81FC501: Gob::game_playTot(short)
(game.cpp:1863)
==23541==    by 0x81FC6EF: Gob::game_start()
(game.cpp:1931)
==23541==    by 0x81F423D: Gob::init_initGame(char*)
(init.cpp:283)
==23541==    by 0x81F39DF: Gob::GobEngine::go()
(gob.cpp:139)
==23541==    by 0x80597D3: runGame(GameDetector&,
OSystem&) (main.cpp:277)
==23541==  Address 0x1C3B6D43 is 16315 bytes inside a
block of size 22117 free'd
==23541==    at 0x1B904B04: free (vg_replace_malloc.c:152)
==23541==    by 0x81F7CD8:
Gob::draw_spriteOperation(short) (draw.cpp:396)
==23541==    by 0x8203252:
Gob::scen_renderStatic(short, short) (scenery.cpp:240)
==23541==    by 0x8203399:
Gob::scen_interRenderStatic() (scenery.cpp:279)
==23541==    by 0x81FCF5A: Gob::inter_drawOperations()
(inter.cpp:408)
==23541==    by 0x81FE41C: Gob::inter_funcBlock(short)
(inter.cpp:1292)
==23541==    by 0x81FE728: Gob::inter_callSub(short)
(inter.cpp:1524)
==23541==    by 0x81FE22D: Gob::inter_funcBlock(short)
(inter.cpp:1180)
==23541==    by 0x81FE728: Gob::inter_callSub(short)
(inter.cpp:1524)
==23541==    by 0x81FC501: Gob::game_playTot(short)
(game.cpp:1863)
==23541==    by 0x81FC6EF: Gob::game_start()
(game.cpp:1931)
==23541==    by 0x81F423D: Gob::init_initGame(char*)
(init.cpp:283)
==23541== 
==23541== Invalid read of size 2
==23541==    at 0x81F926D: Gob::game_loadExtData(short,
short*, short*) (game.cpp:109)
==23541==    by 0x8202F75: Gob::scen_loadStatic(char)
(scenery.cpp:136)
==23541==    by 0x81FCF3F: Gob::inter_drawOperations()
(inter.cpp:400)
==23541==    by 0x81FE41C: Gob::inter_funcBlock(short)
(inter.cpp:1292)
==23541==    by 0x81FE728: Gob::inter_callSub(short)
(inter.cpp:1524)
==23541==    by 0x81FE22D: Gob::inter_funcBlock(short)
(inter.cpp:1180)
==23541==    by 0x81FE728: Gob::inter_callSub(short)
(inter.cpp:1524)
==23541==    by 0x81FC501: Gob::game_playTot(short)
(game.cpp:1863)
==23541==    by 0x81FC6EF: Gob::game_start()
(game.cpp:1931)
==23541==    by 0x81F423D: Gob::init_initGame(char*)
(init.cpp:283)
==23541==    by 0x81F39DF: Gob::GobEngine::go()
(gob.cpp:139)
==23541==    by 0x80597D3: runGame(GameDetector&,
OSystem&) (main.cpp:277)
==23541==  Address 0x1C3B6D45 is 16317 bytes inside a
block of size 22117 free'd
==23541==    at 0x1B904B04: free (vg_replace_malloc.c:152)
==23541==    by 0x81F7CD8:
Gob::draw_spriteOperation(short) (draw.cpp:396)
==23541==    by 0x8203252:
Gob::scen_renderStatic(short, short) (scenery.cpp:240)
==23541==    by 0x8203399:
Gob::scen_interRenderStatic() (scenery.cpp:279)
==23541==    by 0x81FCF5A: Gob::inter_drawOperations()
(inter.cpp:408)
==23541==    by 0x81FE41C: Gob::inter_funcBlock(short)
(inter.cpp:1292)
==23541==    by 0x81FE728: Gob::inter_callSub(short)
(inter.cpp:1524)
==23541==    by 0x81FE22D: Gob::inter_funcBlock(short)
(inter.cpp:1180)
==23541==    by 0x81FE728: Gob::inter_callSub(short)
(inter.cpp:1524)
==23541==    by 0x81FC501: Gob::game_playTot(short)
(game.cpp:1863)
==23541==    by 0x81FC6EF: Gob::game_start()
(game.cpp:1931)
==23541==    by 0x81F423D: Gob::init_initGame(char*)
(init.cpp:283)
==23541== 
==23541== Invalid read of size 2
==23541==    at 0x81F92D6: Gob::game_loadExtData(short,
short*, short*) (game.cpp:122)
==23541==    by 0x8202F75: Gob::scen_loadStatic(char)
(scenery.cpp:136)
==23541==    by 0x81FCF3F: Gob::inter_drawOperations()
(inter.cpp:400)
==23541==    by 0x81FE41C: Gob::inter_funcBlock(short)
(inter.cpp:1292)
==23541==    by 0x81FE728: Gob::inter_callSub(short)
(inter.cpp:1524)
==23541==    by 0x81FE22D: Gob::inter_funcBlock(short)
(inter.cpp:1180)
==23541==    by 0x81FE728: Gob::inter_callSub(short)
(inter.cpp:1524)
==23541==    by 0x81FC501: Gob::game_playTot(short)
(game.cpp:1863)
==23541==    by 0x81FC6EF: Gob::game_start()
(game.cpp:1931)
==23541==    by 0x81F423D: Gob::init_initGame(char*)
(init.cpp:283)
==23541==    by 0x81F39DF: Gob::GobEngine::go()
(gob.cpp:139)
==23541==    by 0x80597D3: runGame(GameDetector&,
OSystem&) (main.cpp:277)
==23541==  Address 0x1C3B6D47 is 16319 bytes inside a
block of size 22117 free'd
==23541==    at 0x1B904B04: free (vg_replace_malloc.c:152)
==23541==    by 0x81F7CD8:
Gob::draw_spriteOperation(short) (draw.cpp:396)
==23541==    by 0x8203252:
Gob::scen_renderStatic(short, short) (scenery.cpp:240)
==23541==    by 0x8203399:
Gob::scen_interRenderStatic() (scenery.cpp:279)
==23541==    by 0x81FCF5A: Gob::inter_drawOperations()
(inter.cpp:408)
==23541==    by 0x81FE41C: Gob::inter_funcBlock(short)
(inter.cpp:1292)
==23541==    by 0x81FE728: Gob::inter_callSub(short)
(inter.cpp:1524)
==23541==    by 0x81FE22D: Gob::inter_funcBlock(short)
(inter.cpp:1180)
==23541==    by 0x81FE728: Gob::inter_callSub(short)
(inter.cpp:1524)
==23541==    by 0x81FC501: Gob::game_playTot(short)
(game.cpp:1863)
==23541==    by 0x81FC6EF: Gob::game_start()
(game.cpp:1931)
==23541==    by 0x81F423D: Gob::init_initGame(char*)
(init.cpp:283)
==23541== 
==23541== Invalid read of size 4
==23541==    at 0x81F723F: Gob::data_seekData(short,
int, short) (dataio.cpp:317)
==23541==    by 0x81F93BB: Gob::game_loadExtData(short,
short*, short*) (game.cpp:139)
==23541==    by 0x8202F75: Gob::scen_loadStatic(char)
(scenery.cpp:136)
==23541==    by 0x81FCF3F: Gob::inter_drawOperations()
(inter.cpp:400)
==23541==    by 0x81FE41C: Gob::inter_funcBlock(short)
(inter.cpp:1292)
==23541==    by 0x81FE728: Gob::inter_callSub(short)
(inter.cpp:1524)
==23541==    by 0x81FE22D: Gob::inter_funcBlock(short)
(inter.cpp:1180)
==23541==    by 0x81FE728: Gob::inter_callSub(short)
(inter.cpp:1524)
==23541==    by 0x81FC501: Gob::game_playTot(short)
(game.cpp:1863)
==23541==    by 0x81FC6EF: Gob::game_start()
(game.cpp:1931)
==23541==    by 0x81F423D: Gob::init_initGame(char*)
(init.cpp:283)
==23541==    by 0x81F39DF: Gob::GobEngine::go()
(gob.cpp:139)
==23541==  Address 0x7C is not stack'd, malloc'd or
(recently) free'd
Fatal signal: Segmentation Fault (SDL Parachute Deployed)


----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=418820&aid=1188910&group_id=37116




More information about the Scummvm-tracker mailing list