Web lists-archives.org

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