bttv_ioctl / BKL preempt / scheduling while atomic and panic

From: Michael Buesch
Date: Mon Oct 25 2004 - 04:16:40 EST


Hi,

I recently had a crash with kernel 2.6.9-ck2-ac4-nozeroram
The nozeroram patch is available here:
http://people.freenet.de/tuxsoft/other/nozeroram.diff

I got the following messages in dmesg:

Oct 25 09:39:03 lfs kernel: bad: scheduling while atomic!
Oct 25 09:39:03 lfs kernel: [<b035ebc0>] schedule+0x4a0/0x572
Oct 25 09:39:03 lfs kernel: [<f0a00f05>] bttv_ioctl+0x31/0x5e [bttv]
Oct 25 09:39:03 lfs kernel: [<f09ff7ac>] bttv_do_ioctl+0x0/0x1728 [bttv]
Oct 25 09:39:03 lfs kernel: [<b0162057>] sys_ioctl+0x1d4/0x245
Oct 25 09:39:03 lfs kernel: [<b0104052>] work_resched+0x5/0x16
Oct 25 09:39:03 lfs kernel: bad: scheduling while atomic!
Oct 25 09:39:03 lfs kernel: [<b035ebc0>] schedule+0x4a0/0x572
Oct 25 09:39:03 lfs kernel: [<b01243b5>] __mod_timer+0x11d/0x159
Oct 25 09:39:03 lfs kernel: [<b035f1b0>] schedule_timeout+0x6a/0xb7
Oct 25 09:39:03 lfs kernel: [<b0124e06>] process_timeout+0x0/0x5
Oct 25 09:39:03 lfs kernel: [<b0162a22>] do_select+0x294/0x2cf
Oct 25 09:39:03 lfs kernel: [<b01625dd>] __pollwait+0x0/0xc1
Oct 25 09:39:03 lfs kernel: [<b0162cc7>] sys_select+0x255/0x488
Oct 25 09:39:03 lfs kernel: [<b035f904>] _spin_unlock_irq+0x9/0x1c
Oct 25 09:39:03 lfs kernel: [<b0103fd9>] sysenter_past_esp+0x52/0x71
Oct 25 09:39:03 lfs kernel: bad: scheduling while atomic!
Oct 25 09:39:03 lfs kernel: [<b035ebc0>] schedule+0x4a0/0x572
Oct 25 09:39:03 lfs kernel: [<b0139799>] __alloc_pages+0x9f/0x323
Oct 25 09:39:03 lfs kernel: [<b02c9974>] sock_aio_read+0xe8/0x100
Oct 25 09:39:03 lfs kernel: [<b035f1fb>] schedule_timeout+0xb5/0xb7
Oct 25 09:39:03 lfs kernel: [<b011a7f4>] add_wait_queue+0x1a/0x46
Oct 25 09:39:03 lfs kernel: [<b031d996>] unix_poll+0xc1/0xc6
Oct 25 09:39:03 lfs kernel: [<b0162a22>] do_select+0x294/0x2cf
Oct 25 09:39:03 lfs kernel: [<b01625dd>] __pollwait+0x0/0xc1
Oct 25 09:39:03 lfs kernel: [<b011a9ec>] autoremove_wake_function+0x0/0x43
Oct 25 09:39:03 lfs kernel: [<b0162cc7>] sys_select+0x255/0x488
Oct 25 09:39:03 lfs kernel: [<b0103fd9>] sysenter_past_esp+0x52/0x71
Oct 25 09:39:03 lfs kernel: Warning: kfree_skb on hard IRQ 00000000
Oct 25 09:39:03 lfs kernel: bad: scheduling while atomic!
Oct 25 09:39:03 lfs kernel: [<b035ebc0>] schedule+0x4a0/0x572
Oct 25 09:39:03 lfs kernel: [<b0139799>] __alloc_pages+0x9f/0x323
Oct 25 09:39:03 lfs kernel: [<b02c9974>] sock_aio_read+0xe8/0x100
Oct 25 09:39:03 lfs kernel: [<b035f1fb>] schedule_timeout+0xb5/0xb7
Oct 25 09:39:03 lfs kernel: [<b011a7f4>] add_wait_queue+0x1a/0x46
Oct 25 09:39:03 lfs kernel: [<b031d996>] unix_poll+0xc1/0xc6
Oct 25 09:39:03 lfs kernel: [<b0162a22>] do_select+0x294/0x2cf
Oct 25 09:39:03 lfs kernel: [<b01625dd>] __pollwait+0x0/0xc1
Oct 25 09:39:03 lfs kernel: [<b011a9ec>] autoremove_wake_function+0x0/0x43
Oct 25 09:39:03 lfs kernel: [<b0162cc7>] sys_select+0x255/0x488
Oct 25 09:39:03 lfs kernel: [<b0103fd9>] sysenter_past_esp+0x52/0x71
Oct 25 09:39:03 lfs kernel: Warning: kfree_skb on hard IRQ 00000000
Oct 25 09:39:03 lfs kernel: bad: scheduling while atomic!
Oct 25 09:39:03 lfs kernel: [<b035ebc0>] schedule+0x4a0/0x572
Oct 25 09:39:03 lfs kernel: [<f0a00f05>] bttv_ioctl+0x31/0x5e [bttv]
Oct 25 09:39:03 lfs kernel: [<f09ff7ac>] bttv_do_ioctl+0x0/0x1728 [bttv]
Oct 25 09:39:03 lfs kernel: [<b0162057>] sys_ioctl+0x1d4/0x245
Oct 25 09:39:03 lfs kernel: [<b01207b6>] sys_time+0x16/0x50
Oct 25 09:39:03 lfs kernel: [<b0104052>] work_resched+0x5/0x16
Oct 25 09:39:03 lfs kernel: bad: scheduling while atomic!
Oct 25 09:39:03 lfs kernel: [<b035ebc0>] schedule+0x4a0/0x572
Oct 25 09:39:03 lfs kernel: [<b0139799>] __alloc_pages+0x9f/0x323
Oct 25 09:39:03 lfs kernel: [<b02c9974>] sock_aio_read+0xe8/0x100
Oct 25 09:39:03 lfs kernel: [<b035f1fb>] schedule_timeout+0xb5/0xb7
Oct 25 09:39:03 lfs kernel: [<b011a7f4>] add_wait_queue+0x1a/0x46
Oct 25 09:39:03 lfs kernel: [<b031d996>] unix_poll+0xc1/0xc6
Oct 25 09:39:03 lfs kernel: [<b0162a22>] do_select+0x294/0x2cf
Oct 25 09:39:03 lfs kernel: [<b01625dd>] __pollwait+0x0/0xc1
Oct 25 09:39:03 lfs kernel: [<b011a9ec>] autoremove_wake_function+0x0/0x43
Oct 25 09:39:03 lfs kernel: [<b0162cc7>] sys_select+0x255/0x488
Oct 25 09:39:03 lfs kernel: [<b0103fd9>] sysenter_past_esp+0x52/0x71
Oct 25 09:39:03 lfs kernel: Warning: kfree_skb on hard IRQ 00000000
Oct 25 09:39:03 lfs kernel: bad: scheduling while atomic!
Oct 25 09:39:03 lfs kernel: [<b035ebc0>] schedule+0x4a0/0x572
Oct 25 09:39:03 lfs kernel: [<b01e55ab>] copy_to_user+0x32/0x45
Oct 25 09:39:03 lfs kernel: [<b0120869>] sys_gettimeofday+0x2c/0x65
Oct 25 09:39:03 lfs kernel: [<b0104052>] work_resched+0x5/0x16
Oct 25 09:39:03 lfs kernel: bad: scheduling while atomic!
Oct 25 09:39:03 lfs kernel: [<b035ebc0>] schedule+0x4a0/0x572
Oct 25 09:39:03 lfs kernel: [<b0104052>] work_resched+0x5/0x16
Oct 25 09:39:03 lfs kernel: bad: scheduling while atomic!
Oct 25 09:39:03 lfs kernel: [<b035ebc0>] schedule+0x4a0/0x572
Oct 25 09:39:03 lfs kernel: [<b0104052>] work_resched+0x5/0x16
Oct 25 09:39:03 lfs kernel: bad: scheduling while atomic!
Oct 25 09:39:03 lfs kernel: [<b035ebc0>] schedule+0x4a0/0x572
Oct 25 09:39:03 lfs kernel: [<b0139799>] __alloc_pages+0x9f/0x323
Oct 25 09:39:03 lfs kernel: [<b02c9974>] sock_aio_read+0xe8/0x100
Oct 25 09:39:03 lfs kernel: [<b035f1fb>] schedule_timeout+0xb5/0xb7
Oct 25 09:39:03 lfs kernel: [<b011a7f4>] add_wait_queue+0x1a/0x46
Oct 25 09:39:03 lfs kernel: [<b031d996>] unix_poll+0xc1/0xc6
Oct 25 09:39:03 lfs kernel: [<b0162a22>] do_select+0x294/0x2cf
Oct 25 09:39:03 lfs kernel: [<b01625dd>] __pollwait+0x0/0xc1
Oct 25 09:39:03 lfs kernel: [<b011a9ec>] autoremove_wake_function+0x0/0x43
Oct 25 09:39:03 lfs kernel: [<b0162cc7>] sys_select+0x255/0x488
Oct 25 09:39:03 lfs kernel: [<b0103fd9>] sysenter_past_esp+0x52/0x71
Oct 25 09:39:03 lfs kernel: Warning: kfree_skb on hard IRQ 00000000
Oct 25 09:39:03 lfs kernel: bad: scheduling while atomic!
Oct 25 09:39:03 lfs kernel: [<b035ebc0>] schedule+0x4a0/0x572
Oct 25 09:39:03 lfs kernel: [<b01e55ab>] copy_to_user+0x32/0x45
Oct 25 09:39:03 lfs kernel: [<b0120869>] sys_gettimeofday+0x2c/0x65
Oct 25 09:39:03 lfs kernel: [<b0104052>] work_resched+0x5/0x16
Oct 25 09:39:03 lfs kernel: bad: scheduling while atomic!
Oct 25 09:39:03 lfs kernel: [<b035ebc0>] schedule+0x4a0/0x572
Oct 25 09:39:03 lfs kernel: [<b012101f>] __do_softirq+0x5f/0xca
Oct 25 09:39:03 lfs kernel: [<b0104052>] work_resched+0x5/0x16
Oct 25 09:39:03 lfs kernel: bad: scheduling while atomic!
Oct 25 09:39:03 lfs kernel: [<b035ebc0>] schedule+0x4a0/0x572
Oct 25 09:39:03 lfs kernel: [<b0139799>] __alloc_pages+0x9f/0x323
Oct 25 09:39:03 lfs kernel: [<b02c9974>] sock_aio_read+0xe8/0x100
Oct 25 09:39:03 lfs kernel: [<b035f1fb>] schedule_timeout+0xb5/0xb7
Oct 25 09:39:03 lfs kernel: [<b011a7f4>] add_wait_queue+0x1a/0x46
Oct 25 09:39:03 lfs kernel: [<b031d996>] unix_poll+0xc1/0xc6
Oct 25 09:39:03 lfs kernel: [<b0162a22>] do_select+0x294/0x2cf
Oct 25 09:39:03 lfs kernel: [<b01625dd>] __pollwait+0x0/0xc1
Oct 25 09:39:03 lfs kernel: [<b011a9ec>] autoremove_wake_function+0x0/0x43
Oct 25 09:39:03 lfs kernel: [<b0162cc7>] sys_select+0x255/0x488
Oct 25 09:39:03 lfs kernel: [<b0103fd9>] sysenter_past_esp+0x52/0x71
Oct 25 09:39:03 lfs kernel: Warning: kfree_skb on hard IRQ 00000000
Oct 25 09:39:03 lfs kernel: bad: scheduling while atomic!
Oct 25 09:39:03 lfs kernel: [<b035ebc0>] schedule+0x4a0/0x572
Oct 25 09:39:03 lfs kernel: [<b01e55ab>] copy_to_user+0x32/0x45
Oct 25 09:39:03 lfs kernel: [<b0120869>] sys_gettimeofday+0x2c/0x65
Oct 25 09:39:03 lfs kernel: [<b0104052>] work_resched+0x5/0x16
Oct 25 09:39:03 lfs kernel: bad: scheduling while atomic!
Oct 25 09:39:03 lfs kernel: [<b035ebc0>] schedule+0x4a0/0x572
Oct 25 09:39:03 lfs kernel: [<b0139799>] __alloc_pages+0x9f/0x323
Oct 25 09:39:03 lfs kernel: [<b02c9974>] sock_aio_read+0xe8/0x100
Oct 25 09:39:03 lfs kernel: [<b035f1fb>] schedule_timeout+0xb5/0xb7
Oct 25 09:39:03 lfs kernel: [<b011a7f4>] add_wait_queue+0x1a/0x46
Oct 25 09:39:03 lfs kernel: [<b031d996>] unix_poll+0xc1/0xc6
Oct 25 09:39:03 lfs kernel: [<b0162a22>] do_select+0x294/0x2cf
Oct 25 09:39:03 lfs kernel: [<b01625dd>] __pollwait+0x0/0xc1
Oct 25 09:39:03 lfs kernel: [<b011a9ec>] autoremove_wake_function+0x0/0x43
Oct 25 09:39:03 lfs kernel: [<b0162cc7>] sys_select+0x255/0x488
Oct 25 09:39:03 lfs kernel: [<b0103fd9>] sysenter_past_esp+0x52/0x71
Oct 25 09:39:03 lfs kernel: Warning: kfree_skb on hard IRQ 00000000
Oct 25 09:39:03 lfs kernel: bad: scheduling while atomic!
Oct 25 09:39:03 lfs kernel: [<b035ebc0>] schedule+0x4a0/0x572
Oct 25 09:39:03 lfs kernel: [<b01e55ab>] copy_to_user+0x32/0x45
Oct 25 09:39:03 lfs kernel: [<b0120869>] sys_gettimeofday+0x2c/0x65
Oct 25 09:39:03 lfs kernel: [<b0104052>] work_resched+0x5/0x16
Oct 25 09:39:03 lfs kernel: bad: scheduling while atomic!
Oct 25 09:39:03 lfs kernel: [<b035ebc0>] schedule+0x4a0/0x572
Oct 25 09:39:03 lfs kernel: [<f0a00f05>] bttv_ioctl+0x31/0x5e [bttv]
Oct 25 09:39:03 lfs kernel: [<f09ff7ac>] bttv_do_ioctl+0x0/0x1728 [bttv]
Oct 25 09:39:03 lfs kernel: [<b0162057>] sys_ioctl+0x1d4/0x245
Oct 25 09:39:03 lfs kernel: [<b01207b6>] sys_time+0x16/0x50
Oct 25 09:39:03 lfs kernel: [<b0104052>] work_resched+0x5/0x16
Oct 25 09:39:03 lfs kernel: bad: scheduling while atomic!
Oct 25 09:39:03 lfs kernel: [<b035ebc0>] schedule+0x4a0/0x572
Oct 25 09:39:03 lfs kernel: [<b01243b5>] __mod_timer+0x11d/0x159
Oct 25 09:39:03 lfs kernel: [<b035f1b0>] schedule_timeout+0x6a/0xb7
Oct 25 09:39:03 lfs kernel: [<b01178ca>] try_to_wake_up+0x1e1/0x26d
Oct 25 09:39:03 lfs kernel: [<b0124e06>] process_timeout+0x0/0x5
Oct 25 09:39:03 lfs kernel: [<b0162a22>] do_select+0x294/0x2cf
Oct 25 09:39:03 lfs kernel: [<b01625dd>] __pollwait+0x0/0xc1
Oct 25 09:39:03 lfs kernel: [<b0104d3b>] print_context_stack+0x1d/0x59
Oct 25 09:39:03 lfs kernel: [<b0162cc7>] sys_select+0x255/0x488
Oct 25 09:39:03 lfs kernel: [<b0103fd9>] sysenter_past_esp+0x52/0x71
Oct 25 09:39:03 lfs kernel: bad: scheduling while atomic!
Oct 25 09:39:03 lfs kernel: [<b035ebc0>] schedule+0x4a0/0x572
Oct 25 09:39:03 lfs kernel: [<b0139799>] __alloc_pages+0x9f/0x323
Oct 25 09:39:03 lfs kernel: [<b02c9974>] sock_aio_read+0xe8/0x100
Oct 25 09:39:03 lfs kernel: [<b035f1fb>] schedule_timeout+0xb5/0xb7
Oct 25 09:39:03 lfs kernel: [<b011a7f4>] add_wait_queue+0x1a/0x46
Oct 25 09:39:03 lfs kernel: [<b031d996>] unix_poll+0xc1/0xc6
Oct 25 09:39:03 lfs kernel: [<b0162a22>] do_select+0x294/0x2cf
Oct 25 09:39:03 lfs kernel: [<b01625dd>] __pollwait+0x0/0xc1
Oct 25 09:39:03 lfs kernel: [<b011a9ec>] autoremove_wake_function+0x0/0x43
Oct 25 09:39:03 lfs kernel: [<b0162cc7>] sys_select+0x255/0x488
Oct 25 09:39:03 lfs kernel: [<b0103fd9>] sysenter_past_esp+0x52/0x71
Oct 25 09:39:03 lfs kernel: Warning: kfree_skb on hard IRQ 00000000
[snipped thousands of scheduling while atomic messages]
Then the kernel panicked.

BKL preempt is enabled. I think this could be the reason for the crash.
(normal preempt is enabled as well)
It's all non-reproduceable.

--
Regards Michael Buesch [ http://www.tuxsoft.de.vu ]

Attachment: pgp00000.pgp
Description: PGP signature