Bug 13299

Summary: xfwm4 зависает при установленном GTK+ 2.12
Product: Sisyphus Reporter: avm <avm>
Component: xfwm4Assignee: Valery Inozemtsev <shrek>
Status: CLOSED NOTABUG QA Contact: qa-sisyphus
Severity: normal    
Priority: P2 CC: boyarsh, cas, mike, oddity, sem
Version: unstable   
Hardware: all   
OS: Linux   

Description avm 2007-11-02 09:44:46 MSK
X.org "зависает" при попытке сделать одно из этих действий:
1) в icewm переключиться между окнами по Alt-Tab;
2) в Xfce переключиться между окнами с помощью таскбара (Alt-Tab работает);
3) в Xfce переключиться между рабочими столамии с помощью таскбара (Ctrl-Fx
работает);
4) открыть pdf-файл в evince (xpdf работает).

После зависания вполне может работать клавиатурный ввод в том окне, которое было
активным. Однако на мышь ни одно окно более не реагирует (и форма курсора мыши
не меняется), оконный менеджер ни на какие горячие клавиши не отзывается
(проверялось на xfwm и icewm), а переключиться в консоль чаще всего не удаётся.

Видео Intel 945GM. В логе X11 появляется строка:
(EE) intel(0): I830 Vblank Pipe Setup Failed 0

$ rpm -qa 'xorg-x11*'
xorg-x11-extensions-glx-1.4-alt6
xorg-x11-sdk-1.4-alt6
xorg-x11-dri-intel-7.0.1-alt3
xorg-x11-drv-mouse-1.2.3-alt1
xorg-x11-proto-devel-7.3.0-alt7
xorg-x11-rgb-1.0.1-alt1
xorg-x11-xephyr-1.4-alt6
xorg-x11-drv-vga-4.1.0-alt4
xorg-x11-drv-vesa-1.3.0-alt3
xorg-x11-drv-evdev-1.2.0-alt1
xorg-x11-server-1.4-alt6
xorg-x11-drv-synaptics-0.14.6-alt4
xorg-x11-server-common-1.4-alt6
xorg-x11-drv-keyboard-1.2.2-alt1
xorg-x11-drv-intel-2.1.1-alt3
Comment 1 Valery Inozemtsev 2007-11-02 10:23:44 MSK
а если заменить драйвер на i810? хотя у меня 3 машины на 945G и ничего 
подобного не замечал
Comment 2 avm 2007-11-02 10:31:26 MSK
Заменял. Виснет точно так же.
Comment 3 Valery Inozemtsev 2007-11-02 10:38:02 MSK
а при отключенном dri?
Comment 4 avm 2007-11-04 22:40:58 MSK
Я пробовал
Option "DRI" "no"
Option "NoAccel" "yes"
в такой комбинации, висло всё равно.

Откатился пока на старый X.org (от начала сентября), работает.
Comment 5 avm 2007-11-05 00:20:50 MSK
На самом деле виснет, даже если откатиться на июньский X.org.
Из этого я делаю вывод, что бага где-то в другом месте, и, следовательно, для
ксорга она INVALID.
Извините за беспокойство.
Comment 6 Michael Shigorin 2007-11-05 13:25:45 MSK
Если это на этой машинке у тебя ещё кучка проблем вылезла (кажется, raorn@
предлагал память проверить) -- действительно попробуй стрельнуть/поменять память
или хотя бы прогнать ночью memtest86.
Comment 7 avm 2007-11-06 19:05:43 MSK
О, эврика.
Поставил с нуля Desktop Lite, завёл X-ы -- всё работает как часы.
Обновил libgtk+2 и libpango до сизифных.
После этого X.org стал виснуть в вышеуказанных ситуациях, иногда до степени
неубиваемости (так что требуется Ctrl-Alt-SysRq-B).

Откатил libgtk+2 (на 2.10) и libpango -- работает опять.

X.org всё это время бранчевый, с которым Desktop Lite собирается. Как мы помним,
сизифный X.org тоже вешался.

Я считаю, что это в любом случае бага X.org. Не должен он позволять себя вешать
независимо от кривизны клиентской библиотеки. Впрочем, ktirf может что-нибудь
подсказать о том, что изменилось в GTK+ 2.12 :-).
Comment 8 Valery Inozemtsev 2007-11-06 19:10:47 MSK
сходите еще повесьте багу на ядро - не должно оно позволять вешать машину не 
зависимо от кривизны загруженныхмодулей/железа 
Comment 9 Michael Shigorin 2007-11-06 20:49:44 MSK
Валер, отмазка -- INVALID.  Железо бывает кривым совсем по-другому, чем
клиентские библиотеки.  А история с тем, что в Xorg ломают нафиг XRENDER и
взрывается всякое Cairo -- не нова.

Лучше им передать эту информацию, раз уж ты собираешь xorg в сизиф из git, а не
релизами.  Иначе смысл тестировать на коллегах, а багрепорты закрывать?

