Bug 8817 - при локали UTF-8 без инициализации поддержки юникода screen виснет
: при локали UTF-8 без инициализации поддержки юникода screen виснет
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/screen)
: unstable
: all Linux
: P2 major
Assigned To:
:
:
:
: 5440
: 9199 10446 14167
  Show dependency tree
 
Reported: 2006-01-09 18:51 by
Modified: 2008-03-14 13:31 (History)


Attachments
screen.spec for 4.0.3-alt0.1 based on 4.0.3-1 (15.95 KB, text/plain)
2007-06-19 10:00, Michael Shigorin
no flags Details


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2006-01-09 18:51:54
Имеется screen-4.0.2-alt3 на Compact 3.0, обновлённом до текущего Sisyphus.

При запуске выдаётся заставка с предложением "[Press Space or Return to end.]"
При нажатии на указанные клавиши screen зависает, до получения SIGKILL из
соседней консоли.

По-видимому, имеется некая проблема, связанная с нахождением командного
интерпретатора, т.к. при указании /bin/bash в командной строке screen он
успешно
стартует (т.е. 'screen -s /bin/bash' работает).

Переменная окружения SHELL установлена:
$ set | grep SHELL=
SHELL=/bin/bash

Локального ~/.screen нет. Глобальный /etc/screenrc - из пакета, без изменений.
------- Comment #1 From 2006-01-09 19:52:32 -------
У меня работает,
screen-4.0.2-alt3
bash-3.1.1-alt1
------- Comment #2 From 2006-01-09 20:17:47 -------
У меня пакеты те же.
screen-4.0.2-alt3
bash-3.1.1-alt1

Разница, как я понимаю, в системах: у меня обновлённый до Sisyphus Compact
3.0rc10. На паре имеющихся вблизи Compact 3.0rc10 + backports ситуация та же.
------- Comment #3 From 2006-01-09 20:19:53 -------
Да, с тем же screen и на Sisyphus, ведущим свой начало с Master 2.4, всё
работало.
------- Comment #4 From 2006-01-09 20:35:44 -------
Нет, не в командном интерпретаторе дело...

От пользователя работает запуск вида 
$ screen -U
или
$ LANG=ru_RU.KOI8-R screen

От root - и просто 'screen'...

Итого: при локали UTF-8 без инициализации поддержки юникода screen виснет после
вывода экрана приветствия.
------- Comment #5 From 2006-10-24 11:42:10 -------
Кажется, в федоре сделали автовключатор этой самой инициализации -- мож у них
патчик стырить?
------- Comment #6 From 2006-10-24 13:51:12 -------
Не вижу в федоре такого патчика.  Зато в 4.0.3 исправили пару каких-то
юникодных
багов.
------- Comment #7 From 2007-01-08 22:22:43 -------
Для screen-4.0.3-alt1 проблема актуальна (система ведёт начало от M22,
/etc/screenrc никогда не трогался).

Её может замаскировать ~/.screenrc с отключением баннера:
startup_message off

Вообще мож отключить его по умолчанию?  А то анноит, честно говоря.
------- Comment #8 From 2007-03-06 01:10:03 -------
Лёш, поправь по возможности.  А то с UTF-8 из коробки скрин у нас будет в ней
"нерабочий".  На крайняк хоть screenrc.
------- Comment #9 From 2007-04-19 11:29:24 -------
screen 4.0.3-alt2 - без изменений.

Отключение баннера через директиву "startup_message off" в файле конфигурации 
снимает проблему разве что с зависанием: текст на русском ввести при этом не 
удастся, часть символов (например, 'ф') передаётся не правильно.

Добавление в ~/.screenrc директив 'defutf8 on', 'utf8 on on' также ничего не 
даёт.
------- Comment #10 From 2007-04-19 22:25:53 -------
Не знаю что делать.  У меня пока нет utf консоли, а то бы я занялся отладкой.
Впрочем, utf консоль, может быть, скоро будет.
------- Comment #11 From 2007-04-20 09:43:12 -------
Алексей, можно запустить терминал в локали ru_RU.UTF-8.

