Opened 11 years ago

Closed 5 months ago

#5294 closed defect (fixed)

MOTHERGOOSE SCI1.1: Crash at the very end

Reported by: SF/kuroshiro Owned by: sluicebox
Priority: normal Component: Engine: SCI
Version: Keywords:
Cc: Game: Mixed-Up Mother Goose

Description

Mixed Up Mother Goose (Floppy/Dos/English) ScummVM 1.2.0SVN

At the very end, after you complete the game, it crashes with the message: "Uninitialized read for temp 367 from method sunrise::changeState (script 94, room 94, localCall 3c9)!"

Ticket imported from: #3051163. Ticket imported from: bugs/5294.

Attachments (1)

mothergoose-1.000 (32.3 KB ) - added by SF/kuroshiro 11 years ago.
you'll have to solve one puzzle to get to the end -- the ladder is in the crooked man's house

Download all attachments as: .zip

Change History (13)

by SF/kuroshiro, 11 years ago

Attachment: mothergoose-1.000 added

you'll have to solve one puzzle to get to the end -- the ladder is in the crooked man's house

comment:1 by bluegr, 11 years ago

Fixed, though I don't have this version of mother goose to test it out :(

If you get any further errors, please report them

comment:2 by bluegr, 11 years ago

Owner: set to bluegr
Resolution: fixed
Status: newclosed

comment:3 by m-kiewitz, 11 years ago

not fixed according to bug #3051525

"It might take a little longer to crash now, though I'm not entirely sure."

comment:4 by m-kiewitz, 11 years ago

Status: closednew

comment:5 by SF/kuroshiro, 11 years ago

"please just re-open the old bug and don't create new ones."

Just to let you know, not everyone can do that. I can't at least.

comment:6 by m-kiewitz, 11 years ago

Summary: MOTHERGOOSE: Crash at the very endMOTHERGOOSE SCI1.1: Crash at the very end

comment:7 by m-kiewitz, 11 years ago

hmm i just finished the game (seems that i got your version) and it worked for me. I finished the game, end dialog came up, i selected "replay" and it went to the main menu. Could you please try again?

comment:8 by m-kiewitz, 11 years ago

Owner: changed from bluegr to m-kiewitz

comment:9 by SF/kuroshiro, 11 years ago

Ok, I can confirm that this is now fixed as of r52446, though it definitely wasn't before. Not sure what caused it. Actually, the performance of the whole game in general seems to be significantly improved, with various small errors and glitches vanishing.

comment:10 by m-kiewitz, 11 years ago

Status: newclosed

comment:11 by sluicebox, 5 months ago

Resolution: fixed
Status: closednew

*CREEEEEAAAAAK* Arise, 11 year old unfixed bug! Arise!!

We have a workaround for this uninitialized read, but it doesn't do anything. The uninit read occurs in a local procedure, but there is no local procedure signature attached to the workaround entry. But that doesn't matter because...

The uninitialized read isn't the bug here, it's just a symptom. This game does a lot of save-slot calculations in its scripts that are incompatible with our virtual-save-slot scheme. We have several script patches and workarounds to deal with this, but they are incomplete. There are other scripts that do this which we don't do anything about. The game can still end up in a state where the global that contains the current save slot number (global 179) receives a SCI save slot, such as 1, instead of our virtual slot 101. That's what causes the uninit read. And even if the uninit read workaround entry were to have an effect, ScummVM would just have crashed a few instructions later when kDeviceInfo(K_DEVICE_INFO_GET_SAVEFILE_NAME) got passed an invalid virtual id.

I'll be auditing the scripts to figure out what to do about the remaining ones that are incompatible with ScummVM virtual save slot numbers.

comment:12 by sluicebox, 5 months ago

Owner: changed from m-kiewitz to sluicebox
Resolution: fixed
Status: newclosed

This is now fully fixed in e5951416d4024701315bd7563859436434a31ad5.

The scenario that would still crash was when a new game was started and played all the way through without restoring. The game's save global is now updated when auto-saving in addition to when restoring, so it's now always correct (a virtual id) when there is a save file.

Note: See TracTickets for help on using tickets.