Bug 22362 - [School lite] - после выхода из сессии XFCE графическая оболочка не запускается (segfault in xdm+pam)
: [School lite] - после выхода из сессии XFCE графическая оболочка не запускает...
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/xdm)
: unstable
: all Linux
: P1 critical
Assigned To:
:
:
: distro-blocker, usability
:
: 19564 22681
  Show dependency tree
 
Reported: 2009-11-22 19:10 by
Modified: 2010-10-27 07:32 (History)


Attachments
Патч для xdm-1.1.9/greeter/greet.c (334 bytes, patch)
2010-01-01 19:30, tt@compas.ihep.su
no flags Details | Diff
.spec с патчем (5.33 KB, application/octet-stream)
2010-01-01 19:32, tt@compas.ihep.su
no flags Details
патч для session.c, greeter.c (1.13 KB, patch)
2010-01-12 00:58, tt@compas.ihep.su
no flags Details | Diff
патч: dm.c, greeter.c (995 bytes, patch)
2010-01-12 15:53, tt@compas.ihep.su
no flags Details | Diff


Note

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


Description From 2009-11-22 19:10:58
Установлен School lite, final, в виртуальную машину VirtualBox.

Если в меню XFce выбрать команду "Выйти", затем "Выйти", то после этого
графическая оболочка не запускается.

$ cat /var/log/xdm-error.log
xdm info (pid 10772): Starting
xdm info (pid 10772): Starting X server on :0

X.Org X Server 1.6.5
Release Date: 2009-10-11
X Protocol Version 11, Revision 0
Build Operating System: Simply GNU/Linux 5.0.0 RC2 (Billy) i686
Current Operating System: Linux host-15.localdomain 2.6.30-std-def-alt14 #1 SMP
Wed Oct 7 06:44:21 UTC 2009 i686
Build Date: 12 October 2009  08:23:12AM

    Before reporting problems, check https://bugzilla.altlinux.org/
    to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
    (++) from command line, (!!) notice, (II) informational,
    (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/Xorg.0.log", Time: Sun Nov 22 19:00:08 2009
(==) Using config file: "/etc/X11/xorg.conf"
xdm error (pid 10772): Unknown session exit code 2816 from process 11118
error setting MTRR (base = 0xe0000000, size = 0x00500000, type = 1) Invalid
argument (22)
------- Comment #1 From 2009-11-22 19:57:08 -------
2cas@, shrek@
Прошу разобраться. http://forum.altlinux.org/index.php/topic,4062.45.html
Видимо, это исправлено в simply. Надо исправить в Школьном Lite.
------- Comment #2 From 2009-11-23 02:07:03 -------
segfault в xdm-1.1.9/session.c:  

SessionExit (...) { 
... 

 pam_close_session(pamh, 0);  
/* ^^^^^ segfault здесь, pamh на выходе pam_open_session правильный */

... 
}
------- Comment #3 From 2009-11-23 18:10:50 -------
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1212238080 (LWP 14627)]
0xb7d428bf in strlen () from /lib/libc.so.6
(gdb) bt
#0  0xb7d428bf in strlen () from /lib/libc.so.6
#1  0xb7d36138 in fputs_unlocked () from /lib/libc.so.6
#2  0xb7d95968 in __vsyslog_chk () from /lib/libc.so.6
#3  0xb7d95f76 in __syslog_chk () from /lib/libc.so.6
#4  0xb7e28397 in pam_vsyslog () from /lib/libpam.so.0
#5  0xb7e284e2 in pam_syslog () from /lib/libpam.so.0
#6  0xb79991a8 in pam_sm_close_session () from /lib/security/pam_tcb.so
#7  0xb7e2333f in endgrent () from /lib/libpam.so.0
#8  0x080c1968 in ?? ()
#9  0x00000000 in ?? ()
(gdb)
------- Comment #4 From 2009-11-23 19:10:51 -------
Вероятно, в xdm происходит memory corruption.
------- Comment #5 From 2009-11-23 19:13:33 -------
Возможно, что запуск xdm под valgrind'ом поможет локализовать это быстрее.
------- Comment #6 From 2009-11-26 11:40:34 -------
https://bugs.freedesktop.org/show_bug.cgi?id=24589
------- Comment #7 From 2009-11-30 13:18:21 -------
xdm-1.1.9/session.c: ManageSession() {}

При вызове dlclose(greet_lib_handle) пишется мусор в LogTag
(glibc-2.10.1-alt7/misc/syslog.c:66).
До dlclose() в LogTag имя программы = "xdm", как и должно быть.
------- Comment #8 From 2009-11-30 13:20:58 -------
P.S. потом при записи логов при закрытии сессии происходит обращение по этому
адресу -> SYGSEGV.
------- Comment #9 From 2010-01-01 19:30:32 -------
Created an attachment (id=4166) [details]
Патч для xdm-1.1.9/greeter/greet.c