(а если некогда/влом/неудобно -- давай сидеть на релизах тогда и не выпендриваться)
Comment 10 Michael Shigorin 2007-11-06 20:50:43 MSK
(In reply to comment #4)
> Option "NoAccel" "yes"
А RenderAccel?  Попробуй погуглить xorg cairo hang, кажется, это не новая история.
Comment 11 Valery Inozemtsev 2007-11-06 21:13:39 MSK
> Лучше им передать эту информацию, раз уж ты собираешь xorg в сизиф из git, а 
не
> релизами.

о каком git'e речь? Мишь, не уподобляйся Костику, заглядывай в src.rpm, прежде 
чем сказать что то подобное на людях

>  Иначе смысл тестировать на коллегах, а багрепорты закрывать?
> 
> (а если некогда/влом/неудобно -- давай сидеть на релизах тогда и не 
выпендриваться)

см. выше. я не видел сломанных иксами gtk+2 и иже с ним и если уж вешать баги 
то на виновника сего, но никак не на то что оно убивает
Comment 12 Valery Inozemtsev 2007-11-06 21:18:06 MSK
продолжаем разговор. это проявляется массово на разных конфигурациях или это 
единичный случай? я не использую ни icewm, ни xfce, как это воспроизвести?
Comment 13 Michael Shigorin 2007-11-06 21:21:38 MSK
Я читаю cybertalk@ и относительно пакетов xorg-x11-* и libX* зачастую вижу там
упоминания коммитов, из которых они собраны.

Понимаешь, оно хорошо -- тестировать до релиза, но если нет возможности доносить
фидбэк до апстрима (например, его сваливается слишком много, разнообразного, на
русском, а там хотят сжато и воспроизводимо) -- то может быть лучше и не
тестировать на своих пользователях.

Спроси ldv@ насчёт опыта по такому взаимодействию?

PS: я бы вряд ли конкретно xorg собирал из git, а скорее руководствуясь правилом
"X.Y.1 или позже".  Потому что им -- не доверяю.  А вот monit можно вслепую
собирать, как показывает практика...

PPS: где-то между 2006 и 2007 ловил фризы иксов, которые упёрлись в
cairo/xrender.  Не помню, на чём именно (сам на wmaker, киоски на icewm, коллеги
на kde).
Comment 14 Valery Inozemtsev 2007-11-06 22:47:47 MSK
(In reply to comment #13)
> Я читаю cybertalk@ и относительно пакетов xorg-x11-* и libX* зачастую вижу
> там упоминания коммитов, из которых они собраны.
а каким образом это стыкуется с тем что с libgtk+2-2.10.14 все работает как 
часы, а с libgtk+2-2.12.1 все вешается?
Comment 15 Michael Shigorin 2007-11-06 23:03:53 MSK
из переписки:

> 2 sr: не припомнишь грабель, описанных в #13299?
Нет, но по исходникам - виноват DRI вкупе с драйвером, драйвер
на ошибке DRI не должен лажаться
И по исходникам 'Option "DRI" "no"' должно помочь

И, если я правильно понимаю политику партии, то лажа возникает в
i830_dri.c:I830DRITransitionTo2d() на вызове
I830DRISetVBlankInterrupt(pScrn, FALSE)
Он не обрабатывает ошибку
Да собственно, ошибка I830DRISetVBlankInterrupt() нигде не обрабатывается
Можно вот это попробовать, но фиг знает,

--- i830_dri.c- 2007-11-06 22:12:04 +0200
+++ i830_dri.c  2007-11-06 22:15:23 +0200
@@ -1588,10 +1588,13 @@
                       
    I830DRISetPfMask(pScreen, 0);

-   sPriv->pf_enabled = 0;
-
    pI830->want_vblank_interrupts = FALSE;
-   I830DRISetVBlankInterrupt(pScrn, FALSE);
+   if( !I830DRISetVBlankInterrupt(pScrn, FALSE))
+   {
+      pI830->want_vblank_interrupts = TRUE;
+      if( !I830DRISetVBlankInterrupt(pScrn, TRUE))
+         xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "[drm] Ну, блин! Ну,
не знаю, какая-то задница случилась.\n");
+   }
 }

 #if DRI_SUPPORTS_CLIP_NOTIFY
Comment 16 Michael Shigorin 2007-11-06 23:05:17 MSK
(In reply to comment #14)
> а каким образом это стыкуется с тем что с libgtk+2-2.10.14 все работает как 
> часы, а с libgtk+2-2.12.1 все вешается?
Подозреваю, что 2.10 не дёргало что-то, что дёргает 2.12.  В той истории,
которую припоминал -- было то же самое, это когда gtk на рендеринг через cairo
перетаскивали.  Кажется, тогда вышло, что раньше проблема тоже была, но на неё
просто не наступали.
Comment 17 avm 2007-11-07 18:28:22 MSK
Попробовал на двух машинах в офисе: десктоп на i945G и ноутбук ThinkPad на
i945GM. Не воспроизводится.

memtest гонял (без ошибок). DRI отключал (сообщение об ошибке исчезает).

Воспроизвести можно попробовать с помощью OpenOffice. Убить живой Writer с
документом, запустить его снова и попробовать восстановить документ. У меня виснет.
Comment 18 Valery Inozemtsev 2007-11-08 14:49:37 MSK
виснет что?
Comment 19 avm 2007-11-08 15:03:24 MSK
Иксы.

Кстати, научился воспроизводить всё это на офисной машине с i945G (но только в
Xfce). Делается так: 0) ставим Desktop Lite + gtk 2.12, 1) запускаем Firefox и 2
копии xterm'а, 2) переключаемся в Firefox с помощью Alt-Tab, 3) переключаемся
обратно в какой-нибудь xterm с помощью taskbar'а. После этого всё перестаёт
реагировать на мышь и клавиатуру, экран не обновляется.
Comment 20 Valery Inozemtsev 2007-11-08 15:18:17 MSK
Desktop Lite + updates работает?
Desktop Lite полностью обновленный до сизифа работает?
Comment 21 avm 2007-11-11 18:08:36 MSK
Причина нашлась (по крайней мере причина интересовавшей меня части бага).
Виноват xfwm4, в апстриме это исправили, у нас #13388.
Валерий, ещё раз извините за шум.

P.S. Первый раз вторично закрываю собственную багу как INVALID :-\.