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

Reply via email to