Hartmut Geissbauer wrote: > I removed the quick hack from Mathieu and inserted snd_printk's in > snd_usbmidi_disconnect. > > The new function: > ... > if (ep->out && ep->out->urb) > usb_unlink_urb(ep->out->urb); > snd_printk(KERN_INFO "usb_unlink_urb out\n");
Please note that this is C, not Python. :-) > The output from dmesg I got: > > ohci_hcd 0000:00:02.0: urb e2e2b4c0 path 2.4 ep1in 5e160000 cc 5 --> status -110 > hub 1-2:1.0: port 4, status 100, change 1, 12 Mb/s > usb 1-2.4: USB disconnect, address 5 > usb 1-2.4: usb_disable_device nuking all URBs It seems we don't need to unlink the URBs as the kernel does this for us, but it doesn't hurt. > ... > ALSA sound/usb/usbmidi.c:723: usb_unlink_urb in > ALSA sound/usb/usbaudio.c:2924: snd_usb_audio_disconnect called, refcount = 0 Apparently, snd_usb_audio_disconnect is called recursively, caused by the call to usb_driver_release_interface, and then deadlocks. The USB core will release all interfaces automatically, so we don't need this call. Please remove the usb_driver_release_interface line. HTH Clemens ------------------------------------------------------- This SF.Net email is sponsored by: IBM Linux Tutorials Free Linux tutorial presented by Daniel Robbins, President and CEO of GenToo technologies. Learn everything from fundamentals to system administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click _______________________________________________ Alsa-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/alsa-devel