Summary: | Долго запускается на системах с KDE | ||||||
---|---|---|---|---|---|---|---|
Product: | Sisyphus | Reporter: | Ivan Alekseev <qwetwe> | ||||
Component: | appinstall | Assignee: | Andrey Cherepanov <cas> | ||||
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus | ||||
Severity: | normal | ||||||
Priority: | P5 | CC: | cas, lav, tergoevm | ||||
Version: | unstable | ||||||
Hardware: | x86_64 | ||||||
OS: | Linux | ||||||
Attachments: |
|
Description
Ivan Alekseev
2022-09-09 12:29:30 MSK
Из терминала приложение запускается с нормальной скоростью: $ appinstall (Ответ для Ivan Alekseev на комментарий #1) > Из терминала приложение запускается с нормальной скоростью: > $ appinstall Он зачем-то запускает epm installed для каждого из поддерживаемых им приложений. Проверялось в Sisyphus, ошибка воспроизводится. appinstall-1.4.0-alt1 -> sisyphus: Mon May 08 2023 Andrey Cherepanov <cas@altlinux> 1.4.0-alt1 - Show window immediately and display loading animation (ALT #43747) - Show only allowed applications from /etc/appinstall/allow.d (ALT #41900) - Change installed icon to QStyle.SP_ArrowDown - Get installed application list with new epm play parameter --short (ALT #42812, #42802) Стенды: kworkstation (p10) regular kde (Sisyphus) Шаги для воспроизведения: 1) Запустить appinstall из меню приложений или с помощью krunner (Alt+F2) Фактический результат с версией appinstall-1.3.3-alt1.noarch: приложение очень долго запускается. Фактический результат с версией appinstall-1.4.1-alt1.noarch: приложение запускается в течении 10 секунд, но списка приложений нет долгое время. Ожидаемый результат: приложение запускается в течение десяти секунд и список приложений появляется сразу. Если запускать из krunner хитрым способом: appinstall </dev/null то обе версии appinstall отрабатывают нормально, идём править: /usr/share/applications/appinstall.desktop и добавляем костыль в строку Exec: Exec=appinstall </dev/null Результат: всё работает корректно Причина данного поведения на KDE связана с появлением несуществующей pipe в /stdin если мы запускаем приложение не из терминала в КДЕ, в следствии чего когда appinstall запускает epm play одно из условий определяет на входе pipe. Как вариант исправления данной ошибки, можно сделать, чтобы appinstall запускал внутри себя epm play c явным </dev/null Подтверждение, что проблема не в epm, а в КDE: создаем скрипт: #!/usr/bin/env bash ls -l /proc/self/fd/0 >> /tmp/script.log if [ -p /dev/stdin ] ; then echo "PIPE" else echo "NOPIPE" fi >> /tmp/script.log читаем что в /tmp/script.log tail -f /tmp/script.log запускаем тестовый скрипт из терминала: /tmp/script вывод: lrwx------ 1 fidel fidel 64 июн 6 12:26 /proc/self/fd/0 -> /dev/pts/2 NOPIPE запускаем тестовый скрипт из терминала но с pipe: test | /tmp/script lr-x------ 1 fidel fidel 64 июн 6 12:27 /proc/self/fd/0 -> pipe:[402571] PIPE Логика отрабатывает правильно до тех пор, пока мы не запустим скрипт без терминала, например из файлового менеджера двумя кликами по скрипту или с помощью krunner (Alt+F2): /tmp/script Вывод: lr-x------ 1 fidel fidel 64 июн 6 12:30 /proc/self/fd/0 -> pipe:[397973] PIPE Что не является правильным. Еще раз с помощью krunner (Alt+F2), но немного по-другому: /tmp/script </dev/null lr-x------ 1 fidel fidel 64 июн 6 12:33 /proc/self/fd/0 -> /dev/null NOPIPE а это уже как вариант использования для исправления данной баги. (Но думаю что надо создать еще и для kde.) (Ответ для Sergey V Turchin на комментарий #2) > (Ответ для Ivan Alekseev на комментарий #1) > > Из терминала приложение запускается с нормальной скоростью: > > $ appinstall > Он зачем-то запускает > epm installed > для каждого из поддерживаемых им приложений. А есть какие-то предположения, зачем KDE вызывает приложения с каким-то pipe на stdin? Created attachment 13457 [details]
Патч исправляющий долгий запуск из меню в KDE
Явное указание stdin=subprocess.DEVNULL исправило ситуацию с долгим запуском appinstall из меню в KDE. Патч прилагаю.
(Ответ для Vitaly Lipatov на комментарий #6) > А есть какие-то предположения, зачем KDE вызывает приложения с каким-то pipe > на stdin? Смысл такого поведения рабочего окружения KDE на данный момент мне не понятен. (Ответ для Mikhail Tergoev на комментарий #8) > (Ответ для Vitaly Lipatov на комментарий #6) > > А есть какие-то предположения, зачем KDE вызывает приложения с каким-то pipe > > на stdin? > > Смысл такого поведения рабочего окружения KDE на данный момент мне не > понятен. Это поведение излишне умного epm, который сильно завязан на окружение терминала и рассчитан на терминал. Спасибо за патч. appinstall-1.4.2-alt1 -> sisyphus: Tue Jun 13 2023 Andrey Cherepanov <cas@altlinux> 1.4.2-alt1 - Used /dev/null as stdin for prevent epm hang (thanks Mikhail Tergoev) (ALT #43747). |