Suggested advisory: ======================== Updated libusb1 packages fix a race condition causing delayed completion of sync transfers: The sync API had a race where it would check a condition to know if it needed to call a libusb_handle_events() function. However, the check was done outside of the lock that is held while the condition is set, so another thread could completely serve whatever was needed to make the condition true between it being checked and the event handler being called. This situation would be detected after a libusb-internal timeout of 60 seconds, after which the transfer would be completed without error, but with significant delay. References: http://libusb.org/ticket/56 http://libusb.org/changeset/6696512aade99bb15d6792af90ae329af270eba6/libusb ======================== Updated packages in core/updates_testing: ===================== libusb1.0-devel-1.0.8-1.1.mga1.i586.rpm libusb1.0-static-devel-1.0.8-1.1.mga1.i586.rpm libusb1.0_0-1.0.8-1.1.mga1.i586.rpm lib64usb1.0-devel-1.0.8-1.1.mga1.x86_64.rpm lib64usb1.0-static-devel-1.0.8-1.1.mga1.x86_64.rpm lib64usb1.0_0-1.0.8-1.1.mga1.x86_64.rpm from libusb1-1.0.8-1.1.mga1.src.rpm ===================== I'm not sure how QA people can test this. I think i have to find some testers who can use ID-card and who get hit by this race condition.
Thankyou for the complete bug report. It's not always practical / possible to test the actual upstream bug being fixed but we can test the updated package works as expected with no regressions. # urpmq --whatrequires libusb1.0_0 shows it is required by usbutils # urpmf usbutils usbutils:/usr/bin/usb-devices usbutils:/usr/bin/usbhid-dump usbutils:/usr/sbin/lsusb So we can use these to test libusb indirectly. It is also used by upower amongst others. x86_64 Before ------ # rpm -qa | grep lib64usb1 lib64usb1.0-devel-1.0.8-1.mga1 lib64usb1.0_0-1.0.8-1.mga1 lib64usb1.0-static-devel-1.0.8-1.mga1 # lsusb Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 004 Device 002: ID 046d:08da Logitech, Inc. QuickCam Messanger Bus 004 Device 003: ID 413c:2100 Dell Computer Corp. SK-3106 Keyboard Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 005 Device 002: ID 413c:3200 Dell Computer Corp. Mouse Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 008 Device 002: ID 1784:0001 TopSeed Technology Corp. eHome Infrared Transceiver # usb-devices T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 6 D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=1d6b ProdID=0002 Rev=02.06 S: Manufacturer=Linux 2.6.38.8-desktop-9.mga ehci_hcd S: Product=EHCI Host Controller S: SerialNumber=0000:00:1a.7 C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub T: Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 6 D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=1d6b ProdID=0002 Rev=02.06 S: Manufacturer=Linux 2.6.38.8-desktop-9.mga ehci_hcd S: Product=EHCI Host Controller S: SerialNumber=0000:00:1d.7 C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub T: Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2 D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=1d6b ProdID=0001 Rev=02.06 S: Manufacturer=Linux 2.6.38.8-desktop-9.mga uhci_hcd S: Product=UHCI Host Controller S: SerialNumber=0000:00:1a.0 C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub T: Bus=04 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2 D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=1d6b ProdID=0001 Rev=02.06 S: Manufacturer=Linux 2.6.38.8-desktop-9.mga uhci_hcd S: Product=UHCI Host Controller S: SerialNumber=0000:00:1a.1 C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub T: Bus=04 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 0 D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=046d ProdID=08da Rev=01.00 C: #Ifs= 3 Cfg#= 1 Atr=a0 MxPwr=100mA I: If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=zc3xx I: If#= 1 Alt= 0 #EPs= 0 Cls=01(audio) Sub=01 Prot=00 Driver=snd-usb-audio I: If#= 2 Alt= 0 #EPs= 0 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio T: Bus=04 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 3 Spd=12 MxCh= 0 D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=413c ProdID=2100 Rev=01.01 S: Manufacturer=Gemplus S: Product=Dell USB Smartcard Keyboard C: #Ifs= 2 Cfg#= 1 Atr=a0 MxPwr=100mA I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=01 Driver=usbhid I: If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=5c Prot=00 Driver=(none) T: Bus=05 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2 D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=1d6b ProdID=0001 Rev=02.06 S: Manufacturer=Linux 2.6.38.8-desktop-9.mga uhci_hcd S: Product=UHCI Host Controller S: SerialNumber=0000:00:1a.2 C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub T: Bus=05 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 2 Spd=1.5 MxCh= 0 D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=413c ProdID=3200 Rev=29.10 S: Manufacturer=Dell S: Product=Dell USB Mouse C: #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=50mA I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=02 Driver=usbhid T: Bus=06 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2 D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=1d6b ProdID=0001 Rev=02.06 S: Manufacturer=Linux 2.6.38.8-desktop-9.mga uhci_hcd S: Product=UHCI Host Controller S: SerialNumber=0000:00:1d.0 C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub T: Bus=07 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2 D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=1d6b ProdID=0001 Rev=02.06 S: Manufacturer=Linux 2.6.38.8-desktop-9.mga uhci_hcd S: Product=UHCI Host Controller S: SerialNumber=0000:00:1d.1 C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub T: Bus=08 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2 D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=1d6b ProdID=0001 Rev=02.06 S: Manufacturer=Linux 2.6.38.8-desktop-9.mga uhci_hcd S: Product=UHCI Host Controller S: SerialNumber=0000:00:1d.2 C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub T: Bus=08 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 0 D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=16 #Cfgs= 1 P: Vendor=1784 ProdID=0001 Rev=00.00 S: Manufacturer=Topseed S: Product=eHome Infrared Transceiver S: SerialNumber=TS000C3h C: #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=100mA I: If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=mceusb # usbhid-dump 4 3 000:DESCRIPTOR 1326467072.686145 05 01 09 06 A1 01 05 07 19 E0 29 E7 15 00 25 01 75 01 95 08 81 02 95 01 75 08 81 01 95 05 75 01 05 08 19 01 29 05 91 02 95 01 75 03 91 01 95 06 75 08 15 00 26 FF 00 05 07 19 00 2A FF 00 81 00 C0 After ----- The following 3 packages are going to be installed: - lib64usb1.0-devel-1.0.8-1.1.mga1.x86_64 - lib64usb1.0-static-devel-1.0.8-1.1.mga1.x86_64 - lib64usb1.0_0-1.0.8-1.1.mga1.x86_64 Similar results. Testing complete x86_64.
Testing complete on i586. Could someone from the sysadmin team push the srpm libusb1-1.0.8-1.1.mga1.src.rpm from Core Updates Testing to Core Updates. Advisory: Updated libusb1 packages fix a race condition causing delayed completion of sync transfers: The sync API had a race where it would check a condition to know if it needed to call a libusb_handle_events() function. However, the check was done outside of the lock that is held while the condition is set, so another thread could completely serve whatever was needed to make the condition true between it being checked and the event handler being called. This situation would be detected after a libusb-internal timeout of 60 seconds, after which the transfer would be completed without error, but with significant delay. References: http://libusb.org/ticket/56 http://libusb.org/changeset/6696512aade99bb15d6792af90ae329af270eba6/libusb https://bugs.mageia.org/show_bug.cgi?id=3965
Keywords: (none) => validated_updateCC: (none) => davidwhodgins, sysadmin-bugs
update pushed
Status: NEW => RESOLVEDCC: (none) => tmbResolution: (none) => FIXED