Bug 22362 - [School lite] - после выхода из сессии XFCE графическая оболочка не запускается (segfault in xdm+pam)
Summary: [School lite] - после выхода из сессии XFCE графическая оболочка не запускает...
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: xdm (show other bugs)
Version: unstable
Hardware: all Linux
: P1 critical
Assignee: Anton V. Boyarshinov
QA Contact: Andrey Cherepanov
URL:
Keywords: distro-blocker, usability
: 22681 (view as bug list)
Depends on:
Blocks: 19564 22681
  Show dependency tree
 
Reported: 2009-11-22 19:10 MSK by Denis Kirienko
Modified: 2010-10-27 07:32 MSD (History)
8 users (show)

See Also:


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

Note You need to log in before you can comment on or make changes to this bug.
Description Denis Kirienko 2009-11-22 19:10:58 MSK
Установлен 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 AEN 2009-11-22 19:57:08 MSK
2cas@, shrek@
Прошу разобраться. http://forum.altlinux.org/index.php/topic,4062.45.html
Видимо, это исправлено в simply. Надо исправить в Школьном Lite.
Comment 2 tt 2009-11-23 02:07:03 MSK
segfault в xdm-1.1.9/session.c:  

SessionExit (...) { 
... 

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

... 
}
Comment 3 Anton V. Boyarshinov 2009-11-23 18:10:50 MSK
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 Dmitry V. Levin 2009-11-23 19:10:51 MSK
Вероятно, в xdm происходит memory corruption.
Comment 5 Dmitry V. Levin 2009-11-23 19:13:33 MSK
Возможно, что запуск xdm под valgrind'ом поможет локализовать это быстрее.
Comment 7 tt 2009-11-30 13:18:21 MSK
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 tt 2009-11-30 13:20:58 MSK
P.S. потом при записи логов при закрытии сессии происходит обращение по этому адресу -> SYGSEGV.
Comment 9 tt 2010-01-01 19:30:32 MSK
Created attachment 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 tt 2010-01-01 19:32:55 MSK
Created attachment 4167 [details]
.spec с патчем
Comment 11 Valery Inozemtsev 2010-01-06 18:06:55 MSK
*** Bug 22681 has been marked as a duplicate of this bug. ***
Comment 12 tt 2010-01-10 01:05:44 MSK
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 AEN 2010-01-11 15:40:08 MSK
(В ответ на комментарий №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 tt 2010-01-11 18:20:26 MSK
/ offtop /

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

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

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

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

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

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

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

/ offtop /

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

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

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

Я готов общаться с апстримом от своего имени, но для правильного указания авторства требуется ваше имя (если, конечно, вы не хотите фигурировать в коммите с одним лишь email'ом без имени)
Comment 19 tt 2010-01-12 03:04:58 MSK
(В ответ на комментарий №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 Dmitry V. Levin 2010-01-12 03:22:55 MSK
(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 tt 2010-01-12 10:08:25 MSK
(В ответ на комментарий №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 tt 2010-01-12 15:53:02 MSK
Created attachment 4201 [details]
патч: dm.c, greeter.c
Comment 24 Andrey Cherepanov 2010-01-13 14:17:27 MSK
Перенос на пакет
Comment 25 Andrey Cherepanov 2010-01-13 14:17:38 MSK
Перенос на пакет
Comment 26 Andrey Cherepanov 2010-02-17 14:51:28 MSK
Исправлено.
Comment 27 Juliette 2010-08-17 12:39:45 MSD
(In reply to comment #26)
> Исправлено.

День добрый. А как бы узнать, исправлена ли исошка на Альт Лёгкий?
Comment 28 Andrey Cherepanov 2010-08-25 15:16:25 MSD
(В ответ на комментарий №27)
> День добрый. А как бы узнать, исправлена ли исошка на Альт Лёгкий?
Исправлена в 5.0.1
Comment 29 vx8400 2010-08-25 23:02:06 MSD
/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 Denis Kirienko 2010-08-25 23:07:13 MSD
> в каком iso пофикшен?

Написали же - в 5.0.1.
Comment 31 vx8400 2010-08-25 23:13:34 MSD
(В ответ на комментарий №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 AEN 2010-08-26 00:36:58 MSD
(В ответ на комментарий №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