Opened 16 years ago

Closed 16 years ago

#1664 closed defect (fixed)

FT: ScummVM hangs during biker fight (regression)

Reported by: eriktorbjorn Owned by: aquadran
Priority: blocker Component: Engine: SCUMM
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)

ft.s05 (4.6 KB ) - added by eriktorbjorn 16 years ago.
Savegame, right before leaving the Kickstand

Download all attachments as: .zip

Change History (12)

by eriktorbjorn, 16 years ago

Attachment: ft.s05 added

Savegame, right before leaving the Kickstand

comment:1 by eriktorbjorn, 16 years ago

Owner: set to aquadran

comment:2 by eriktorbjorn, 16 years ago

Summary: FT: ScummVM hangs during biker fightFT: ScummVM hangs during biker fight (regression)

comment:3 by aquadran, 16 years ago

Resolution: fixed
Status: newclosed

comment:4 by aquadran, 16 years ago

Resolution: fixed
Status: closednew

comment:5 by aquadran, 16 years ago

i can't reproduce infinite loop bug

comment:6 by eriktorbjorn, 16 years ago

It's still happening for me.

comment:7 by eriktorbjorn, 16 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 aquadran, 16 years ago

Priority: normalblocker

comment:9 by aquadran, 16 years ago

how it looks now with latest cvs ?

comment:10 by eriktorbjorn, 16 years ago

Appears to be working. At least, I just played the scene twice without it hanging.

comment:11 by aquadran, 16 years ago

Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.