Opened 20 years ago
Closed 20 years ago
#1664 closed defect (fixed)
FT: ScummVM hangs during biker fight (regression)
Reported by: | eriktorbjorn | Owned by: | aquadran |
---|---|---|---|
Priority: | blocker | Component: | Engine: SCUMM |
Version: | Keywords: | ||
Cc: | Game: | Full Throttle |
Description
Latest ScummVM CVS snapshot Full Throttle, English version
ScummVM hangs during the biker fight, right after leaving the Kickstand early in the game. As far as I can tell, it's the loop in ImuseDigital::startSound() that never terminates, but I don't know why.
Adding some code to force it to terminate after, say, 10000 iterations "fixes" the problem, but that's too ugly to consider seriously.
Ticket imported from: #973731. Ticket imported from: bugs/1664.
Attachments (1)
Change History (12)
by , 20 years ago
comment:1 by , 20 years ago
Owner: | set to |
---|
comment:2 by , 20 years ago
Summary: | FT: ScummVM hangs during biker fight → FT: ScummVM hangs during biker fight (regression) |
---|
comment:3 by , 20 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
comment:4 by , 20 years ago
Resolution: | fixed |
---|---|
Status: | closed → new |
comment:7 by , 20 years ago
I saw from the channel log that aquadran already figured out what causes this, a few hours before I did, so just for reference and to save others the bother of trying to figure it out:
When Digital iMUSE runs out of sound slots, a sound with lower priority will be marked for removal and startSound() will block until the sound slot becomes free.
This usually isn't a problem since it's the ScummVM main thread that gets blocked until the timer thread can clear the slot. In this particular case, however, the sound is started from within the SMUSH timer callback, i.e. it's the timer thread itself that gets blocked.
comment:8 by , 20 years ago
Priority: | normal → blocker |
---|
comment:10 by , 20 years ago
Appears to be working. At least, I just played the scene twice without it hanging.
comment:11 by , 20 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
Savegame, right before leaving the Kickstand