тот же uxterm
------- Comment #12 From 2007-04-21 10:35:39 -------
(In reply to comment #10)
> Не знаю что делать.  У меня пока нет utf консоли, а то бы я занялся отладкой.
> Впрочем, utf консоль, может быть, скоро будет.
Тю. :)

--- ~/bin/uterm ---
#!/bin/sh
G_FILENAME_ENCODING=utf-8 LC_ALL=ru_RU.UTF-8 LC_COLLATE=uk_UA.UTF8
LC_CTYPE=uk_UA.UTF8 exec urxvt +sb -fn
'-*-terminus-bold-*-*-*-20-*-*-*-*-*-iso10646-*' -rv -cr yellow -tn xterm &
------- Comment #13 From 2007-04-22 14:59:47 -------
screen -U работает
------- Comment #14 From 2007-04-22 15:23:20 -------
Это известно, но не всем.  На RH-производных -U сейчас не требуется.
------- Comment #15 From 2007-05-04 05:02:12 -------
*ping*
------- Comment #16 From 2007-06-16 22:59:55 -------
Не знаю, что делать.  Нет идей.
------- Comment #17 From 2007-06-19 09:21:44 -------
Попробую собрать
ftp://ftp.redhat.com/pub/redhat/linux/enterprise/5Server/en/os/SRPMS/screen-4.0.3-1.el5.src.rpm
------- Comment #18 From 2007-06-19 10:00:23 -------
Created an attachment (id=2027) [details]
screen.spec for 4.0.3-alt0.1 based on 4.0.3-1

Тэкс... чего было сделано: спек подчищен до приложенного состояния, сборка
поставлена в сизифовый контейнер после удаления родной и беглой проверки, что
не осталось ошмётков (а, кроме группы в /etc/group).

cd
# поскольку там фигурировали startup_message off и KOI8
mv .screenrc .screenrc-
mv .i18n .i18n-
export LC_ALL=ru_RU.UTF-8 LANG=ru_RU.UTF-8
screen

-- проблема не воспроизводится, поскольку startup message не вываливается
(причём так и есть в /etc/screenrc).

Думаю, достаточно просто добавить такое же 

# don't display the copyright page
startup_message off

в /etc/screenrc, как и предлагалось довольно давно.

