Opened 15 years ago

Closed 15 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 15 years ago.
Savegame, right before leaving the Kickstand

Download all attachments as: .zip

Change History (12)

Changed 15 years ago by eriktorbjorn

Attachment: ft.s05 added

Savegame, right before leaving the Kickstand

comment:1 Changed 15 years ago by eriktorbjorn

Owner: set to aquadran

comment:2 Changed 15 years ago by eriktorbjorn

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

comment:3 Changed 15 years ago by aquadran

Resolution: fixed
Status: newclosed

comment:4 Changed 15 years ago by aquadran

Resolution: fixed
Status: closednew

comment:5 Changed 15 years ago by aquadran

i can't reproduce infinite loop bug

comment:6 Changed 15 years ago by eriktorbjorn

It's still happening for me.

comment:7 Changed 15 years ago by eriktorbjorn

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 Changed 15 years ago by aquadran

Priority: normalblocker

comment:9 Changed 15 years ago by aquadran

how it looks now with latest cvs ?

comment:10 Changed 15 years ago by eriktorbjorn

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

comment:11 Changed 15 years ago by aquadran

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