[linux-dvb] CX18 Oops

Brandon Jenkins bcjenkins at tvwhere.com
Mon Aug 18 19:17:18 CEST 2008


On Mon, Aug 18, 2008 at 6:35 AM, Brandon Jenkins <bcjenkins at tvwhere.com> wrote:
> On Sat, Aug 16, 2008 at 10:13 PM, Andy Walls <awalls at radix.net> wrote:
>> On Mon, 2008-08-11 at 17:33 -0400, Brandon Jenkins wrote:
>>> On Fri, Aug 8, 2008 at 10:18 AM, Andy Walls <awalls at radix.net> wrote:
>>> > Brandon,
>>> >
>>> > I have checked in a fix to defend against the Ooops we both encountered.
>>> > The fix will also generate a WARN dump and some queue stats when it runs
>>> > across the cause, but will otherwise try to clean up as best it can to
>>> > allow further operation.
>>> >
>>> > The band-aid fix is the latest change at
>>> >
>>> > http://linuxtv.org/hg/~awalls/v4l-dvb
>>> >
>>> > Please provide the extra debug that happens if you encounter the warning
>>> > in your logs.  I have only encountered the problem twice over a several
>>> > month period, so its hard to get insight into the root cause buffer
>>> > accounting error at that rate.
>>>
>>> Andy,
>>>
>>> I had an oops today, first one in a few days
>>>
>>> Brandon
>>
>> Brandon & Jeff,
>>
>> I have updated my repo at
>>
>> http://linuxtv.org/hg/~awalls/v4l-dvb
>>
>> with 3 changes:
>>
>> 1. Back out the original band aid fix
>> 2. Simplify the queue flush routines (you will not see that oops again)
>> 3. Fix the interrupt handler to obtain a queue lock (prevents queue
>> corruption)
>>
>> >From most of the output you provided, it was pretty obvious that q_full
>> was always claiming to have more buffers that it actually did.  I
>> hypothesized this could come about at the end of a capture when the
>> encoder hadn't really stopped transferring buffers yet (after we told it
>> to stop) and then we try to clear q_full while the interrupt handler is
>> still trying to add buffers.  This could happen because the interrupt
>> handler never (ever) properly obtained a lock for manipulating the
>> queues.  This could have been causing the queue corruption.
>>
>> Please test.  I need feedback that I haven't introduced a deadlock.
>>
>> It also appears that the last change requiring the interrupt handler to
>> obtain a lock, completely mitigates me having to use the "-cache 8192"
>> option to mplayer for digital captures, and greatly reduces the amount
>> of cache I need to have mplayer use for analog captures.
>>
> [snip]
>
> Andy,
>
> I have update to the new code. Interestingly now I am getting audio
> noises (chirping) while watching TV. Is there anything which has been
> done that could affect sound?
>
> Otherwise no issues thus far.
>
> Brandon
>
Andy,

I also seeing these messages in dmesg:

[65288.817420] cx18-0: Cannot find buffer 58 for stream TS
[65288.817440] cx18-0: Could not find buf 58 for stream TS
[65840.130797] cx18-0: Cannot find buffer 17 for stream TS
[65840.130797] cx18-0: Could not find buf 17 for stream TS
[65861.882721] cx18-0: Cannot find buffer 48 for stream TS
[65861.882741] cx18-0: Could not find buf 48 for stream TS
[66151.627392] cx18-0: Cannot find buffer 107 for stream encoder MPEG
[66151.627392] cx18-0: Could not find buf 107 for stream encoder MPEG
[67632.953680] cx18-0: Cannot find buffer 99 for stream encoder MPEG
[67632.953680] cx18-0: Could not find buf 99 for stream encoder MPEG
[67795.527911] cx18-0: Cannot find buffer 106 for stream encoder MPEG
[67795.527911] cx18-0: Could not find buf 106 for stream encoder MPEG

Brandon



More information about the linux-dvb mailing list