We've spent days looking at this bug now... I'm trying to figure out
what's going on.
The short version is: we can easily get 2 threads to block each other.
One is trying to call Movie.stop() and the other is the "TaskAllMovies
Tasker" thread that QT uses to task audio files. They'll just hang out
forever, preventing any audio from ever playing again until a fresh
launch.
This only occurs with a specific set of steps, but it's probably 80%
reproducible, if you're fast enough:
1. Make a large selection in Track A
2. Cut it (calling Movie.cut())
3. Select Track B
4. Play Track B
5. Stop Track B
(Tested & studied only on Windows XP for now.)
Note steps 4 and 5 have to occur very quickly. (In our case we're
double-clicking a play/pause toggle button... a lot of our users are
double-click-happy, so this is a common thing to test for us.)
Has anyone seen this before?
We're thinking now of rolling back to an earlier model where we called
Movie.task() on the movies ourselves; then we could be sure we sync'ed
the calls so stop() and task() were mutually exclusive. :{ We're
always reluctant to put sync locks around anything as mysterious as
QTJ, but we'll see if it helps.