Система: Альт Образование 11.2, x86_64 (ЦП kvm64), KDE Plasma Wayland, учётка test, ru_RU.UTF-8. Версия пакета: openscad-2021.01-alt7 Шаги воспроизведения: 1. Запустить OpenSCAD из меню приложений. 2. В окне приветствия нажать «Создать». 3. В редакторе ввести cube(5); (не сохранять). 4. Нажать Ctrl+Q (Файл -> Выход). Ожидаемый результат: вопрос о сохранении несохранённых изменений и штатное завершение. Фактический результат: окно исчезает сразу, без вопроса о сохранении; процесс завершается сигналом SIGSEGV: systemd: app-openscad@...service: Main process exited, code=dumped, status=11/SEGV. Backtrace (coredumpctl): #0 QHashData::nextNode (libQt5Core.so.5 + 0x132531) #1 openscad + 0x1eb6f2 #2 main (openscad + 0xd491e) Падение то же без правки кода (новый пустой документ + Ctrl+Q). Дополнительно: - Причина: openscad.cc:848 — range-for по QSet windowManager.getWindows() с delete mainw внутри; деструктор MainWindow (mainwin.cc:822) вызывает windowManager.remove(this), итератор QSet становится недействительным. - Вопроса о сохранении нет, потому что MainWindow::quit() (mainwin.cc:3195–3199) отправляет QCloseEvent в QApplication, а не окнам. - В апстримном master этого цикла уже нет. - Esc в окне приветствия закрывает приложение без падения. - Набранный код остаётся только в автобэкапе ~/.local/share/OpenSCAD/backups. - Core-файл пишется только при ulimit -c > 0. - Воспроизводится при каждом выходе: 5 из 5 запусков с чистым профилем. Стек при подключённом gdb (без отладочных символов) выглядит иначе (SIGSEGV на недействительном адресе, затем #1 openscad + 0x1eb714, #2 main) — это тот же обход удалённого окна. Вложения: - openscad-before-quit.png — окно OpenSCAD с введённым cube(5); перед нажатием Ctrl+Q - openscad-sigsegv-on-quit.log — выдержка из журнала: процесс openscad завершён SIGSEGV после Ctrl+Q (два запуска), стек из gdb
Created attachment 22688 [details] окно OpenSCAD с введённым cube(5); перед нажатием Ctrl+Q
Created attachment 22689 [details] выдержка из журнала: процесс openscad завершён SIGSEGV после Ctrl+Q (два запуска), стек из gdb