Opened 19 years ago
Closed 19 years ago
#2484 closed defect (fixed)
BS2: Crash near beginning of the Game
Reported by: | SF/nolange | Owned by: | eriktorbjorn |
---|---|---|---|
Priority: | normal | Component: | Engine: Sword2 |
Version: | Keywords: | ||
Cc: | Game: | Broken Sword 2 |
Description
I`m using the German Version of BS2 on WinXP SP2 and ScummVM 0.81. Right when you start the Game you have to squash the spider with the bookshelf and then you have to free yourself "on the hook". Thats as far as the game goes, ScummVM crashes just when the actor freed his hands.
I tried using uncompressed speech & music to make sure I didnt mess something up, still fails. CVS Version 0.90, February 1, 2006, 3:53 pm also fails
Release 0.80 works!
Ticket imported from: #1423140. Ticket imported from: bugs/2484.
Change History (3)
comment:1 by , 19 years ago
Summary: | Crash near beginning of the Game → BS2: Crash near beginning of the Game |
---|
comment:2 by , 19 years ago
Owner: | set to |
---|---|
Resolution: | → fixed |
Status: | new → closed |
comment:3 by , 19 years ago
Note:
See TracTickets
for help on using tickets.
[sigh] It turns out someone made a last-minute change to the way ScummVM handles WAV data, causing the mixer to try to free the audio data automagically as soon as the sound finished. This was apparently to fix a memory leak, but in the case of BS2 it was bad for two reasons:
* The WAV data is part of the game resources. BS2's resource manager needs absolute control of when resources are freed, or its reference-counters won't be worth the bytes they're imprinted on.
* The resource consists of a standard header, followed by the WAV data. Only the pointer to the resource can be freed, not the pointer to the WAV data.
I've added a workaround so that this AUTOFREE flag is always cleared by BS2 (accompanied by a big, grumpy comment). This should fix the problem.
Now we'll just need a 0.8.1a or 0.8.2 or whatever... :-(
Thanks to wjp, who both diagnosed the bug and suggested a workaround while I was still waiting for ScummVM to finish compiling.