[mythtv] more on dvb record failure (race condition in
signalmonitor.cpp?)
Mark Weaver
mark-clist at npsl.co.uk
Tue Aug 23 22:45:49 UTC 2005
Daniel Kristjansson wrote:
> On Mon, 2005-08-22 at 17:18 +0100, Mark Weaver wrote:
>
>>Mark Weaver wrote:
>>
>>>I am also having trouble with DVB (livetv|recording) -- sometimes
>>>getting the PMT timeout. I have tried latest SVN but the backend seems
>>>very unstable for me. I've done a little debugging, so far I think I
>>>have found a race condition in signalmonitor.cpp:
>>
It appears that the SignalMonitor class is reused (sometimes without an
intervening call to Stop). On the next run, exit=true therefore the
thread just quits immediately, and Start() hangs waiting for running to
become true (which it misses). I tested this by running mythtv-setup
and got a hang scanning channels.
void SignalMonitor::Stop()
{
VERBOSE(VB_CHANNEL, QString("SignalMonitor::Stop(%1) --
begin").arg((unsign\
ed int)this));
{
QMutexLocker locker(&startStopLock);
if (running)
{
exit = true;
pthread_join(monitor_thread, NULL);
+ exit = false;
}
}
Setting exit=false again after pthread_join and inside the mutex looks
correct to me if the class is to be reused (and solves that problem;
scanning now completes), although I am unable to get a lock on any channels.
I am currently getting:
DVB#0 ERROR - Getting Frontend tuning parameters failed. (22) Invalid
argument
So I'll look into that one next.
More information about the mythtv-dev
mailing list