LINUX.ORG.RU

Иксы, переключение между сеансами с разными пользователями и блокировка графических приложений

 , , ,


0

4

Суть треда такова: загружаюcь в свой гнулинукс (Gentoo, если это имеет значение), запускаю иксовый сеанс с кедами от своего юзера, потом запускаю новый иксовый сеанс от другого юзера (Завершение работы ->Переключить пользователя), в процессе работы и посещения лорчика периодически переключаюсь между сеансами через Alt-Ctrl-F{7-8}. Проблема в том, что после переключения сеанса через какое-то время в неактивном сеансе блокируются программы: вкладка в браузере с ютубом перестаёт играть музон, останавливается конпеляция в Konsole и т.д. При переключении обратно всё резко возобновляется. Это какой-то баг или фундаментальная особенность архитектуры иксов или кед? Есть подозрение, что где-то в каком-то буфере накапливаются события отрисовки, и когда он заполняется, вызывающая программа блокируется. Ещё есть смутное ощущение-воспоминание, что раньше (лет 3-5 назад) такого не было, программы после переключения продолжали работать всё время. У кого что есть сказать по этому поводу?

★★★★★

Последнее исправление: Harald (всего исправлений: 1)

Вообще-то когда сессия блокируется, если она открывалась через всякие polkit и systemd, то многие права могут заблокироваться, но компиляция к ним не относится. Дело точно не в иксах.

anonymous
()

... останавливается конпеляция в Konsole

Но... Но зачем так? Даже с единственной иксовой сессией (а без неё и подавно) без мультиплексора в эмуляторе терминала совершенно некомфортно канпилять. А когда есть screen или tmux, совершенно наплевать что там в кедах или иксах «заблокировалось».

vvn_black ★★★★★
()
Ответ на: комментарий от anonymous

systemd нету, используется openrc

но компиляция к ним не относится. Дело точно не в иксах.

компиляция запускается в Konsole, Konsole - графическое иксовое приложение

Harald ★★★★★
() автор топика
Ответ на: комментарий от Harald

компиляция запускается в Konsole, Konsole - графическое иксовое приложение

Продолжая цепочку, раз останавливаются только иксовые приложения, то это из-за иксов. Иксы этим не занимаются, самое большое - могут погасить экран, для остального и придуманы локеры,DM,*киты. Возьми, да посмотри для начала активность и в каком состоянии процессы из другой сессии. Можешь счётчики запустить, dbus послушать.

anonymous
()

Попробуйте компиляцию в Консоле запускать в фоном режиме.

piwww ★★★★
()
Ответ на: комментарий от anonymous

ну вот запустил dd if=/dev/urandom | hexdump -C в Konsole

переключился в другой сеанс, подцепился к процессу hexdump strace-ом, видно, что процесс заблокирован на записи в stdout

