** Description changed: - USB backend never ends if the printer is not connected. we have been + USB backend never ends if the printer is not connected. We have been able to identify a infinity loop in print_device function in usb- libusb.c file: ``` - fprintf(stderr, "DEBUG: Printing on printer with URI: %s\n", uri); - while ((g.printer = find_device(print_cb, uri)) == NULL) - { - _cupsLangPrintFilter(stderr, "INFO", - _("Waiting for printer to become available.")); - sleep(5); - } + fprintf(stderr, "DEBUG: Printing on printer with URI: %s\n", uri); + while ((g.printer = find_device(print_cb, uri)) == NULL) + { + _cupsLangPrintFilter(stderr, "INFO", + _("Waiting for printer to become available.")); + sleep(5); + } ``` It's also easy to test by invoking the backend by hand: - ``` # export DEVICE_URI='usb://Printer/Model?serial=?' # /usr/lib/cups/backend/usb 0 root title 1 '' data.file DEBUG: Loading USB quirks from "/usr/share/cups/usb". DEBUG: Loaded 159 quirks. DEBUG: Printing on printer with URI: usb://Brother/PJ-773?serial=? DEBUG: libusb_get_device_list=6 INFO: Waiting for printer to become available. DEBUG: libusb_get_device_list=6 INFO: Waiting for printer to become available. DEBUG: libusb_get_device_list=6 INFO: Waiting for printer to become available. DEBUG: libusb_get_device_list=6 INFO: Waiting for printer to become available. DEBUG: libusb_get_device_list=6 INFO: Waiting for printer to become available. ... ``` - Setting a job timeout policy or stopping the job by hand are not options - for us. We can have job that take up to an hour to complete. + Setting a work timeout policy or manually stopping work are not options + for us. We may have jobs that take up to an hour to complete.
** Description changed: USB backend never ends if the printer is not connected. We have been able to identify a infinity loop in print_device function in usb- libusb.c file: ``` fprintf(stderr, "DEBUG: Printing on printer with URI: %s\n", uri); while ((g.printer = find_device(print_cb, uri)) == NULL) { _cupsLangPrintFilter(stderr, "INFO", _("Waiting for printer to become available.")); sleep(5); } ``` It's also easy to test by invoking the backend by hand: ``` # export DEVICE_URI='usb://Printer/Model?serial=?' # /usr/lib/cups/backend/usb 0 root title 1 '' data.file DEBUG: Loading USB quirks from "/usr/share/cups/usb". DEBUG: Loaded 159 quirks. - DEBUG: Printing on printer with URI: usb://Brother/PJ-773?serial=? + DEBUG: Printing on printer with URI: usb://Printer/Model?serial=? DEBUG: libusb_get_device_list=6 INFO: Waiting for printer to become available. DEBUG: libusb_get_device_list=6 INFO: Waiting for printer to become available. DEBUG: libusb_get_device_list=6 INFO: Waiting for printer to become available. DEBUG: libusb_get_device_list=6 INFO: Waiting for printer to become available. DEBUG: libusb_get_device_list=6 INFO: Waiting for printer to become available. ... ``` Setting a work timeout policy or manually stopping work are not options for us. We may have jobs that take up to an hour to complete. ** Description changed: USB backend never ends if the printer is not connected. We have been able to identify a infinity loop in print_device function in usb- libusb.c file: ``` fprintf(stderr, "DEBUG: Printing on printer with URI: %s\n", uri); while ((g.printer = find_device(print_cb, uri)) == NULL) { _cupsLangPrintFilter(stderr, "INFO", _("Waiting for printer to become available.")); sleep(5); } ``` It's also easy to test by invoking the backend by hand: ``` # export DEVICE_URI='usb://Printer/Model?serial=?' # /usr/lib/cups/backend/usb 0 root title 1 '' data.file DEBUG: Loading USB quirks from "/usr/share/cups/usb". DEBUG: Loaded 159 quirks. DEBUG: Printing on printer with URI: usb://Printer/Model?serial=? DEBUG: libusb_get_device_list=6 INFO: Waiting for printer to become available. - DEBUG: libusb_get_device_list=6 INFO: Waiting for printer to become available. DEBUG: libusb_get_device_list=6 INFO: Waiting for printer to become available. DEBUG: libusb_get_device_list=6 INFO: Waiting for printer to become available. DEBUG: libusb_get_device_list=6 INFO: Waiting for printer to become available. ... ``` - Setting a work timeout policy or manually stopping work are not options + Setting a job timeout policy or manually stopping work are not options for us. We may have jobs that take up to an hour to complete. ** Description changed: USB backend never ends if the printer is not connected. We have been able to identify a infinity loop in print_device function in usb- libusb.c file: ``` fprintf(stderr, "DEBUG: Printing on printer with URI: %s\n", uri); while ((g.printer = find_device(print_cb, uri)) == NULL) { _cupsLangPrintFilter(stderr, "INFO", _("Waiting for printer to become available.")); sleep(5); } ``` It's also easy to test by invoking the backend by hand: ``` # export DEVICE_URI='usb://Printer/Model?serial=?' # /usr/lib/cups/backend/usb 0 root title 1 '' data.file DEBUG: Loading USB quirks from "/usr/share/cups/usb". DEBUG: Loaded 159 quirks. DEBUG: Printing on printer with URI: usb://Printer/Model?serial=? DEBUG: libusb_get_device_list=6 INFO: Waiting for printer to become available. DEBUG: libusb_get_device_list=6 INFO: Waiting for printer to become available. DEBUG: libusb_get_device_list=6 INFO: Waiting for printer to become available. DEBUG: libusb_get_device_list=6 INFO: Waiting for printer to become available. DEBUG: libusb_get_device_list=6 INFO: Waiting for printer to become available. ... ``` Setting a job timeout policy or manually stopping work are not options - for us. We may have jobs that take up to an hour to complete. + for us. We may have jobs that take hours to complete. -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1890572 Title: USB backend never ends if the printer is not connected To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/cups/+bug/1890572/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs