[mythtv] "ivtv driver has stopped responding" - with diff
Derek Battams
derek at battams.ca
Mon Feb 13 23:05:32 UTC 2006
Quoting Derek Battams <derek at battams.ca>:
> Quoting George Nassas <gnassas at mac.com>:
>
>> On 9-Feb-06, at 4:47 PM, Derek Battams wrote:
>>
[snip]
>>> For me, recordings start, but in the middle of the recording it stops
>>> and
>>> then my log fills with the 'select timeout' error until the scheduled
>>> end of the recording.
>>>
>>> Whatever was recorded up until the error is saved and I can watch the
>>> partial recording. The error is produced by the select() call on line
>>> 475 of libs/libmythtv/mpegrecorder.cpp returning 0, which signals a
>>> timeout.
[snip]
>
> Unfortunately, all my profiles were already set to PS and I still
> haven't had a reoccurence since I added my attempted fix. Of course, I
> can also say I haven't had a reoccurence since I upgraded to SVN 8906
> so perhaps that's the reason (fingers crossed)? I'll continue to
> monitor this.
Ok, this finally happened again today while watching live tv. And my
fix worked. On the select timeout, the device was closed, reopened,
and recording continued. I only lost about 1-2 seconds of the
recording, but then it continued with no problems until the end of the
program. I'd like some feedback on this before I go opening a ticket
for this. I think the more interesting issue is why this timeout
occurs during a recording in the first place. I wasn't able to find an
explanation for this so this patch is the next best thing I could come
up with and, most importantly, it works by allowing an in-progress
recording to continue instead of just dumping the printf over and over
until the program ends.
- Derek
Here's my diff for the fix:
Index: libs/libmythtv/mpegrecorder.cpp
===================================================================
--- libs/libmythtv/mpegrecorder.cpp (revision 8928)
+++ libs/libmythtv/mpegrecorder.cpp (working copy)
@@ -481,6 +481,15 @@
continue;
case 0:
printf("select timeout - ivtv driver has stopped
responding\n")
;
+ // Let's try to close the device and reopen it; I'm guessing
+ // we may lose a second or two of video, but I believe that's
+ // better than losing the entire remainder of the recording
+ // when this timeout occurs.
+ //
+ // More importantly, what exactly would cause this timeout?
+ if(close(readfd) != 0)
+ perror("close");
+ readfd = -1; // Force the PVR card to be reopened
(reinit'ed?)
continue;
default: break;
}
More information about the mythtv-dev
mailing list