Opened 2 months ago

Closed 8 weeks ago

#14990 closed defect (fixed)

LOL: Crash when going up in the Draracle's cave

Reported by: cspiegel Owned by: athrxx
Priority: normal Component: Engine: Kyra
Version: Keywords:
Cc: Game: Lands of Lore

Description

I've tested the latest Git version (01a2d2ed) as well as 2.8.0, and both exhibit this crash.

I'm attaching a save file (done with the GOG version of LOL). Load the save, then try to go up the ladder. scummvm crashes, with the following backtrace (Git build):

Thread 1 "scummvm" received signal SIGSEGV, Segmentation fault.
0x0000555559cf1c6a in Common::SearchSet::hasFile (this=0x55555cc06878, path=...) at common/archive.cpp:424
424                     if (it->_arc->hasFile(path))
(gdb) bt
#0  0x0000555559cf1c6a in Common::SearchSet::hasFile (this=0x55555cc06878, path=...) at common/archive.cpp:424
#1  0x0000555559cf1c6c in Common::SearchSet::hasFile (this=0x55555cc06858, path=...) at common/archive.cpp:424
#2  0x00005555576cc1d5 in Kyra::Resource::exists (this=0x55555cc06630, file=..., errorOutOnFail=false) at engines/kyra/resource/resource.cpp:356
#3  0x0000555557750310 in Kyra::Sound::isVoicePresent (this=0x55555ce87850, file=0x55555d80f250 "LADDER") at engines/kyra/sound/sound.cpp:60
#4  0x000055555757b892 in Kyra::LoLEngine::snd_playSoundEffect (this=0x55555cf68d60, track=137, volume=255) at engines/kyra/sound/sound_lol.cpp:189
#5  0x00005555575603d5 in Kyra::LoLEngine::olol_playSoundEffect (this=0x55555cf68d60, script=0x7fffffffb1c0) at engines/kyra/script/script_lol.cpp:1169
#6  0x0000555557571346 in Common::Functor1Mem<Kyra::EMCState*, int, Kyra::LoLEngine>::operator() (this=0x55555ce96ff0, v1=0x7fffffffb1c0) at ./common/func.h:460
#7  0x0000555557720354 in Kyra::EMCInterpreter::op_sysCall (this=0x55555ce95b70, script=0x7fffffffb1c0) at engines/kyra/script/script.cpp:316
#8  0x000055555771fced in Kyra::EMCInterpreter::run (this=0x55555ce95b70, script=0x7fffffffb1c0) at engines/kyra/script/script.cpp:218
#9  0x0000555557557ac7 in Kyra::LoLEngine::runLevelScriptCustom (this=0x55555cf68d60, block=290, flags=2, charNum=-1, item=0, reg3=0, reg4=0)
    at engines/kyra/script/script_lol.cpp:87
#10 0x0000555557557947 in Kyra::LoLEngine::runLevelScript (this=0x55555cf68d60, block=290, flags=2) at engines/kyra/script/script_lol.cpp:65
#11 0x0000555557528c58 in Kyra::LoLEngine::moveParty (this=0x55555cf68d60, direction=2, unk1=0, unk2=0, buttonShape=80) at engines/kyra/engine/scene_lol.cpp:695
#12 0x000055555753c821 in Kyra::LoLEngine::clickedUpArrow (this=0x55555cf68d60, button=0x55555cf69d58) at engines/kyra/gui/gui_lol.cpp:953
#13 0x0000555557557692 in Common::Functor1Mem<Kyra::Button*, int, Kyra::LoLEngine>::operator() (this=0x55555ce93170, v1=0x55555cf69d58) at ./common/func.h:460
#14 0x0000555557541f43 in Kyra::GUI_LoL::processButtonList (this=0x55555d80fe80, buttonList=0x55555cf69d58, inputFlag=0, mouseWheel=0 '\000')
    at engines/kyra/gui/gui_lol.cpp:2176
#15 0x0000555557654b3b in Kyra::KyraEngine_v1::checkInput (this=0x55555cf68d60, buttonList=0x55555cf692a8, mainLoop=true, eventFlag=0)
    at engines/kyra/engine/kyra_v1.cpp:338
#16 0x000055555753b93c in Kyra::LoLEngine::gui_updateInput (this=0x55555cf68d60) at engines/kyra/gui/gui_lol.cpp:765
#17 0x00005555575118ff in Kyra::LoLEngine::runLoop (this=0x55555cf68d60) at engines/kyra/engine/lol.cpp:948
#18 0x000055555750f498 in Kyra::LoLEngine::go (this=0x55555cf68d60) at engines/kyra/engine/lol.cpp:578
#19 0x0000555557523b8b in Kyra::KyraEngine_v1::run (this=0x55555cf68d60) at ./engines/kyra/kyra_v1.h:205
#20 0x0000555555fb66c1 in runGame (plugin=0x55555c71f280, enginePlugin=0x55555c32b620, system=..., debugLevels=...) at base/main.cpp:326
#21 0x0000555555fb8a03 in scummvm_main (argc=1, argv=0x7fffffffda88) at base/main.cpp:806
#22 0x0000555555fb36bc in main (argc=1, argv=0x7fffffffda88) at backends/platform/sdl/posix/posix-main.cpp:44

Attachments (1)

lol-cd.005 (18.4 KB ) - added by cspiegel 2 months ago.

Download all attachments as: .zip

Change History (5)

by cspiegel, 2 months ago

Attachment: lol-cd.005 added

comment:1 by eriktorbjorn, 2 months ago

I had hoped there would be something easy to diagnose, but not for me. One problem seems to be that character 4 is saying something, and as far as I understand the characters should be numbered 0 through 3.

Though LolEngine::snd_playCharacterSpeech() seems to think that anything up to and including 64 is ok, so I don't know...

comment:2 by athrxx, 2 months ago

Thanks for the report. I have made a fix. Please test with the latest build if it works for you as intended.

comment:3 by cspiegel, 8 weeks ago

Yes, the latest build works. Thank you!

comment:4 by athrxx, 8 weeks ago

Owner: set to athrxx
Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.