Suspect memory corruption with cx88-dvb driver - edge case of full buffer.
- Date: Mon, 21 Jan 2008 12:40:13 +0000
- From: Mark Bryars <v4l@xxxxxxxxxxxxxxx>
- Subject: Suspect memory corruption with cx88-dvb driver - edge case of full buffer.
I have a good suspicion that the cx88 dvb driver is corrupting random
parts of memory in the case that it runs out of buffers.. I see in the
dvb_buf_setup that it is set to a buffer of 32, I couldn't find any
obvious code that tests for this being full, and it seems a coincidence
to me that every time I hit a period of high load, then as soon as there
are 32 buffers handled something random breaks shortly thereafter. I
turned on debugging lock checking in the kernel to diagnose a deadlock
in another driver, An recent example is below where a random lock gets
corrupted, but it manifests itself in processes crashing at random after
the occurrence and deadlocks in other drivers too.
It may be worth noting i have multiple cards installed, it would be
helpful for diagnosis of other issues if the cx88 driver also indicated
which card it was complaining about in error messages.
Regards,
Mark
Jan 19 08:41:45 (none) user.warn kernel: cx88_wakeup: 6 buffers handled
(should be 1)
Jan 19 08:41:45 (none) user.warn kernel: cx88_wakeup: 6 buffers handled
(should be 1)
Jan 19 08:41:45 (none) user.warn kernel: cx88_wakeup: 2 buffers handled
(should be 1)
Jan 19 08:41:45 (none) user.warn kernel: cx88_wakeup: 32 buffers handled
(should be 1)
Jan 19 08:41:48 (none) user.warn kernel:
Jan 19 08:41:48 (none) user.warn kernel: =================================
Jan 19 08:41:48 (none) user.warn kernel: [ INFO: inconsistent lock state ]
Jan 19 08:41:48 (none) user.warn kernel: 2.6.24-rc3 #2
Jan 19 08:41:48 (none) user.warn kernel: ---------------------------------
Jan 19 08:41:48 (none) user.warn kernel: inconsistent {softirq-on-W} ->
{in-softirq-W} usage.
Jan 19 08:41:48 (none) user.warn kernel: swapper/0
[HC0[0]:SC1[1]:HE1:SE0] takes:
Jan 19 08:41:48 (none) user.warn kernel: (&dvbdemux->lock){-+..}, at:
[<f48e617d>] dvb_dmx_swfilter_packets+0x1d/0x56 [dvb_core]
Jan 19 08:41:48 (none) user.warn kernel: {softirq-on-W} state was
registered at:
Jan 19 08:41:48 (none) user.warn kernel: [<c0141887>]
trace_hardirqs_on+0xb6/0x156
Jan 19 08:41:48 (none) user.warn kernel: [<c0142461>]
__lock_acquire+0x6a6/0x10f7
Jan 19 08:41:48 (none) user.warn kernel: [<c0120c93>]
finish_task_switch+0x50/0x95
Jan 19 08:41:48 (none) user.warn kernel: [<c0120c69>]
finish_task_switch+0x26/0x95
Jan 19 08:41:48 (none) user.warn kernel: [<c0142f2c>]
lock_acquire+0x7a/0x94
Jan 19 08:41:48 (none) user.warn kernel: [<f48e5fe4>]
dvb_dmx_swfilter+0x1c/0x132 [dvb_core]
Jan 19 08:41:48 (none) user.warn kernel: [<c03ca38c>] _spin_lock+0x2c/0x55
Jan 19 08:41:48 (none) user.warn kernel: [<f48e5fe4>]
dvb_dmx_swfilter+0x1c/0x132 [dvb_core]
Jan 19 08:41:48 (none) user.warn kernel: [<f48e5fe4>]
dvb_dmx_swfilter+0x1c/0x132 [dvb_core]
Jan 19 08:41:48 (none) user.warn kernel: [<f487b411>]
videobuf_dvb_thread+0xf4/0x15c [videobuf_dvb]
Jan 19 08:41:48 (none) user.warn kernel: [<f487b31d>]
videobuf_dvb_thread+0x0/0x15c [videobuf_dvb]
Jan 19 08:41:48 (none) user.warn kernel: [<c0136c35>] kthread+0x34/0x57
Jan 19 08:41:48 (none) user.warn kernel: [<c0136c01>] kthread+0x0/0x57
Jan 19 08:41:48 (none) user.warn kernel: [<c0104bf7>]
kernel_thread_helper+0x7/0x10
Jan 19 08:41:48 (none) user.warn kernel: [<ffffffff>] 0xffffffff
Jan 19 08:41:48 (none) user.warn kernel: irq event stamp: 1209420
Jan 19 08:41:48 (none) user.warn kernel: hardirqs last enabled at
(1209420): [<c0129dbc>] tasklet_action+0x25/0xae
Jan 19 08:41:48 (none) user.warn kernel: hardirqs last disabled at
(1209419): [<c0129da1>] tasklet_action+0xa/0xae
Jan 19 08:41:48 (none) user.warn kernel: softirqs last enabled at
(1209412): [<c01298e5>] do_softirq+0x53/0x55
Jan 19 08:41:48 (none) user.warn kernel: softirqs last disabled at
(1209417): [<c01298e5>] do_softirq+0x53/0x55
--
video4linux-list mailing list
Unsubscribe mailto:video4linux-list-request@xxxxxxxxxx?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list