#10884 closed defect (fixed)
SCI: ECO1: Mosaic puzzle crash (CD version)
Reported by: | sluicebox | Owned by: | sluicebox |
---|---|---|---|
Priority: | normal | Component: | Engine: SCI |
Version: | Keywords: | original has-pull-request | |
Cc: | Game: | EcoQuest 1 |
Description
The temple (room 140) has a complex script bug in the CD version which can crash the interpreter when solving the mosaic puzzle after loading a game that was saved during the puzzle. The bug causes invalid memory access which locks up Sierra's interpreter and can cause ScummVM to fail an assertion.
This is a script bug that puts the game in a state that's unsafe to save. When restoring and solving the puzzle the interpreter will attempt to use a stale hunk address from before the restore.
For this bug to occur, the conch shell must still be on the pedestal in the center of the room.
To reproduce in Sierra's interpreter with attached save game:
- Click Do on the mosaic to bring up the puzzle
- Save the game
- Load the new saved game
- Solve the puzzle (manually or by clicking Help a lot)
- The game will freeze
To reproduce in ScummVM with attached save game
- Enter temple
- Click Do on the mosaic to bring up the puzzle
- In the debugger type "send shell underBits" and record the result
- Save the game
- Load the new saved game
- In the debugger type "send shell underBits" to see that the value hasn't changed
- In the debugger type "segtable" and record the hunk segment
- Solve the puzzle (manually or by clicking Help a lot)
- If the hunk segment equals shell:underBits' segment then an assertion will fail, otherwise there will be a console warning such as "Attempt to free Hunk from address 002c:051e: Invalid segment type 9!"
To quickly test the script patch with attached save game
- Enter temple
- Click Do on the mosaic to bring up the puzzle
- In the debugger type "send shell underBits" to see that it is zero
The script patch fully disposes of shell's resources when the puzzle is displayed so that it's safe to save the game.
Attachments (2)
Change History (6)
by , 6 years ago
Attachment: | ecoquest-cd.005 added |
---|
by , 6 years ago
comment:1 by , 6 years ago
comment:3 by , 6 years ago
Owner: | set to |
---|---|
Resolution: | → fixed |
Status: | new → closed |
comment:4 by , 3 years ago
Owner: | changed from | to
---|
https://github.com/scummvm/scummvm/pull/1500