[mythtv-commits] Ticket #12045: Live TV after a short while always make the frontend hang
MythTV
noreply at mythtv.org
Mon Feb 3 13:32:52 UTC 2014
#12045: Live TV after a short while always make the frontend hang
--------------------------------------+------------------------
Reporter: jyavenard | Owner:
Type: Bug Report - General | Status: new
Priority: blocker | Milestone: unknown
Component: MythTV - Recording | Version: 0.27-fixes
Severity: medium | Keywords:
Ticket locked: 0 |
--------------------------------------+------------------------
I'm very puzzled with this one.
It only started since I've been back from a month away. I had never
experienced it in the past.
At first, I thought the issue with with my RAID array where the recordings
are stored, as smart status of one of the disk started to be very verbose.
Following that, I instead used as recording storage a NFS share to a very
fast machine over gigabit (easily saturate the gigabit link and having
local write speed in excess of 400MB/s on the NFS server)
that didn't solve the problem.
So I created a brand new backend, new disks, database on fast SSD (580MB/s
read/write) the lot...
still issue is just as bad, no matter the frontend.
When starting live TV after a short while (ranging from 10-15s to 3-4
minutes)
the frontend will hang.
In the backend log, you can see usually:
{{{
Feb 4 00:16:33 mediaserver-surrey1 mythbackend: mythbackend[27099]: E
ProcessRequest ringbuffer.cpp:1105 (WaitForAvail)
RingBuf(/external/recordings/1009_20140203131345.mpg): Waited 16 seconds
for data, aborting.
}}}
I attempted to increase the various wait time, to know available.
In fact, from the logs, it appears that once we enter a particular
condition, we just never exit the waiting loop; it will always time out.
in the logs usually there are plenty of:
{{{
Feb 4 00:15:41 mediaserver-surrey1 mythbackend: mythbackend[27099]: I
ProcessRequest ringbuffer.cpp:1098 (WaitForAvail)
RingBuf(/external/recordings/1009_20140203131345.mpg): Waited 0.5 seconds
for data #012#011#011#011to become available... 182840 < 229376
}}}
which is fine, playback is just normal
If suddenly the writer thread takes a little longer than usual for
whatever reason, WaitForAvailable will start waiting forever:
{{{
Feb 4 00:15:53 mediaserver-surrey1 mythbackend: mythbackend[27099]: W
TFWWrite threadedfilewriter.cpp:539 (DiskLoop)
TFW(/external/recordings/1009_20140203131345.mpg:71): write(65424) cnt 22
total 1362060 -- took a long time, 1425 ms
Feb 4 00:15:53 mediaserver-surrey1 mythbackend: mythbackend[27099]: I
ProcessRequest ringbuffer.cpp:1098 (WaitForAvail)
RingBuf(/external/recordings/1009_20140203131345.mpg): Waited 8.0 seconds
for data #012#011#011#011to become available... 137524 < 229376
}}}
To accentuate the issue and cause it to occur even more often, I run a
side process, writing to the NFS share (not fast 10MB/s)
There seems to be a racing condition somewhere, once the writer thread
takes longer than usual once, then the reader thread will never recover.
Attach is a log with the wait changed to 48s (WaitForAvail) and 20s
(WaitForReadsAllowed).
--
Ticket URL: <https://code.mythtv.org/trac/ticket/12045>
MythTV <http://www.mythtv.org>
MythTV Media Center
More information about the mythtv-commits
mailing list