Skip to content

Исправление зависания установщика на ARM-архитектуре - #26

Open
Damir00109 wants to merge 2 commits into
Gml-Launcher:masterfrom
Damir00109:master
Open

Исправление зависания установщика на ARM-архитектуре#26
Damir00109 wants to merge 2 commits into
Gml-Launcher:masterfrom
Damir00109:master

Conversation

@Damir00109

Copy link
Copy Markdown

Исправляет критический баг в скрипте инициализации (installer.sh), из-за которого процесс установки намертво зависал на шаге "Загрузка и настройка проекта" (а также потенциально на других быстрых шагах) при запуске на ARM-архитектуре.

Функция show_spinner проверяла статус выполнения фонового процесса с помощью конструкции while kill -0 $pid.
На ARM-системах (особенно при использовании дефолтной для Ubuntu оболочки /bin/sh -> dash) быстрые фоновые подоболочки (...) & (например, связка curl + sed внутри download_project) завершались быстрее, чем спиннер успевал корректно перехватить изменение состояния. В итоге kill -0 продолжал возвращать 0, уводя спиннер в бесконечный цикл.

- Заменена проверка `kill -0 $pid` на чтение `/proc/$pid` в функции `show_spinner`. Это решает проблему бесконечного цикла, когда фоновый процесс уже завершился, но PID еще не освобожден (актуально для ARM/dash).
- Оптимизирована генерация `security_key` через `/dev/urandom` вместо `openssl rand`. На ARM-архитектурах без аппаратного генератора случайных чисел openssl намертво зависал в ожидании системной энтропии.
В функции `show_spinner` заменил проверку процесса с `kill -0 $pid` на более надежную через `/proc/$pid`. 

Это решает проблему, когда фоновые задачи (например, curl/sed) отрабатывают слишком быстро, а спиннер уходит в бесконечный цикл из-за особенностей обработки PID в оболочке `dash` на ARM-системах. На x86 изменения также работают корректно.
@serega404

Copy link
Copy Markdown
Member

@Damir00109 Прошу протестировать этот вариант #27

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants