| 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). |