write(1,

если подключиться к подвисшему процессу Konsole

writev(3, [{iov_base="\21\0\2\0\265\0\0\0", iov_len=8}], 1) = 8
futex(0xa973b8, FUTEX_WAKE_PRIVATE, 1)  = 1
futex(0xa973b8, FUTEX_WAKE_PRIVATE, 1)  = 0
poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{iov_base="\21\0\2\0\245\0\0\0\21\0\2\0\246\0\0\0\21\0\2\0\266\0\0\0\21\0\2\0\267\0\0\0"..., iov_len=40}], 1) = 40
futex(0x7ffe9949be78, FUTEX_WAIT_PRIVATE, 0, NULL

Harald ★★★★★
() автор топика
Ответ на: комментарий от Harald

если подключиться к Konsole через gdb

(gdb) bt
#0  0x00007f0787be16b9 in futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x7ffe9949c138) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  __pthread_cond_wait_common (abstime=0x0, mutex=0xa973b8, cond=0x7ffe9949c110) at pthread_cond_wait.c:502
#2  __pthread_cond_wait (cond=0x7ffe9949c110, mutex=0xa973b8) at pthread_cond_wait.c:655
#3  0x00007f0788002b49 in ?? () from /usr/lib64/libxcb.so.1
#4  0x00007f078800440f in ?? () from /usr/lib64/libxcb.so.1
#5  0x00007f0788004521 in xcb_wait_for_reply () from /usr/lib64/libxcb.so.1
#6  0x00007f077f834ad0 in QXcbConnection::atomName(unsigned int) () from /usr/lib64/libQt5XcbQpa.so.5
#7  0x00007f077f83e21e in ?? () from /usr/lib64/libQt5XcbQpa.so.5
#8  0x00007f077f83ef48 in ?? () from /usr/lib64/libQt5XcbQpa.so.5
#9  0x00007f077f838b3f in QXcbConnection::handleXcbEvent(xcb_generic_event_t*) () from /usr/lib64/libQt5XcbQpa.so.5
#10 0x00007f077f83a622 in QXcbConnection::processXcbEvents() () from /usr/lib64/libQt5XcbQpa.so.5
#11 0x00007f078b2561da in QObject::event(QEvent*) () from /usr/lib64/libQt5Core.so.5
#12 0x00007f078bd01dfc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/libQt5Widgets.so.5
#13 0x00007f078bd092e0 in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/libQt5Widgets.so.5
#14 0x00007f078b22ebf0 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib64/libQt5Core.so.5
#15 0x00007f078b230f73 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib64/libQt5Core.so.5
#16 0x00007f078b27a203 in ?? () from /usr/lib64/libQt5Core.so.5
#17 0x00007f0785ef548d in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0
#18 0x00007f0785ef5770 in ?? () from /usr/lib64/libglib-2.0.so.0
#19 0x00007f0785ef581c in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#20 0x00007f078b27a277 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQt5Core.so.5
#21 0x00007f078b22d8ca in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQt5Core.so.5
#22 0x00007f078b23540c in QCoreApplication::exec() () from /usr/lib64/libQt5Core.so.5
#23 0x00007f078e8f1049 in kdemain () from /usr/lib64/libkdeinit5_konsole.so
#24 0x00007f078e5375e0 in __libc_start_main (main=0x400740, argc=1, argv=0x7ffe9949cc78, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffe9949cc68)
    at ../csu/libc-start.c:295
#25 0x0000000000400779 in _start ()

как видно, ждёт мютекса какая-то функция из недр libxcb:

#5 0x00007f0788004521 in xcb_wait_for_reply () from /usr/lib64/libxcb.so.1

Harald ★★★★★
() автор топика

после переключения сеанса через какое-то время в неактивном сеансе блокируются программы: вкладка в браузере с ютубом перестаёт играть музон, останавливается конпеляция в Konsole и т.д. При переключении обратно всё резко возобновляется. Это какой-то баг или фундаментальная особенность архитектуры иксов или кед?

Не иксов точно. У меня и Rhythmbox в таких случаях останавливается, так что вряд ли это такая именно кед - скорее, «так принято» (и реализуется в DE).

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)

Могу сказать только что у меня на генте с KDE4 и OpenRC такого НЕ происходило. Сейчас у меня fluxbox и тоже такого нет. Так что я сильно сомневаюсь что это особенность иксов, скорее фича DE или обвязки(consolekit/policykit), как уже предположили выше

Pinkbyte ★★★★★
()

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

genryRar ★★
()
31 марта 2018 г.

Удалось что либо раскопать по этому вопросу?

А то я тоже с этим столкнулся по Debian-9 и XFCE4

Если не удастся исправить это баг, придется переходить на другой DE...

Только на какой...

Ushenin
()
Ответ на: комментарий от vvn_black

Кто к чему привык. В удалённом сеансе я использую screen, а при работе с графическим эмулятором терминала мне удобнее табы (в Konsole).

Pravorskyi ★★★
()
25 июля 2018 г.

вроде бы после недавних обновлений проблема исчезла

Harald ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.