[mythtv-commits] Ticket #8626: mythfrontend playback hangs
MythTV
mythtv at cvs.mythtv.org
Wed Jun 30 08:23:51 UTC 2010
#8626: mythfrontend playback hangs
---------------------------------------+------------------------------------
Reporter: tomimo@… | Owner: janne
Type: defect | Status: new
Priority: minor | Milestone: unknown
Component: MythTV - Video Playback | Version: Trunk Head
Severity: medium | Mlocked: 0
---------------------------------------+------------------------------------
The latest trunk version #25218 seems to have problems with its current
decoder locking scheme. It seems that I can pretty realiably hang the
frontend every time by trying to playback a single (specific) recorded
program via diskless MythFrontend node.
The problem does exist in two different diskless nodes that are
used for playback in this household (ie. even though the hardware's
are 2.8Ghz/Athlon/32-bit and Athlon X2/3800Mhz, they are on slow side
performance wise).
The symptom is always the following message looping eternally in the
frontend log:
2010-06-30 10:19:41.431 NVP(0), Warning: Waited 100ms for decoder to
unpause
To me it looks like that the following code in NuppelVideoPlayer.cpp might
fail, in case the condition wake up signal is sent before the waiting
thread has had the chance to call the condition.wait(). If that happens,
the waiting thread will never break from the while loop.
void NuppelVideoPlayer::UnpauseDecoder(void)
{
decoderPauseLock.lock();
if (QThread::currentThread() == (QThread*)decoderThread)
{
decoderPaused = false;
decoderThreadUnpause.wakeAll();
decoderPauseLock.unlock();
return;
}
unpauseDecoder = true;
while (!decoderThreadUnpause.wait(&decoderPauseLock, 100))
VERBOSE(VB_IMPORTANT, LOC_WARN + "Waited 100ms for decoder to
unpause");
unpauseDecoder = false;
decoderPauseLock.unlock();
}
--
Ticket URL: <http://svn.mythtv.org/trac/ticket/8626>
MythTV <http://www.mythtv.org/>
MythTV
More information about the mythtv-commits
mailing list