[cups.bugs] [HIGH] STR #3028: USB backend loops on Solaris

Norm Jacobs Norm.Jacobs at Sun.COM
Mon Dec 1 11:26:37 PST 2008


DO NOT REPLY TO THIS MESSAGE.  INSTEAD, POST ANY RESPONSES TO THE LINK BELOW.

[STR New]

The short version is that the USB backend always goes into an infinite loop
in backendRunLoop().

The somewhat more long winded explaination is that the usbprn driver
doesn't support poll (unless using ugen(7D)) causing select() on the
device FD to always fail with errno set to ENXIO.  Since the USB backend
calls backendRunLoop() with use_bc set to 1 and and a side_cb, the device
is added to the list of FDs to select on.  

This can be "fixed" by patching usb-unix.c to always pass use_bc=0 and
size_cb=NULL when calling backendRunLoop(). Perhaps not an ideal fix, but
a workable one.  When CUPS goes to 1.4 and the USB backend supports
libusb, that will be the preferred method of communicating with USB
printers.  That should avoid the issue all together, though I haven't
verified that yet.

At any rate, a patch for 1.3.X is attached.

Link: http://www.cups.org/str.php?L3028
Version: 1.3.9
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: 08-usb-hack.patch
URL: <http://lists.cups.org/pipermail/cups-devel/attachments/20081201/c205d762/attachment.ksh>


More information about the cups-devel mailing list