Сборка доступна здесь:
http://paq.osdn.org.ua/~mike/RPMS/screen/
------- Comment #19 From 2007-06-19 10:06:20 -------
(In reply to comment #9)
> Отключение баннера через директиву "startup_message off" в файле конфигурации 
> снимает проблему разве что с зависанием: текст на русском ввести при этом не 
> удастся, часть символов (например, 'ф') передаётся не правильно.
Это осталось, причём явно не проблема терминала -- который дёргается так:

#!/bin/sh
G_FILENAME_ENCODING=utf-8 LANG=ru_RU.UTF-8 LC_ALL=ru_RU.UTF-8
LC_COLLATE=uk_UA.UTF8 LC_CTYPE=uk_UA.UTF8 exec urxvt +sb -fn
'-*-terminus-bold-*-*-*-20-*-*-*-*-*-iso10646-*' -rv -cr yellow -tn xterm &

и сам по себе позволяет ввод e.g. "фыва" или "йцукен".

> Добавление в ~/.screenrc директив 'defutf8 on', 'utf8 on on' также ничего не 
> даёт.

screen -U из сборки в предыдущем комментарии при этом работает нормально.
------- Comment #20 From 2007-06-29 17:17:25 -------
<morozov> Коммит f64bee34fba522762a12e9afa54289de0824d5db
(screen-4.0.2-alt-cp866.patch) ломает работу screen'а в UTF-8
------- Comment #21 From 2007-06-29 17:19:14 -------
Коммит f64bee34fba522762a12e9afa54289de0824d5db (screen-4.0.2-alt-cp866.patch) 
ломает работу screen'а в UTF-8
------- Comment #22 From 2007-06-29 20:25:06 -------
(In reply to comment #21)
> Коммит f64bee34fba522762a12e9afa54289de0824d5db (screen-4.0.2-alt-cp866.patch) 
> ломает работу screen'а в UTF-8

Вы сам патч-то видели?
+  { "CP866",           0,              0x80|'#',       0, 1, 0 },              
+  { "IBM866",          0,              0x80|'#',       0, 1, 0 },              
Это имеет какое-либо отношение к UTF8? Думаю, что "раз не работает с этим, то
давайте оторвём" явно не выход.
------- Comment #23 From 2007-07-04 20:53:25 -------
Отключать startup_message нежелательно из соображений GPL 2c.
------- Comment #24 From 2007-07-04 20:59:10 -------
Точняк, если откатить cp866.patch, то startup_message перестает зависать.
------- Comment #25 From 2007-07-05 01:06:44 -------
Там есть --help, которого довольно многим; если это годится для RH, для нас
скорее тоже сгодится.

2 mouse: мне неудобно перед тобой, но предпочитаю факты отсутствию
предположений.  Докопаться до причины ломания двумя строчками чего-то, кроме
гвоздей в индексах или ещё какой неявной завязки на порядок -- не могу. (мож
попробовать эти две строчки в конец списка или по крайней мере строчкой ниже
сдвинуть?)
------- Comment #26 From 2007-07-19 15:26:15 -------
+1 к startup_message off by default
------- Comment #27 From 2007-07-19 15:35:57 -------
$ grep -C1 -m1 announcement /usr/share/license/GPL-2
    interactive use in the most ordinary way, to print or display an
    announcement including an appropriate copyright notice and a
    notice that there is no warranty (or else, saying that you provide
$

Это отключается в ~/.screenrc.
------- Comment #28 From 2007-07-19 15:40:47 -------
ls или less при запуске, однако, не вываливают пол-экрана legalese с проблемами
в юникоде :)

В RH сочли осмысленным отрубить, да и у меня в таскаемом .screenrc это первая и
последняя строчка.

Не надо доводить до абсурда, дух же там в удобстве, да и буква без особого
фундаментализма.

Впрочем, это всё может быть здесь неактуально (FR про анноящий экран, а не bug
про UTF-8).
------- Comment #29 From 2007-07-19 15:42:13 -------
Я откатил cp866.patch (взял коммит из morozov/packages/screen.git).
Респект Морозову!

Я также исправил все warnings в режиме -DDEBUG -Werror.  Желающие прикрутить
назад cp866 благоволят собирать screen в режиме rpmbuild --enable debug.  Там
какой-то чумной код прохода по этим таблицам, в котором я, увы, с ходу не
разобрался.  (ЕСТЬ ЗАСАДА: теперь в кмулятивный патч не помещается бинарный
файл
кодировки cp866; к сожалению mouse в свое время не открыл способ получения
этого
файла.)

Закрываю баг как FIXED; может быть переоткрою баг с cp866, чтобы не забылось.
------- Comment #30 From 2007-07-19 15:44:38 -------
Спасибо!
------- Comment #31 From 2007-07-19 15:45:04 -------
(In reply to comment #27)
> $ grep -C1 -m1 announcement /usr/share/license/GPL-2

Алексей, между удобством для пользователя и следованием букве закона я предлагаю
выбрать удобство, для нас, для пользователей. Иначе, это походит на фанатизм
Столлмана и то как это сделано в Debian (где после логина на консоль
вываливается подобное предупреждение на пять строк).

Почти всё отключают это приветствие, а кто не отключает, то, наверное, просто не
в курсе, что его можно отключить ;)
------- Comment #32 From 2007-07-19 15:49:59 -------
То что сочли в RH это не аргумент.  Авторы GNU screen сочли нужным по умолчанию
выводить startup_message во исполнение требования GPL (которое, впрочем, не
является слишком строгим).  Я не свожу к абсурду, просто думаю оставить как
есть.  Если авторы less надумают выводить announcement, это конечно будет более
актуальной проблемой.  В отличие от less, screen я запускаю один раз per
uptime.
 При переподключении к сессии announcement не выводится.

Короче, можно открыть отдельный баг и там будем дальше спорить. :)