[pvrusb2] Random hang during 'modprobe -r pvrusb2'

devsk funtoos at yahoo.com
Sat Jul 24 13:08:40 CDT 2010


Mike,

Unfortunately, I had to reboot the system. I did take the task dump with 'echo t 
> sysrq-trigger'. Do you want the whole of it or just pvrusb2 related? Let's 
start with all pvrusb2 tasks, I can paste the whole thing if needed.

And yes, its hard to reproduce but once it happens, the only option is to reboot 
the box. The device becomes unusable when this happens. Unplugging doesn't help.

The only process which accesses this device continuously is mythbackend. It was 
down when this happened.

It has happened in kernels earlier than 2.6.34 as well. Its just that I was 
thinking recent fixes for races would have gotten rid of it but apparently there 
is still a race lurking in there. Its definitely taken a long time (many months) 
to make a comeback. But then, I hardly ever remove the module manually.

Thanks,
-devsk

Jul 22 23:33:35 localhost kernel: [72916.826000] pvrusb2-conte S 
0000000101e5dec7     0  7391      2 0x00000000
Jul 22 23:33:35 localhost kernel: [72916.826000]  ffff88035f49b4e0 
0000000000000046 ffff88035e6be090 ffffffff8155e020
Jul 22 23:33:35 localhost kernel: [72916.826000]  ffff880300000000 
0000000000012000 0000000000012000 ffff8802167cbfd8
Jul 22 23:33:35 localhost kernel: [72916.826000]  ffff88035f49b4e0 
ffff8802167cbfd8 0000000000000000 0000000100000282
Jul 22 23:33:35 localhost kernel: [72916.826000] Call Trace:
Jul 22 23:33:35 localhost kernel: [72916.826000]  [<ffffffffa0b842e3>] ? 
pvr2_context_thread_func+0x1cd/0x31a [pvrusb2]
Jul 22 23:33:35 localhost kernel: [72916.826000]  [<ffffffff81045cd7>] ? 
autoremove_wake_function+0x0/0x2a
Jul 22 23:33:35 localhost kernel: [72916.826000]  [<ffffffffa0b84116>] ? 
pvr2_context_thread_func+0x0/0x31a [pvrusb2]
Jul 22 23:33:35 localhost kernel: [72916.826000]  [<ffffffff8104591d>] ? 
kthread+0x75/0x7d
Jul 22 23:33:35 localhost kernel: [72916.826000]  [<ffffffff81002c54>] ? 
kernel_thread_helper+0x4/0x10
Jul 22 23:33:35 localhost kernel: [72916.826000]  [<ffffffff810458a8>] ? 
kthread+0x0/0x7d
Jul 22 23:33:35 localhost kernel: [72916.826000]  [<ffffffff81002c50>] ? 
kernel_thread_helper+0x0/0x10
Jul 22 23:33:35 localhost kernel: [72916.826000] pvrusb2_a     S 
ffff88035f49af00     0  7392      2 0x00000000
Jul 22 23:33:35 localhost kernel: [72916.826000]  ffff88035f49af00 
0000000000000046 ffffffffa0b7d21d ffff88035f49b4e0
Jul 22 23:33:35 localhost kernel: [72916.826000]  ffff88035e6be090 
0000000000012000 0000000000012000 ffff880215989fd8
Jul 22 23:33:35 localhost kernel: [72916.826000]  ffff88035f49af00 
ffff880215989fd8 0000000000000282 ffffffff813bce26
Jul 22 23:33:35 localhost kernel: [72916.826000] Call Trace:
Jul 22 23:33:35 localhost kernel: [72916.826000]  [<ffffffffa0b7d21d>] ? 
pvr2_hdw_worker_poll+0x0/0x359 [pvrusb2]
Jul 22 23:33:35 localhost kernel: [72916.826000]  [<ffffffff813bce26>] ? 
mutex_lock+0xd/0x32
Jul 22 23:33:35 localhost kernel: [72916.826000]  [<ffffffffa0b7d21d>] ? 
pvr2_hdw_worker_poll+0x0/0x359 [pvrusb2]
Jul 22 23:33:35 localhost kernel: [72916.826000]  [<ffffffff810427a1>] ? 
worker_thread+0xc3/0x1c2
Jul 22 23:33:35 localhost kernel: [72916.826000]  [<ffffffff81045cd7>] ? 
autoremove_wake_function+0x0/0x2a
Jul 22 23:33:35 localhost kernel: [72916.826000]  [<ffffffff810426de>] ? 
worker_thread+0x0/0x1c2
Jul 22 23:33:35 localhost kernel: [72916.826000]  [<ffffffff8104591d>] ? 
kthread+0x75/0x7d
Jul 22 23:33:35 localhost kernel: [72916.826000]  [<ffffffff81002c54>] ? 
kernel_thread_helper+0x4/0x10
Jul 22 23:33:35 localhost kernel: [72916.826000]  [<ffffffff810458a8>] ? 
kthread+0x0/0x7d
Jul 22 23:33:35 localhost kernel: [72916.826000]  [<ffffffff81002c50>] ? 
kernel_thread_helper+0x0/0x10
Jul 22 23:33:35 localhost kernel: [72916.826000] modprobe      D 
0000000101e5deef     0 23597   3845 0x00000004
Jul 22 23:33:35 localhost kernel: [72916.826000]  ffff88035dcc5820 
0000000000000082 0000000000000004 ffff88035fc6d820
Jul 22 23:33:35 localhost kernel: [72916.826000]  0000000000000000 
0000000000012000 0000000000012000 ffff880215451fd8
Jul 22 23:33:35 localhost kernel: [72916.826000]  ffff88035dcc5820 
ffff880215451fd8 ffff880215451e54 0000000100000000
Jul 22 23:33:35 localhost kernel: [72916.826000] Call Trace:
Jul 22 23:33:35 localhost kernel: [72916.826000]  [<ffffffff813bc85c>] ? 
schedule_timeout+0x1d/0xb2
Jul 22 23:33:35 localhost kernel: [72916.826000]  [<ffffffff8102bdd0>] ? 
enqueue_task_fair+0x160/0x174
Jul 22 23:33:35 localhost kernel: [72916.826000]  [<ffffffff813bc6f6>] ? 
wait_for_common+0xca/0x140
Jul 22 23:33:35 localhost kernel: [72916.826000]  [<ffffffff81030040>] ? 
default_wake_function+0x0/0xf
Jul 22 23:33:35 localhost kernel: [72916.826000]  [<ffffffff81030032>] ? 
try_to_wake_up+0x213/0x221
Jul 22 23:33:35 localhost kernel: [72916.826000]  [<ffffffff81045a43>] ? 
kthread_stop+0x32/0x51
Jul 22 23:33:35 localhost kernel: [72916.826000]  [<ffffffffa0b840d2>] ? 
pvr2_context_global_done+0xb1/0xb8 [pvrusb2]
Jul 22 23:33:35 localhost kernel: [72916.826000]  [<ffffffff81045cd7>] ? 
autoremove_wake_function+0x0/0x2a
Jul 22 23:33:35 localhost kernel: [72916.826000]  [<ffffffff8125f34f>] ? 
bus_remove_driver+0x94/0xa6
Jul 22 23:33:35 localhost kernel: [72916.826000]  [<ffffffffa0b87f2c>] ? 
pvr_exit+0x2c/0x52 [pvrusb2]
Jul 22 23:33:35 localhost kernel: [72916.826000]  [<ffffffff81056e39>] ? 
sys_delete_module+0x1d0/0x243
Jul 22 23:33:35 localhost kernel: [72916.826000]  [<ffffffff81082f30>] ? 
do_munmap+0x2f6/0x318
Jul 22 23:33:35 localhost kernel: [72916.826000]  [<ffffffff81082f96>] ? 
sys_munmap+0x44/0x50
Jul 22 23:33:35 localhost kernel: [72916.826000]  [<ffffffff81001f2b>] ? 
system_call_fastpath+0x16/0x1b




