Opened 6 years ago

Closed 5 years ago

#10760 closed defect (fixed)

QFG4: Crash entering the inn

Reported by: Vhati Owned by: sluicebox
Priority: normal Component: Engine: SCI
Version: Keywords: sci32 original has-pull-request
Cc: Game: Quest for Glory 4

Description

I started a new game, grabbed the Dark One Sign, ran straight to town before sunrise, climbed the wall. The sun was up as I reach the Burgomeister's window, who did his shouty thing. When I click the inn's door, ScummVM crashed. As luck would have it, I created a save immediately before clicking the door.

I was unable to replicate this in the original interpreter.

Attachments (1)

sci.001 (42.6 KB ) - added by Vhati 6 years ago.
SavedGame - Approaching the inn

Download all attachments as: .zip

Change History (8)

by Vhati, 6 years ago

Attachment: sci.001 added

SavedGame - Approaching the inn

comment:1 by Vhati, 6 years ago

ScummVM 2.1.0git3770-g15306581ab (Oct 18 2018 04:27:32)
Windows 7 64bit
QFG4 CD (English)

File - 5kb MD5 - Full MD5
RESOURCE.000 - 263dce4aa34c49d3ad29bec889007b1c - 1364ba69e3c0abb68cc0170650a56692
RESOURCE.AUD - c39521bffb1d8b19a57394866184a0ca - 71098b9e97e20c8941c0e4812d5f906f
RESOURCE.MAP - aba367f2102e81782d961b14fbe3d630 - 801a04cc6aa5d437681a2dd0b6545248
RESOURCE.SFX - 3cf95e09dab8b11d675e0537e18b499a - 7c858d7253f86dab4cc6066013c5ecec

comment:2 by Vhati, 6 years ago

Forgot to mention: the console said...
" " "
lookupSelector: Attempt to send to non-object or invalid script. Address 0000:00
00, method Grycler::init (room 260, script 64977, localCall ffffffff)!
" " "

comment:3 by digitall, 6 years ago

Same script, different room, but sounds like the same cause as bug #10747. This will need that script to be investigate and disassembled by a SCI developer and a workaround patched into the engine.

If this is just a read of an uninitialised variable, this should be a simple solution, but if the issue is more complex, a script patch may be needed:
https://github.com/scummvm/scummvm/blob/master/engines/sci/engine/workarounds.cpp#L495

comment:4 by Vhati, 6 years ago

@digitall:

Same script, different room, but sounds like the same cause

Yep. Crashes in the same way.

) backtrace
script 64992 - MoveTo::init(hero, 76d, 111d, 0041:29b4); pc=0017:0456
script 64998 - hero::setHeading(0); pc=0006:0f31
script 28 - stopGroop::doit(hero, 0, 0); pc=0013:01b12
script 64977 - Grooper::doit(hero, 0, 0); pc=0015:022e
script 64998 - hero::setCycle(Grycler, stopGroop, 0); pc=0006:06af
script 64977 - Grycler::init(hero, stopGroop, 0); pc=0015:0309 is the crashing opcode
) vo hero cycler
[0012:036c] Grycler

) disasm 0012:036c init bc
0015:0309: 4a 06 00       send  0006
  <no such object>::isKindOf[INVALID_OBJ](0018:0197)

At that moment, hero's "looper" property is stopGroop.
stopGroop's "oldCycler" property is 0000:0000.


oldCycler is already null the moment the OP savegame is restored.

Last edited 6 years ago by Vhati (previous) (diff)

comment:5 by sluicebox, 5 years ago

Keywords: sci32 original has-pull-request added; SCI32 removed
Owner: set to sluicebox

comment:6 by Filippos Karapetis <bluegr@…>, 5 years ago

In c1610a9f:

SCI32: Fix QFG4CD Grooper crashes at inn and monolith

Fixes bugs #10747, #10760

comment:7 by bluegr, 5 years ago

Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.