Opened 16 years ago
Closed 14 years ago
#2353 closed bug (fixed)
double lock of "usb busmanager lock"
Reported by: | monni | Owned by: | oruizdorantes |
---|---|---|---|
Priority: | normal | Milestone: | R1 |
Component: | Network & Internet/Bluetooth | Version: | R1/pre-alpha1 |
Keywords: | Cc: | ||
Blocked By: | Blocking: | ||
Platform: | All |
Description
Crashed while restart
Last holder: bluetooth_server
<uhci>:Lock10BusManager + 0x001b <uhci>:AddPendingTransfer4UHCIP8TransferP5QueueP7uhci_qhP7uhci_tdT4b + 0x00ba <uhci>:SubmitTransfer4UHCIP8Transfer + 0x013c <usb>:QueueInterrupt13InterruptPipePvUlPFPvlPvUl_vT1 + 0x008f <usb>:queue_interruptFUlPvUlPFPvlPvUl_vT1 + 0x0071 <usb>:queue_interrupt_v2FPCvPvUlPFPvlPvUl_vT1 + 0x0031 </boot/beos/system/add-ons/kernel/drivers/bluetooth/dev/bluetooth/h2generic>:event_complete + 0x006d <uhci>:Finished8TransferUlUl + 0x0027 <usb>:CancelQueuedTransfers4Pipeb + 0x002b <usb>:cancel_queued_transfersFUl + 0x0067 <usb>:cancel_queued_transfers_v2FPCv + 0x001f </boot/beos/system/add-ons/kernel/drivers/bluetooth/dev/bluetooth/h2generic>:device_close + 0x00a6 <kernel>:devfs_closeFP9fs_volumeP8fs_vnodePv + 0x0035 <kernel>:file_closeFP15file_descriptor + 0x004c <kernel>:close_fd + 0x0044 <kernel>:vfs_free_io_context + 0x006f <kernel>:team_delete_team + 0x01f0 <kernel>:thread_exit + 0x035c <kernel>:handle_signals + 0x0384 <kernel>:thread_at_exit_kernel + 0x0076 <kernel>:kernel_exit_handle_signals + 0x0006
Change History (4)
comment:1 by , 16 years ago
comment:2 by , 16 years ago
The USB part is fixed in hrev25861, though this only hides the probably incorrect handling of the cancel case within h2generic.
comment:3 by , 16 years ago
Status: | new → assigned |
---|
Totally,
All the process of unplug, remove, cleanups and so on. I might just be able to say that there is just some code for handling it. But is not yet tested, or meant to work.
I keep the bug :)
This is also a USB problem to some extent. The HCD (UHCI in this case) does not allow transfers to be scheduled while canceling transfers at the same time. Generally you would not want to do that anyway and in this case it definitely looks like a bug in h2generic, as when explicitly canceling transfers, no resubmit should happen (checking for B_CANCELED status in event_complete would be correct). But I see that in a timeout + cancel + reset operation it could be a valid use case and the HCD should not disallow it. Will try to correct that from a USB standpoint, but h2generic needs be fixed for this case and with this bug report.