________________________________
From: Mike Isely <isely at isely.net>
To: Communications nexus for pvrusb2 driver <pvrusb2 at isely.net>
Sent: Fri, July 23, 2010 8:58:23 AM
Subject: Re: [pvrusb2] Random hang during 'modprobe -r pvrusb2'

On Thu, 22 Jul 2010, devsk wrote:

> Mike,
> 
> This is with 2.6.34.1 and latest driver snapshot:
> 
> [18693.055000] pvrusb2: 20100708 (from www.isely.net):Hauppauge WinTV-PVR-USB2 

> MPEG2 Encoder/Tuner
> 
> I did modprobe -r pvrusb2 and it hung.
> 
> This is what it shows in dmesg:
> 
> [32118.444000] usbcore: deregistering interface driver pvrusb2
> [32118.444000] pvrusb2: Device being rendered inoperable
> 
> Its still hung here. How can I collect more information for you to debug this 
> issue. Its very intermittent. So, since we have it hung there, this is our 
> chance to nail this bugger.

Getting that to always work correctly is not easy.  Lots of opportunity 
for race conditions, and I have seen some issues with this.  There were 
a round of bug fixes a few months ago that address race conditions on 
removal.

Given the sporadic nature of an issue like this it's going to be hard to 
nail down.  Some things that will help:

1. Being able to demonstrate that the problem is affected by kernel 
version, i.e. if it only happens under 2.6.34.1 or if you can also get 
it to fail under an earlier kernel.  Either way the answer to that may 
help narrow the search.

2. Did an application have the device node open at the time?  That's a 
big factor?

3. If after it jams, can you unplug the device and does that unjam the 
removal process?

Another fun race to try is to run an application which talks to the 
driver and then unplug the device WHILE this is running.  This should 
also work out OK.

  -Mike

-- 

Mike Isely
isely @ isely (dot) net
PGP: 03 54 43 4D 75 E5 CC 92 71 16 01 E2 B5 F5 C1 E8
_______________________________________________
pvrusb2 mailing list
pvrusb2 at isely.net
http://www.isely.net/cgi-bin/mailman/listinfo/pvrusb2



      


More information about the pvrusb2 mailing list