| Summary: | gdm: Чистая инсталляция, новый пользователь — не пускает, похоже пускает и выбрасывает. | ||
|---|---|---|---|
| Product: | Desktop Internal | Reporter: | Stanislav Fomin <stanislav.fomin> |
| Component: | --- | Assignee: | Arkady L. Shane <arkady.shane> |
| Status: | RESOLVED FIXED | QA Contact: | Anton Peyter <anton.peyter> |
| Severity: | major | ||
| Priority: | Normal | CC: | arkady.shane, denis.silakov |
| Version: | unspecified | ||
| Target Milestone: | --- | ||
| Hardware: | All | ||
| OS: | Linux | ||
| Whiteboard: | [GNOME 1524] | ||
| Platform: | --- | ROSA Vulnerability identifier: | |
| RPM Package: | ISO-related: | ||
| Bad POT generating: | Upstream: | ||
|
Description
Stanislav Fomin
2013-09-17 00:19:37 MSK
После исследования с Аркадием, выяснено, что все эти проблемы вызываются скриптами из /etc/bash_completion.d/ ( /etc/bash_completion.d/systemd, но и не только). В какой-то момент, при запуске сессии из gdm через bash и при выполнении этих скриптов, у кого-то едете крыша, эти скрипты падают с ошибками парсинга и все идет нафиг. По уму, это было бы интересно исследовать. Но по большому счету, запускать из gdm через bash (и получать риски упасть из-за сломанных скриптов автокомплишна), это какой-то бред. Предлагаю просто прибить гвоздями запуск сессии через /bin/sh без всяких комплишнов. Аркадий, коллеги? Вешаю флаг, чтобы не утерять внимание. Корень зла в том, что /etc/X11/gdm/Xsesison начинается с #!/bin/sh, а "scripts starting with #!/bin/sh tell BASH to run in POSIX conformance mode". В то же время /etc/X11/gdm/Xsesison делает такую вещь как ". /etc/profile" Внутри /etc/profile в свою очередь загружаются все файлы из /etc/profile.d. А внутри этого каталога есть, например, 20bash-completion.sh, который, видимо, сразу считывает все сови completion-ы. При этом в completion'ах могут быть "bash-измы" (что мы и наблюдаем в случае с systemd), а поскольку Xsession изначально запустил Bash в POSIX-compatible mode, то на эти башизмы шелл ругается и падает. Пути решения: 1) Простой и быстры - поменять /bin/sh на /bin/bash в /etc/X11/gdm/Xsesison 2) Выкинуть из /etc/X11/gdm/Xsesison загрузку /etc/profile и грузить только те файлы, которые реально необюходимы - например, /etc/X11/Xsession грузит только /etc/profile.d/10lang.sh. Imho, единственный плюч второго подхода - что он немного ускорит заугрзку (скорее всего на мизерное число миллисекунд). Зато может что-нибудь неожиданно овалиться, если ме перестанем считывать /etc/profile. Так что я за простую замену /bin/sh на /bin/bash в /etc/X11/gdm/Xsesison. Исправлено в сборках gdm 3.8.1.1-11 https://abf.rosalinux.ru/build_lists/1381126 https://abf.rosalinux.ru/build_lists/1381127 Так же можно это потестировать на образе https://abf.rosalinux.ru/platforms/rosa2012.1/products/32/product_build_lists/1867 Вот тут (http://bugs.rosalinux.ru/show_bug.cgi?id=3099) говорят, что что-то что-то(!) не исправляет. Давайте уже бахнем и добьём, а то испорченный телефон получается. Вроде же доисследовали и добили, или есть еще какие-то кейсы, кроме bash-ошибок при sh-интерпретации? Его надо пропустить через QA. Апдейт в репозитории |