В greeter/greet.c (строка 493) в openlog() передается постоянный адрес строки
"xdm" из libXdmGreet.so, по которому syslog() обращается и после dlclose() на
libXdmGreet.so. После dlclose() это вызывает segfault. Если строку скопировать
на кучу, то адрес имеет смысл и после dlclose(), см. патч.
------- Comment #10 From 2010-01-01 19:32:55 -------
Created an attachment (id=4167) [details]
.spec с патчем
------- Comment #11 From 2010-01-06 18:06:55 -------
*** Bug 22681 has been marked as a duplicate of this bug. ***
------- Comment #12 From 2010-01-10 01:05:44 -------
Ok. Спасибо!

Попадет ли xdm-1.1.9-alt2 в "p5", с обновлением
http://ftp.altlinux.org/pub/distributions/ALTLinux/p5/iso/school/altlinux-5.0.0-school-lite-i586-ru-install-cd.iso,
в котором xdm стоит по умолчанию?

Желательно патч положить сюда:
https://bugs.freedesktop.org/show_bug.cgi?id=24589
------- Comment #13 From 2010-01-11 15:40:08 -------
(В ответ на комментарий №12)
> Ok. Спасибо!
> 
> Попадет ли xdm-1.1.9-alt2 в "p5", с обновлением
> http://ftp.altlinux.org/pub/distributions/ALTLinux/p5/iso/school/altlinux-5.0.0-school-lite-i586-ru-install-cd.iso,
> в котором xdm стоит по умолчанию?

2shrek: соберите для 5.1, пожалуйста.
2cas: переложите в p5, пожалуйста

> 
> Желательно патч положить сюда:
> https://bugs.freedesktop.org/show_bug.cgi?id=24589

Это лучше сделать автору.

Спасибо!
------- Comment #14 From 2010-01-11 18:20:26 -------
/ offtop /

>> Желательно патч положить сюда:
>> https://bugs.freedesktop.org/show_bug.cgi?id=24589

>Это лучше сделать автору.

У автора нет @altlinux.ru в адресе. Imho, надо при любой самой мелкой
возможности увеличивать _видимый_ вклад altlinux в общий для всех софт.
------- Comment #15 From 2010-01-11 18:23:58 -------
(В ответ на комментарий №14)
> / offtop /
> 
> >> Желательно патч положить сюда:
> >> https://bugs.freedesktop.org/show_bug.cgi?id=24589
> 
> >Это лучше сделать автору.
> 
> У автора нет @altlinux.ru в адресе. Imho, надо при любой самой мелкой
> возможности увеличивать _видимый_ вклад altlinux в общий для всех софт.

