[mythtv] MythSocket class

Jim Westfall jwestfall at surrealistic.net
Sun May 28 22:42:51 UTC 2006


John P Poet <jppoet at gmail.com> wrote [05.28.06]:
> On 5/28/06, Isaac Richards <ijr at case.edu> wrote:
> >On Sunday 28 May 2006 3:31 am, John P Poet wrote:
> >> I grabbed version 10051 and applied these patches.  I then started up
> >> recordings on most of my tuners.
> >>
> >> Behavior is a little strange.  Topaz is my master backend, Cobalt is
> >> my slave backend.  Both backends seem to startup just fine:
> >
> >Thanks.  Mind trying to repro with '-v socket,network' ?
> >
> >Isaac
> 
> New logs attached.
> 
> I started up enough record jobs that both backends should have gone to
> work.  As far as I can tell, the slave backend was never used to
> record anything, and the extra shows where marked as conflicts.
> 
> A quick look at the logs shows the master backend (topaz) thinking
> that the slave backend (cobalt) is bouncing up and down.
> 
> My frontend (jade) is also running really slow in this configuration.
> 
> Anything else I can do?  Do you want a log from the frontend?  With
> '-v socket,network' ?
> 
> John

I think this is the issue.

void MainServer::reconnectTimeout(void)
{
...

    masterServerSock->writeStringList(strlist);
    masterServerSock->readStringList(strlist);
    masterServerSock->setCallbacks(this);

    masterServer = new PlaybackSock(this, masterServerSock, server, true);
    playbackList.push_back(masterServer);

    masterServerSock->Unlock();

    // Handle any messages sent before the readyRead signal was connected.
    ProcessRequest(masterServerSock);
...
}

There is a race going on between the mythsocket readyread thread and that 
ProcessRequest().  The readyread thread sees a readable socket, but the 
ProcessRequest gobbles up the data.  This results in the socket being 
closed, since the thread sees it as readable but 0 bytes are available for 
reading.

try commenting that ProcessRequest(masterServerSock); out.  line 3699 of 
mythbackend/mainserver.cpp.

jim  


More information about the mythtv-dev mailing list