Bug 40909

Summary: Бесконечный повтор задания и ошибка Bad value (0) for orientation-requested
Product: Sisyphus Reporter: Vitaly Lipatov <lav>
Component: cupsAssignee: Anton Farygin <rider>
Status: NEW --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: george, rider
Version: unstable   
Hardware: x86_64   
OS: Linux   
Attachments:
Description Flags
debug2 лог в ALT p10
none
debug2 лог в Fedora 34
none
debug2 лог в Fedora 34 none

Description Vitaly Lipatov 2021-09-14 01:28:51 MSK
После отправки задания в /var/log/cups/error_log
каждые 10 секунд появляется запись

W [14/Sep/2021:01:21:07 +0300] [Job 1455] Backend returned status 7 (retry job immediately)
E [14/Sep/2021:01:21:07 +0300] [Job 1455] Bad value (0) for orientation-requested, using 0 degrees
E [14/Sep/2021:01:21:07 +0300] [Job 1455] Задание не принято.
W [14/Sep/2021:01:21:17 +0300] [Job 1455] Backend returned status 7 (retry job immediately)
E [14/Sep/2021:01:21:17 +0300] [Job 1455] Bad value (0) for orientation-requested, using 0 degrees

При этом каждый раз в
/var/spool/cups/tmp
появляется новый файл

Почему задание не принято, это тема отдельного исследования, но то, что за несколько дней у меня накопилось 30 тысяч файлов в /var/spool/cups/tmp, это вопиюще.

Причём когда-то я уже встречал такое поведение. Видимо, бага древняя и неустранимая.

cups-filters-1.28.9-alt1.x86_64
cups-2.3.3-alt6.op2.x86_64
Comment 1 Vitaly Lipatov 2021-09-14 03:11:42 MSK
Сама по себе ошибка вызвана принтером Kyocera_ECOSYS_P5026cdw, который по IPP получает задание.

При этом в Ubuntu 20.04
cups-2.3.1-9ubuntu1.1:amd64
cups-browsed-1.27.4-1:amd64

И в Fedora34
cups-2.3.3op2-7.fc34.x86_64

печатает без проблем.

Таким образом, у нас 2 проблемы:
1. Задание содержит нечто, что вызывает ошибку
Bad value (0) for orientation-requested, using 0 degrees
2. Зацикливание и бесконечная повторная отправка заданий.

Как я понимаю, это из-за того, что в задание попадает orientation-requested=0, при том что

The -o orientation-requested=N option rotates the page depending on the value of N:

-o orientation-requested=3 - portrait orientation (no rotation)
-o orientation-requested=4 - landscape orientation (90 degrees)
-o orientation-requested=5 - reverse landscape or seascape orientation (270 degrees)
-o orientation-requested=6 - reverse portrait or upside-down orientation (180 degrees)

И такой параметр у каждого принтера, полученного через cups-browsed:
# grep orientation-requested /etc/cups/printers.conf 
Option orientation-requested 0
Option orientation-requested 0
Option orientation-requested 0
Option orientation-requested 0
Option orientation-requested 0

Не знаю, вытекает ли это из ppd-файлов:
Kyocera_ECOSYS_P5026cdw.ppd:*ParamCustomPageSize Orientation: 5 int 0 3
Comment 2 Vitaly Lipatov 2021-09-14 03:49:37 MSK
При явном задании lpr -o orientation-requested=3
в задание попадает 3 и ошибки
Bad value (0) for orientation-requested, using 0 degrees
нет

В логах
W [14/Sep/2021:03:14:29 +0300] [Job 1458] Backend returned status 7 (retry job immediately)
E [14/Sep/2021:03:14:29 +0300] [Job 1458] Задание не принято.

и задание по-прежнему повторяется в /var/spool/cups.
Comment 3 Vitaly Lipatov 2021-09-14 03:50:23 MSK
Created attachment 9663 [details]
debug2 лог в ALT p10
Comment 4 Vitaly Lipatov 2021-09-14 03:50:55 MSK
Created attachment 9664 [details]
debug2 лог в Fedora 34
Comment 5 Vitaly Lipatov 2021-09-14 03:54:05 MSK
Created attachment 9665 [details]
debug2 лог в Fedora 34
Comment 6 Anton V. Boyarshinov 2021-09-15 09:50:39 MSK
Это не ошибка, это настраиваемый вариант поведения.
См. /etc/cups/printers.conf

ErrorPolicy retry-job

Значение по умолчанию, предлагаемое cups (stop-printer) подходит только для сетей с системными администраторами и то ограничено.
Comment 7 Anton V. Boyarshinov 2021-09-15 09:54:11 MSK
(Ответ для Vitaly Lipatov на комментарий #1)

> Не знаю, вытекает ли это из ppd-файлов:
> Kyocera_ECOSYS_P5026cdw.ppd:*ParamCustomPageSize Orientation: 5 int 0 3

У 5525 cdw там написано:
*ParamCustomPageSize Orientation: 5 int 1 1
Comment 8 Vitaly Lipatov 2021-09-16 12:05:22 MSK
(Ответ для Anton V. Boyarshinov на комментарий #6)
> Это не ошибка, это настраиваемый вариант поведения.
> См. /etc/cups/printers.conf
А где у нас задаётся ErrorPolicy по умолчанию? Или оно задаётся на тех устройствах, откуда через cups-browsed прилетает принтер и ppd? 
 
> ErrorPolicy retry-job
Меня очень смущает, что при этих повторах каждый раз создаётся новая копия задания в /var/spool/cups/tmp, и они будут множится бесконечно, пока место не кончится. Попробую воспроизвести такое поведение в «другой системе».

> Значение по умолчанию, предлагаемое cups (stop-printer) подходит только для
> сетей с системными администраторами и то ограничено.
Полностью согласен.
Comment 9 Vitaly Lipatov 2021-09-16 12:12:43 MSK
(Ответ для Anton V. Boyarshinov на комментарий #7)

> У 5525 cdw там написано:
> *ParamCustomPageSize Orientation: 5 int 1 1
Не уверен, что 1 это корректное значение, если допустимы 3-6.

Как я понимаю, при значении 0 orientation-requested просто не должно передаваться. Но это не криминально.

Основная проблема в том, что из Ubuntu/Fedora печать работает, а в ALT p10 сломалась (на ALT p9 работала полгода назад).
Какие шаги предпринять? Проверить их патчи? Прийти к той же версии cups, что у них? 

Точнее, к версии cups-filters, ошибка вроде как в этом бэкенде;
 # rpm -qf /usr/lib/cups/backend/implicitclass
cups-filters-1.28.5-alt1.x86_64
Comment 10 Anton V. Boyarshinov 2021-09-16 15:39:31 MSK
(Ответ для Vitaly Lipatov на комментарий #9)
> (Ответ для Anton V. Boyarshinov на комментарий #7)
> 
> > У 5525 cdw там написано:
> > *ParamCustomPageSize Orientation: 5 int 1 1
> Не уверен, что 1 это корректное значение, если допустимы 3-6.
У меня печать на этот принтер с этим PPD из p10 работает.