Opened 3 years ago

Closed 3 years ago

#9801 closed defect (fixed)

SCI: QFG4: Crash when sliding down slippery slope

Reported by: tsoliman Owned by: m-kiewitz
Priority: normal Component: Engine: SCI
Keywords: sci32 Cc:
Game: Quest for Glory 4


git d9807b0fca self built on MacOS 10.2.5 SDL2

lookupSelector: Attempt to send to non-object or invalid script. Address 0000:0000, method Grooper::doit (room 800, script 64977, localCall ffffffff)!
Call stack (current base: 0x9):
 0: script 64994 - Glory::replay()
     obj@0001:4520 pc=0003:0551 sp=ST:0007 fp=ST:0000 argp:ST:0001
 1: script 0 - Glory::doit()
     by 0 obj@0001:4520 pc=0001:02b3 sp=ST:000d fp=ST:0009 argp:ST:0008
 2: script 64994 - Game::doit()
     by 1 obj@0001:4520 pc=0003:06ab sp=ST:0012 fp=ST:000f argp:ST:000e
 3: script 64999 - cast::doit()
     by 2 obj@0003:14c0 pc=0004:038a sp=ST:0014 fp=ST:0014 argp:ST:0013
 4: script 64999 - cast::eachElementDo(0000:0045)
     by 3 obj@0003:14c0 pc=0004:046e sp=ST:0019 fp=ST:0017 argp:ST:0015
 5:[4]  kListEachElementDo(001c:0000, 0000:0045)
     by 4 obj@0000:0000 pc:none argp:ST:0019
 6: script 64998 - hero::doit()
     by 5 obj@0013:1b8e pc=0006:0871 sp=ST:0023 fp=ST:001e argp:ST:001d
 7: script 64992 - PolyPath::doit()
     by 6 obj@0012:0462 pc=0017:04a6 sp=ST:002b fp=ST:0025 argp:ST:0024
 8:[7]  kDoBresen(0012:0462)
     by 7 obj@0000:0000 pc:none argp:ST:002b
 9: script 64945 - PolyPath::moveDone()
     by 8 obj@0012:0462 pc=001b:0268 sp=ST:002f fp=ST:002f argp:ST:002e
 a: script 64945 - PolyPath::init()
     by 9 obj@0012:0462 pc=001b:0136 sp=ST:005c fp=ST:0033 argp:ST:0032
 b: script 64992 - Motion::init()
     by a obj@0012:0462 pc=0017:0456 sp=ST:0060 fp=ST:005e argp:ST:005d
 c: script 64998 - hero::setHeading(0000:0101)
     by b obj@0013:1b8e pc=0006:0f31 sp=ST:0063 fp=ST:0063 argp:ST:0061
 d: script 28 - stopGroop::doit(0013:1b8e, 0000:0101, 0000:0000)
     by c obj@0013:1c2a pc=0013:1b12 sp=ST:0068 fp=ST:0068 argp:ST:0064
 e: script 64977 - Grooper::doit(0013:1b8e, 0000:0101, 0000:0000)
     by d obj@0013:1c2a pc=0015:0143 sp=ST:0072 fp=ST:006d argp:ST:0069

Steps to reproduce:
1 - load game
2 - go west
3 - click walk on the bottom left part of the screen
4 - a dialogue will say something like "this is slippery" - skip it
5 - crash

It doesn't always happen so that's annoying

Attachments (1)

qfg4-cd-thief.003 (43.6 KB ) - added by tsoliman 3 years ago.

Download all attachments as: .zip

Change History (12)

by tsoliman, 3 years ago

Attachment: qfg4-cd-thief.003 added


comment:1 by tsoliman, 3 years ago

the savegame is from the DOS CD (QFG Anthology)

comment:2 by m-kiewitz, 3 years ago

room 800

comment:3 by m-kiewitz, 3 years ago

Grooper::doit is getting the cycler of the client (client is ego, called "hero" in QfG4).
Grooper::doit then tries to call cycler::isKindOf, followed by cycler::vStopped.

cycler is 0:0 at that point, which causes the error.

It seems it's some kind of timing issue. Right now I plan to patch the system script responsible for Grooper::doit and check if cycler is actually set.

comment:4 by tsoliman, 3 years ago

Keywords: SCI32 added

comment:5 by wjp, 3 years ago

Keywords: sci32 added; SCI32 removed

comment:6 by csnover, 3 years ago

Summary: SCI32: QFG4: Crash when sliding down slippery slopeSCI: QFG4: Crash when sliding down slippery slope

comment:7 by bluegr, 3 years ago

Just for reference: This is one of the (many) known timing bugs in QFG4:

comment:8 by m-kiewitz, 3 years ago

I hope I finally solved it with commit bd94bbc3e309c8107688640023b95d7601651e05.

Please try it out, it doesn't always happen, which makes it difficult to make sure that it's really solved.

comment:9 by m-kiewitz, 3 years ago

Owner: set to m-kiewitz
Resolution: fixed
Status: newpending

comment:10 by tsoliman, 3 years ago

I tried several times and it seems to be fixed now! Thank you!

comment:11 by m-kiewitz, 3 years ago

Status: pendingclosed
Note: See TracTickets for help on using tickets.