Distribution: Slackware 10 Hardware Environment: Athlon 2000 base computer, 512Mo, IDE disk, Pinnacle Studio DV card Software Environment: glibc 2.3.2, gcc 3.3.4, libdv 0.103, libraw1394 0.10.1, libavc1394 0.4.1 and libdc1394 1.0.0, dvgrab 1.6 vanilla kernel 2.6.9 build with preempt option, 4K stack, ext3 filesystem, and some debug options. Problem Description: Trying to capture DV video frames from a camcorder connected to the 1394 port of the computer. Using dvgrab to do that. dvgrab puts the camcorder in the play mode, wait for 1/2 second, and stop it and exits. Then it seems it was interrupted in kernel badly by a big sleep inside lock warning. Here is an excerpt of dmesg output (please note I unplugged and plugged several times the camcorder before noticing udev does not create /dev/raw1394 anymore, hence the "repeated" line I think): Nov 27 15:27:55 neptune kernel: ohci1394: fw-host0: SelfID received, but NodeID invalid (probably new bus reset occurred): 0800FFC0 Nov 27 15:27:55 neptune last message repeated 19 times Nov 27 15:28:16 neptune kernel: Debug: sleeping function called from invalid context at mm/slab.c:2052 Nov 27 15:28:16 neptune kernel: in_atomic():1, irqs_disabled():1 Nov 27 15:28:16 neptune kernel: [<c010524e>] dump_stack+0x1e/0x20 Nov 27 15:28:16 neptune kernel: [<c011a1c0>] __might_sleep+0xb0/0xe0 Nov 27 15:28:16 neptune kernel: [<c013fa1f>] __kmalloc+0x8f/0xa0 Nov 27 15:28:16 neptune kernel: [<c02abe59>] alloc_dma_rcv_ctx+0x59/0x3d0 Nov 27 15:28:16 neptune kernel: [<c02a9485>] ohci_devctl+0x3e5/0x630 Nov 27 15:28:16 neptune kernel: [<c029f663>] hpsb_listen_channel+0x43/0x70 Nov 27 15:28:16 neptune kernel: [<c02b01b3>] handle_iso_listen+0xb3/0x150 Nov 27 15:28:16 neptune kernel: [<c02b30bd>] state_connected+0xfd/0x250 Nov 27 15:28:16 neptune kernel: [<c02b3291>] raw1394_write+0x81/0xd0 Nov 27 15:28:16 neptune kernel: [<c01540c0>] vfs_write+0xa0/0x120 Nov 27 15:28:16 neptune kernel: [<c015420b>] sys_write+0x4b/0x80 Nov 27 15:28:16 neptune kernel: [<c01043af>] syscall_call+0x7/0xb Nov 27 15:28:28 neptune kernel: Debug: sleeping function called from invalid context at include/asm/semaphore.h:107 Nov 27 15:28:28 neptune kernel: in_atomic():1, irqs_disabled():1 Nov 27 15:28:28 neptune kernel: [<c010524e>] dump_stack+0x1e/0x20 Nov 27 15:28:28 neptune kernel: [<c011a1c0>] __might_sleep+0xb0/0xe0 Nov 27 15:28:28 neptune kernel: [<c0252db5>] dma_pool_destroy+0x25/0x150 Nov 27 15:28:28 neptune kernel: [<c02abda3>] free_dma_rcv_ctx+0xd3/0x130 Nov 27 15:28:28 neptune kernel: [<c02a9622>] ohci_devctl+0x582/0x630 Nov 27 15:28:28 neptune kernel: [<c029f6c9>] hpsb_unlisten_channel+0x39/0x50 Nov 27 15:28:28 neptune kernel: [<c02b022b>] handle_iso_listen+0x12b/0x150 Nov 27 15:28:28 neptune kernel: [<c02b30bd>] state_connected+0xfd/0x250 Nov 27 15:28:28 neptune kernel: [<c02b3291>] raw1394_write+0x81/0xd0 Nov 27 15:28:28 neptune kernel: [<c01540c0>] vfs_write+0xa0/0x120 Nov 27 15:28:28 neptune kernel: [<c015420b>] sys_write+0x4b/0x80 Nov 27 15:28:28 neptune kernel: [<c01043af>] syscall_call+0x7/0xb Nov 27 15:28:45 neptune kernel: Debug: sleeping function called from invalid context at mm/slab.c:2052 ... after several tries. Seems fairly reproducable. Hardware used to work with 2.4.x and older 2.6.x kernels (do not remember which however, perhaps 2.6.5 - 2.6.7). Steps to reproduce: Just try to grab with dvgrab on a 2.6.9 kernel.
Seems to be fixed in 2.6.10. dvgrab now works after kernel upgrade. At least, I cannot reproduce anymore the problem with 2.6.10 if it is not fixed.