Summary: | [School lite] - после выхода из сессии XFCE графическая оболочка не запускается (segfault in xdm+pam) | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Product: | Sisyphus | Reporter: | Denis Kirienko <dk> | ||||||||||
Component: | xdm | Assignee: | Anton V. Boyarshinov <boyarsh> | ||||||||||
Status: | CLOSED FIXED | QA Contact: | Andrey Cherepanov <cas> | ||||||||||
Severity: | critical | ||||||||||||
Priority: | P1 | CC: | aen, glebfm, juliette.tux, kharpost, ldv, placeholder, tt, vx8400 | ||||||||||
Version: | unstable | Keywords: | distro-blocker, usability | ||||||||||
Hardware: | all | ||||||||||||
OS: | Linux | ||||||||||||
Bug Depends on: | |||||||||||||
Bug Blocks: | 19564, 22681 | ||||||||||||
Attachments: |
|
Description
Denis Kirienko
2009-11-22 19:10:58 MSK
2cas@, shrek@ Прошу разобраться. http://forum.altlinux.org/index.php/topic,4062.45.html Видимо, это исправлено в simply. Надо исправить в Школьном Lite. segfault в xdm-1.1.9/session.c: SessionExit (...) { ... pam_close_session(pamh, 0); /* ^^^^^ segfault здесь, pamh на выходе pam_open_session правильный */ ... } 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) Вероятно, в xdm происходит memory corruption. Возможно, что запуск xdm под valgrind'ом поможет локализовать это быстрее. xdm-1.1.9/session.c: ManageSession() {} При вызове dlclose(greet_lib_handle) пишется мусор в LogTag (glibc-2.10.1-alt7/misc/syslog.c:66). До dlclose() в LogTag имя программы = "xdm", как и должно быть. P.S. потом при записи логов при закрытии сессии происходит обращение по этому адресу -> SYGSEGV. 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(), см. патч.
Created attachment 4167 [details]
.spec с патчем
*** Bug 22681 has been marked as a duplicate of this bug. *** 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 (В ответ на комментарий №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 Это лучше сделать автору. Спасибо! / offtop / >> Желательно патч положить сюда: >> https://bugs.freedesktop.org/show_bug.cgi?id=24589 >Это лучше сделать автору. У автора нет @altlinux.ru в адресе. Imho, надо при любой самой мелкой возможности увеличивать _видимый_ вклад altlinux в общий для всех софт. (В ответ на комментарий №14) > / offtop / > > >> Желательно патч положить сюда: > >> https://bugs.freedesktop.org/show_bug.cgi?id=24589 > > >Это лучше сделать автору. > > У автора нет @altlinux.ru в адресе. Imho, надо при любой самой мелкой > возможности увеличивать _видимый_ вклад altlinux в общий для всех софт. Желающие не увидеть -- не увидят этого вклада, который немал. Но главное -- вклад этот авторский и нехорошо пиарить альт на нем. Ну и, наконец, получить адрес на altlinux.ru совсем не сложно. :-) (In reply to comment #12) > Желательно патч положить сюда: > https://bugs.freedesktop.org/show_bug.cgi?id=24589 Я бы не стал продвигать этот патч, поскольку он реализует memory leak. Не лучше ли перенести вызов openlog() в основную часть xdm? Created attachment 4198 [details] патч для session.c, greeter.c > Я бы не стал продвигать этот патч, поскольку он реализует memory leak. Логично. См. новый патч. Пока syslog() вызывается явно только из GreetUser(), openlog() достаточно вызвать из ManageSession(). / offtop / > вклад этот авторский и нехорошо пиарить альт на нем. Ok. Теперь добавился автор ldv@altlinux.ru (In reply to comment #17) > > Я бы не стал продвигать этот патч, поскольку он реализует memory leak. > > Логично. См. новый патч. Пока syslog() вызывается явно только из GreetUser(), > openlog() достаточно вызвать из ManageSession(). syslog() вызывается и неявно, причём неоднократно, из PAM'а, иначе бы не было той проблемы, о которой здесь сообщили сначала. Я готов общаться с апстримом от своего имени, но для правильного указания авторства требуется ваше имя (если, конечно, вы не хотите фигурировать в коммите с одним лишь email'ом без имени) (В ответ на комментарий №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 (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? (В ответ на комментарий №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". Так чаще имя писалось на англ. Created attachment 4201 [details]
патч: dm.c, greeter.c
http://cgit.freedesktop.org/xorg/app/xdm/commit/?id=ecf015a4e78b96af913c1620d542c8e356f2a3d0 http://cgit.freedesktop.org/xorg/app/xdm/commit/?id=504bb1aee60d570d8676a61acbe32c66d6069c45 Перенос на пакет Перенос на пакет Исправлено. (In reply to comment #26) > Исправлено. День добрый. А как бы узнать, исправлена ли исошка на Альт Лёгкий? (В ответ на комментарий №27) > День добрый. А как бы узнать, исправлена ли исошка на Альт Лёгкий? Исправлена в 5.0.1 /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 еще есть. > в каком iso пофикшен?
Написали же - в 5.0.1.
(В ответ на комментарий №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 не пофикшено. (В ответ на комментарий №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 |