Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Bug#812604: nut-server: usbhid-ups segfaults due to missing USB strings

94 views
Skip to first unread message

Tero Marttila

unread,
Mar 4, 2016, 7:30:04 PM3/4/16
to
Also seeing this with a APC Back-UPS Pro and usbhid-ups, but on a
physical machine, so no vmware shenenigans to mess with the USB
descriptors. lsusb shows the iManufacturer and iProduct:

> Bus 005 Device 013: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
> Device Descriptor:
> bLength 18
> bDescriptorType 1
> bcdUSB 2.00
> bDeviceClass 0 (Defined at Interface level)
> bDeviceSubClass 0
> bDeviceProtocol 0
> bMaxPacketSize0 64
> idVendor 0x051d American Power Conversion
> idProduct 0x0002 Uninterruptible Power Supply
> bcdDevice 0.90
> iManufacturer 1 American Power Conversion
> iProduct 2 Back-UPS BR 900GI FW:879.L3 .I USB FW:L3
> iSerial 3 3B1125X03827
> bNumConfigurations 1

But usbhid-ups lists them as unknown before segfaulting:

> Starting program: /lib/nut/usbhid-ups -a yzzrt-ups -DD
> [Thread debugging using libthread_db enabled]
> Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
> Network UPS Tools - Generic HID driver 0.38 (2.7.2)
> USB communication driver 0.32
> 0.000000 debug level is '2'
> 0.049516 upsdrv_initups...
> 0.299042 Checking device ...
> ...
> 0.347131 Checking device (051D/0002) (005/013)
> 0.347166 - VendorID: 051d
> 0.347201 - ProductID: 0002
> 0.347215 - Manufacturer: unknown
> 0.347230 - Product: unknown
> 0.347256 - Serial Number: unknown
> 0.347272 - Bus: 005
> 0.347286 Trying to match device
>
> Program received signal SIGSEGV, Segmentation fault.
> __strncmp_ssse3 () at ../sysdeps/x86_64/multiarch/../strcmp.S:1233
> 1233 ../sysdeps/x86_64/multiarch/../strcmp.S: No such file or directory.

Confirm that patching nut-2.7.2 with the patch in #5 fixes this:

> 0.299235 Checking device (051D/0002) (005/013)
> 0.299268 - VendorID: 051d
> 0.299287 - ProductID: 0002
> 0.299301 - Manufacturer: unknown
> 0.299316 - Product: unknown
> 0.299330 - Serial Number: unknown
> 0.299344 - Bus: 005
> 0.299359 Trying to match device
> 0.299373 device->Product is NULL so it is not possible to determine whether to activate max_report_size workaround
> 0.299390 Device matches

Although it seems that this is slightly random; trying again a second
time it actually sees the idProduct this time:

> 0.298864 Checking device (051D/0002) (005/013)
> 0.310794 - VendorID: 051d
> 0.310804 - ProductID: 0002
> 0.310808 - Manufacturer: American Power Conversion
> 0.310811 - Product: Back-UPS BR 900GI FW:879.L3 .I USB FW:L3
> 0.310815 - Serial Number: 3B1125X03827
> 0.310819 - Bus: 005
> 0.310822 Trying to match device
> 0.310835 Device matches

No idea.

-- Tero Marttila

fred

unread,
May 23, 2017, 2:10:03 PM5/23/17
to
I hit the exact same 'segfault' bug.

I upgrade to nut version 2.7.4 from testing, where patch in comment #5
is included.
My APC Back-UPS RS 900G is now running fine with nut.

I would be nice to have the patch included or a backport of this
package for the 'Buggy' apc owners on jessie.

Arnaud Quette

unread,
May 23, 2017, 2:30:02 PM5/23/17
to
FYI
I've also made a somewhat complementary patch that tries 3 times to get these string (only once currently elsewhere).
Iirc it's still sitting in the libusb1 branch on github, and it's not yet merged in the mainline. Would be cool if you could test...

Cheers,
Arno

0 new messages