Bug 16325

Summary: Модуль X11 падает при отсутствии глубины по умолчанию
Product: Sisyphus Reporter: Evgeny Sinelnikov <sin>
Component: alterator-x11Assignee: Mikhail Efremov <sem>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: major    
Priority: P2 CC: boyarsh, mike, sem, snejok, zerg
Version: unstable   
Hardware: all   
OS: Linux   
URL: http://git.altlinux.org/people/sin/packages/?p=alterator-x11.git;a=shortlog;h=refs/heads/M41
Bug Depends on:    
Bug Blocks: 16425    
Attachments:
Description Flags
Полный лог инсталятора none

Description Evgeny Sinelnikov 2008-07-09 20:12:47 MSD
Модуль X11 падает при отсутствии глубины по умолчанию. Во время инсталяции выглядит это так:
Unwound backtrace:
In unknown file:
   ?: 56* [#<procedure #f ()>]
   ?: 57* (let ((data #)) (auto-card text (woo-get-option data #)) ...)
   ?: 58  [#<procedure #f args> #<procedure enumref args> "/x11/avail_xdepth" ...]
In /usr/share/guile/1.6/alterator/presentation/args.scm:
    ...
  18: 59  (case (instance-of arg) ((<number>) (let* (#) (and # #))) ...)
  37: 60* [set #<procedure #f args> #<procedure #f args>]
In unknown file:
   ?: 61  [apply #<procedure run-operation #> #<procedure #f args> set ...]
In /usr/share/guile/1.6/alterator/presentation/container.scm:
    ...
 212: 62  [with-fluids* (#<fluid 12>) (((globals # #))) #<procedure #f ()>]
In unknown file:
   ?: 63* [#<procedure #f ()>]
In /usr/share/guile/1.6/alterator/presentation/container.scm:
 212: 64* [#<procedure #f ()>]
 154: 65  [meta-set #<procedure #f args> #<procedure #f args>]
In /usr/share/guile/1.6/alterator/lookout/evaluation.scm:
    ...
 239: 66  (let* ((names #) (idx #)) (simple-set widget (current idx)) ...)
 240: 67* (or (string-list-index v names) -1)
 240: 68* [string-list-index #f ("8" "16" "24")]
  55: 69  [list-index #<procedure #f (x)> ("8" "16" "24")]
In unknown file:
    ...
   ?: 70  (if (pred (car l)) i (lp (cdr l) (+ i 1)))
   ?: 71* [#<procedure #f (x)> "8"]
In /usr/share/guile/1.6/alterator/lookout/evaluation.scm:
  55: 72  [string=? #f "8"]
In unknown file:
   ?: 73* [#<procedure #f args> wrong-type-arg "string=?" ...]
In /usr/share/guile/1.6/alterator/exit-handler.scm:
  23: 74* [display-backtrace ...
  23: 75* [gsubr-apply #<primitive-procedure make-stack> #t]
/usr/share/guile/1.6/alterator/exit-handler.scm:27:6: In procedure string=? in expression (apply throw args):
/usr/share/guile/1.6/alterator/exit-handler.scm:27:6: Wrong type argument in position 1 (expecting STRINGP): #f


Частично эта проблема исправляется так:
diff --git a/alterator-x11/ui/x11/index.scm b/alterator-x11/ui/x11/index.scm
index 3ca5658..a4617b7 100644 (file)
--- a/alterator-x11/ui/x11/index.scm
+++ b/alterator-x11/ui/x11/index.scm
@@ -118,4 +118,4 @@
            (resolution enumref "/x11/avail_xresolution"
                        value (woo-get-option data 'xresolution #f))
            (depth enumref "/x11/avail_xdepth"
-                  value (woo-get-option data 'xdepth #f)))))))
+                  value (woo-get-option data 'xdepth "")))))))


При этом возникает ситуация, когда глубина по умолчанию не задана.
Comment 1 Evgeny Sinelnikov 2008-07-09 20:30:43 MSD
Created attachment 2700 [details]
Полный лог инсталятора
Comment 2 Michael Shigorin 2008-07-10 00:26:51 MSD
Что-то багу не найду, но вообще это место правили в 0.13.3-alt1 и 0.13.7-alt1.
Comment 3 Evgeny Sinelnikov 2008-07-10 12:19:34 MSD
Проверено на сборках из сизифа, которые перемещены, вместе с новым rpm, в дополнительный репозиторий к бранчу 4.1:
alterator-3.6-alt5.i586.rpm
alterator-browser-qt-2.9.89-alt1.i586.rpm
alterator-doc-3.6-alt5.i586.rpm
alterator-http-0.4-alt4.i586.rpm
alterator-lilo-0.9-alt4.i586.rpm
alterator-lookout-1.2-alt2.i586.rpm
alterator-xkb-1.0-alt1.i586.rpm
alterator-ahttpd-0.4-alt1.noarch.rpm
alterator-alternatives-0.9-alt1.noarch.rpm
alterator-amanda-0.4-alt3.noarch.rpm
alterator-apache2-2.4-alt1.noarch.rpm
alterator-auth-0.6-alt4.noarch.rpm
alterator-autoinstall-0.2-alt1.noarch.rpm
alterator-bind-0.2-alt1.noarch.rpm
alterator-chkconfig-0.1-alt2.noarch.rpm
alterator-control-0.8-alt2.noarch.rpm
alterator-datetime-0.6-alt2.noarch.rpm
alterator-dhcp-0.1-alt9.noarch.rpm
alterator-dovecot-0.4-alt4.noarch.rpm
alterator-fbi-2.8-alt2.noarch.rpm
alterator-firewall-0.2-alt7.noarch.rpm
alterator-hpc-0.6-alt2.noarch.rpm
alterator-kerberos-0.1-alt11.noarch.rpm
alterator-l10n-0.6-alt6.noarch.rpm
alterator-lightsquid-0.1-alt2.noarch.rpm
alterator-logs-0.3-alt1.noarch.rpm
alterator-ltsconf-0.3.1-alt1.noarch.rpm
alterator-mailman-0.2-alt9.noarch.rpm
alterator-menu-0.4-alt1.noarch.rpm
alterator-net-common-0.3-alt1.noarch.rpm
alterator-net-eth-3.1-alt3.noarch.rpm
alterator-net-junior-0.1-alt15.noarch.rpm
alterator-net-pppoe-0.5-alt2.noarch.rpm
alterator-net-pptp-0.6-alt4.noarch.rpm
alterator-net-wifi-0.6-alt1.noarch.rpm
alterator-notes-1.1-alt4.noarch.rpm
alterator-nut-0.2-alt17.noarch.rpm
alterator-ovz-0.4-alt8.noarch.rpm
alterator-packages-0.5.4-alt2.noarch.rpm
alterator-perl-functions-0.4-alt1.noarch.rpm
alterator-pkg-1.4-alt7.noarch.rpm
alterator-postfix-restrictions-0.1-alt10.noarch.rpm
alterator-postfix-sasl-0.3-alt1.noarch.rpm
alterator-proxy-0.3-alt1.noarch.rpm
alterator-root-0.4-alt1.noarch.rpm
alterator-samba-0.3-alt2.noarch.rpm
alterator-sdk-0.1.1-alt1.noarch.rpm
alterator-services-1.3-alt6.noarch.rpm
alterator-sh-functions-0.6-alt3.noarch.rpm
alterator-spamassassin-0.3-alt2.noarch.rpm
alterator-squid-0.2-alt15.noarch.rpm
alterator-standalone-4.4-alt2.noarch.rpm
alterator-standalone-usermode-4.4-alt2.noarch.rpm
alterator-sysconfig-0.7-alt2.noarch.rpm
alterator-sysinfo-0.2-alt7.noarch.rpm
alterator-tzone-0.9-alt3.noarch.rpm
alterator-ulogd-0.2-alt3.noarch.rpm
alterator-users-9.1-alt1.noarch.rpm
alterator-vm-0.3-alt29.noarch.rpm
alterator-vsftpd-0.5-alt1.noarch.rpm
alterator-witchery-0.2-alt2.noarch.rpm
alterator-wizardface-0.7-alt1.noarch.rpm
alterator-xinetd-1.2-alt7.noarch.rpm
+
alterator-x11-0.15-alt6.i586.rpm
alterator-backend-x11-0.15-alt6.i586.rpm
|
alterator-x11-0.15-alt6.eter1.i586.rpm
alterator-backend-x11-0.15-alt6.eter1.i586.rpm

Разница между alterator-x11-0.15-alt6 и alterator-x11-0.15-alt6.eter1:
alterator-x11/ui/x11/index.scm
-                  value (woo-get-option data 'xdepth #f)))))))
+                  value (woo-get-option data 'xdepth "")))))))
После этого оно как раз падать перестаёт, но не выдаёт значения по умолчанию. Я вот пока не понимаю откуда это значение по умолчанию вообще берётся...

Так вот, в более новых версиях alterator-x11, существенных изменений в этом плане не замечено, хотя замечена тендеция заменять в одних случаях #f на "", в других наоборот. На самом деле это конечно какие-то внутренние проблемы самого alterator, складывается впечатление, что логика получения значения по умолчанию не отрабатывает. Но что является тому причиной не совсем понятно... Могу только заметить, что сравнение, на которм всё падает:
[string=? #f "8"]
видится не всё-таки больше проблемой новой логики alterator.
Comment 4 Vladislav Zavjalov 2008-07-10 13:16:10 MSD
> Я вот пока не понимаю откуда это значение по умолчанию вообще
берётся...

Берется из бакенда, параметр xdepth:
# alterator-cmdline x11 action read

В бакенде берется из xorg.conf, если его там нет - то из автоматически определенной с помощью 
# video_scan
(а она изыскивает карту в lspci и xdepth ищет потом в базе данных /usr/share/alterator-x11/videocards)

Вообще, автодетект сейчас присутствует в двух местах. Есть скрипт x11_autosetup, который пишет начальный xorg.conf, и есть еще автодетект в бакенде - просто чтоб подсвечивать рекомендуемое значение, когда выбираешь новый драйвер... 
(Наверное надо и там и там прописать какое-то дефолтное значение - сделаю, только скажите какое! :)). 

А замена #f на "" в интерфейсе - так и надо. Там все-таки не должны возникать осмысленные значения, наверное. Но и значения по умолчанию неправильного типа - не должны быть :) 
Comment 5 Evgeny Sinelnikov 2008-07-10 13:33:41 MSD
(In reply to comment #4)
> > Я вот пока не понимаю откуда это значение по умолчанию вообще
> берётся...
> 
> Берется из бакенда, параметр xdepth:
> # alterator-cmdline x11 action read
> 
> В бакенде берется из xorg.conf, если его там нет - то из автоматически
> определенной с помощью 
> # video_scan
> (а она изыскивает карту в lspci и xdepth ищет потом в базе данных
> /usr/share/alterator-x11/videocards)
> 
> Вообще, автодетект сейчас присутствует в двух местах. Есть скрипт x11_autosetup,
> который пишет начальный xorg.conf, и есть еще автодетект в бакенде - просто чтоб
> подсвечивать рекомендуемое значение, когда выбираешь новый драйвер... 
> (Наверное надо и там и там прописать какое-то дефолтное значение - сделаю,
> только скажите какое! :)). 
> 
> А замена #f на "" в интерфейсе - так и надо. Там все-таки не должны возникать
> осмысленные значения, наверное. Но и значения по умолчанию неправильного
> типа - не должны быть :) 
> 

Ну, если нужно "" вместо #f, то почему его там нет? Это раз. А если поставить, то почему сравнение, на котором сейчас всё падает:
[string=? #f "8"]
задаёт вместо предполагаемого "8", этот самый "". В результате, при отображении, значение глубины не задано... Это два. Ну, и почему оно там так, там сяк, и кое-де даже не падает, а тут падает - падать-то оно всё равно не должно. Так ведь? Это три.

Мне видится, что #f как раз и был придуман с целью различать пустую строку, как ответ, от ответа "совсем ничего". Тем более, что раньше оно ведь на это самом месте не падало!
Comment 6 Vladislav Zavjalov 2008-07-10 14:08:47 MSD
> Ну, если нужно "" вместо #f, то почему его там нет? Это раз. 

Все, увидел, осознал. Я в другом каком-то месте это правил, а тут - не заметил. Сейчас поставлю.

> А если поставить, 
> то почему сравнение, на котором сейчас всё падает:
> [string=? #f "8"]

Видимо, это какие-то внутренности выпадающего списка. Там список значений 8,16,24... а мы ему говорим выбрать это самое #f. Он и падает при первом сравнении. 

Comment 7 Vladislav Zavjalov 2008-07-10 14:20:09 MSD
fixed in 0.18-alt3. Сейчас падать не должно.
Comment 8 Evgeny Sinelnikov 2008-07-10 14:35:50 MSD
(In reply to comment #6)
> > Ну, если нужно "" вместо #f, то почему его там нет? Это раз. 
> 
> Все, увидел, осознал. Я в другом каком-то месте это правил, а тут - не заметил.
> Сейчас поставлю.
> 

Хм... ну, так я уже поставил и проверил... Получается не совсем то, что нужно...

> > А если поставить, 
> > то почему сравнение, на котором сейчас всё падает:
> > [string=? #f "8"]
> 
> Видимо, это какие-то внутренности выпадающего списка. Там список значений
> 8,16,24... а мы ему говорим выбрать это самое #f. Он и падает при первом сравнении. 
> 

В этом самом списке, когда возвращаешь "", получается, что глубина не выбрана. Из этого я делаю некое предположение, что "8" - это та самая глубина по умолчанию, которая выбирается, если задать #f. Это предположение основано на том, что именно так оно раньше и работало...
Comment 9 Vladislav Zavjalov 2008-07-10 14:49:38 MSD
Нет, если задать #f, то все упадет. Тип не тот.

Кстати, сейчас проверил, что video_scan для неизвестных драйверов выдает 16. Сейчас буду смотреть, почему оно до интерфейса не доходит...
Comment 10 Vladislav Zavjalov 2008-07-10 16:15:57 MSD
Выложил 0.18-alt8. Посмотри, пожалуйста! У меня настройки по умолчанию до интерфейса доходят.
Comment 11 Evgeny Sinelnikov 2008-07-10 19:14:09 MSD
Проверяю я это на образах инсталятора - именно там возникает проблема. Тестирую я это дело на бранче 4.1, поэтому у меня версия 0.15, которая привязана к особенностям сборки xorg-x11-server из бранча. Новый вариант я смогу попытаться проверить на сизифе, но не раньше как новый сизиф ко мне приедет...

Новый вариант я думаю падать не должен... Тем не менее, сам альтератор не стоит прикрывать такими заплатками - падать он не должен... Выставляется ли правильно глубина по умолчанию проверю позже...