Желающие не увидеть -- не увидят этого вклада, который немал. Но главное --
вклад этот авторский и нехорошо пиарить альт на нем.
Ну и, наконец, получить адрес на altlinux.ru совсем не сложно. :-)
------- Comment #16 From 2010-01-11 18:41:01 -------
(In reply to comment #12)
> Желательно патч положить сюда:
> https://bugs.freedesktop.org/show_bug.cgi?id=24589

Я бы не стал продвигать этот патч, поскольку он реализует memory leak.
Не лучше ли перенести вызов openlog() в основную часть xdm?
------- Comment #17 From 2010-01-12 00:58:43 -------
Created an attachment (id=4198) [details]
патч для session.c, greeter.c

> Я бы не стал продвигать этот патч, поскольку он реализует memory leak.

Логично. См. новый патч. Пока syslog() вызывается явно только из GreetUser(),
openlog() достаточно вызвать из ManageSession(). 

/ offtop /

>  вклад этот авторский и нехорошо пиарить альт на нем.

Ok. Теперь добавился автор ldv@altlinux.ru
------- Comment #18 From 2010-01-12 02:05:05 -------
(In reply to comment #17)
> > Я бы не стал продвигать этот патч, поскольку он реализует memory leak.
> 
> Логично. См. новый патч. Пока syslog() вызывается явно только из GreetUser(),
> openlog() достаточно вызвать из ManageSession().

syslog() вызывается и неявно, причём неоднократно, из PAM'а, иначе бы не было
той проблемы, о которой здесь сообщили сначала.

Я готов общаться с апстримом от своего имени, но для правильного указания
авторства требуется ваше имя (если, конечно, вы не хотите фигурировать в
коммите с одним лишь email'ом без имени)
------- Comment #19 From 2010-01-12 03:04:58 -------
(В ответ на комментарий №18)
> (In reply to comment #17)
>
> syslog() вызывается и неявно, причём неоднократно, из PAM'а, 

Первый вызов pam* () идет из GreetUser(). С последним патчем это после
openlog(). Поэтому openlog() передвигать выше нет смысла, если до этого места в
дочернем xdm нет других вызовов syslog().

> Я готов общаться с апстримом от своего имени, 

Thx!

> но для правильного указания авторства требуется ваше имя 

O.V.Zenin (IHEP, Protvino, Russia), tt(at)compas.ihep.su
------- Comment #20 From 2010-01-12 03:22:55 -------
(In reply to comment #19)
> (В ответ на комментарий №18)
> > (In reply to comment #17)
> >
> > syslog() вызывается и неявно, причём неоднократно, из PAM'а, 
> 
> Первый вызов pam* () идет из GreetUser(). С последним патчем это после
> openlog(). Поэтому openlog() передвигать выше нет смысла, если до этого места
> в дочернем xdm нет других вызовов syslog().

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

> > Я готов общаться с апстримом от своего имени, 
> 
> Thx!
> 
> > но для правильного указания авторства требуется ваше имя 
> 
> O.V.Zenin (IHEP, Protvino, Russia), tt(at)compas.ihep.su

Oleg V. Zenin?
------- Comment #21 From 2010-01-12 10:08:25 -------
(В ответ на комментарий №20)
> 
> Я думаю, что от более раннего вызова openlog(3) никому хуже не станет (в
> демонах обычно стараются сделать этот вызов пораньше).

Тогда можно переместить openlog() в dm.c, строка 747:

...

 if (!nofork_session)
        pid = fork ();
    else
        pid = 0;
    switch (pid)
    {
    case 0:
+
+#ifdef USE_SYSLOG
+       openlog("xdm", LOG_ODELAY|LOG_PID, LOG_AUTHPRIV); 
+#endif
+
        if (!nofork_session) {
            CleanUpChild ();
            (void) Signal (SIGPIPE, SIG_IGN);
        }
        LoadSessionResources (d);
        SetAuthorization (d);
        if (!WaitForServer (d))
            exit (OPENFAILED_DISPLAY);
        SetWindowPath(d);
#ifdef XDMCP
        if (d->useChooser)
            RunChooser (d);
        else
#endif
            ManageSession (d);

...

> Oleg V. Zenin?

Тогда "Oleg Zenin". Так чаще имя писалось на англ.
------- Comment #22 From 2010-01-12 15:53:02 -------
Created an attachment (id=4201) [details]
патч: dm.c, greeter.c
------- Comment #24 From 2010-01-13 14:17:27 -------
Перенос на пакет
------- Comment #25 From 2010-01-13 14:17:38 -------
Перенос на пакет
------- Comment #26 From 2010-02-17 14:51:28 -------
Исправлено.
------- Comment #27 From 2010-08-17 12:39:45 -------
(In reply to comment #26)
> Исправлено.

День добрый. А как бы узнать, исправлена ли исошка на Альт Лёгкий?
------- Comment #28 From 2010-08-25 15:16:25 -------
(В ответ на комментарий №27)
> День добрый. А как бы узнать, исправлена ли исошка на Альт Лёгкий?
Исправлена в 5.0.1
------- Comment #29 From 2010-08-25 23:02:06 -------
/offtop/ 

#23108 (вылет openoffice c "XDM authorization key matches an existing client
... can't open display) в каком iso пофикшен?

В
ftp://ftp.altlinux.ru/pub/distributions/ALTLinux/p5/iso/school/altlinux-5.0.0-school-lite-i586-ru-install-cd.iso
#23108 еще есть.
------- Comment #30 From 2010-08-25 23:07:13 -------
> в каком iso пофикшен?

Написали же - в 5.0.1.
------- Comment #31 From 2010-08-25 23:13:34 -------
(В ответ на комментарий №30)
> > в каком iso пофикшен?
> 
> Написали же - в 5.0.1.

В
ftp://ftp.altlinux.ru/pub/distributions/ALTLinux/p5/iso/school/5.0.1/altlinux-5.0.1-school-lite-i586-ru-install-cd.iso
от 04.03.2010 не пофикшено.
------- Comment #32 From 2010-08-26 00:36:58 -------
(В ответ на комментарий №31)
> (В ответ на комментарий №30)
> > > в каком iso пофикшен?
> > 
> > Написали же - в 5.0.1.
> 
> В
> ftp://ftp.altlinux.ru/pub/distributions/ALTLinux/p5/iso/school/5.0.1/altlinux-5.0.1-school-lite-i586-ru-install-cd.iso
> от 04.03.2010 не пофикшено.


Да, извините.
Исправлено в
ftp://ftp.altlinux.ru/pub/distributions/ALTLinux/p5/iso/school/5.0.1/altlinux-5.0.1r1-school-lite-i586-ru-install-cd.iso