Skip to content

fix: protect checksum workers and GUI garbage collection - #15

Open
lukisch wants to merge 5 commits into
masterfrom
fix/codex-checksum-close-lifecycle-20261001
Open

lukisch wants to merge 5 commits into
masterfrom
fix/codex-checksum-close-lifecycle-20261001

Conversation

@lukisch

@lukisch lukisch commented Oct 1, 2026 •

Copy link
Copy Markdown
Collaborator

Zwei native Qt-Fehler sind abgesichert: Der Prüfsummen-Dialog konnte nach einem erfolglosen einsekündigen Wait seinen noch laufenden Worker freigeben; außerdem zeigte die macOS-CI Garbage Collection im execnet-Hintergrundthread während des GUI-Aufbaus.

Schließen fordert jetzt den Abbruch an und hält den Dialog bis zum bestätigten worker.wait(0)-Abschluss erhalten. Ein Qt-Timer prüft dies ohne Warten im GUI-Thread. Wiederholte Abschlussanforderungen bewahren den ersten Rückgabewert und senden finished genau einmal. Vier Regressionen prüfen accept/reject/Fensterschließen, Reaktionsfähigkeit, den Abschluss-Race und echte native Dialog-/Worker-Löschung im Unterprozess. Die isolierte Schließprobe endete vorher mit 0xC0000409, danach mit Exit 0.

Zyklische Python-Bereinigung läuft während des GUI-Betriebs im Anwendungsthread. Der Collector entspricht der bereits geprüften Implementierung aus PR #14. Produktstart und Testlaufzeit verwenden dieselbe Policy; vier native Prozessprüfungen belegen GUI-Thread-Zerstörung und Wiederherstellung der vorherigen Einstellung. Qt-Testfixtures geben eigene Dialoge kontrolliert frei. pytest-qt ist jetzt in CI sowie dev/test-Extras deklariert.

Validierung auf 2df3eb6: vollständige lokale Suite mit zwei Workern 387 bestanden/2 Skips, 91,80 Sekunden, bestätigter Exit 0; gezielte 21 GC-/Lifecycle-/Dialogtests ebenfalls Exit 0. Ruff und Diff-Check grün. Unabhängiges Review bestätigt beide Lifecycle-Korrekturen; zusätzlich 14 gezielte GC-/Lifecycle-/Menütests mit zwei Workern und Exit 0. CI 36803063109: alle neun Windows/Linux/macOS × Python-3.10/3.11/3.12-Jobs erfolgreich. CodeQL 36803058865 ebenfalls erfolgreich am exakten Head.

CI-Vorgeschichte: Erst fehlte die qtbot-Fixture. Nach Ergänzung liefen acht Matrixjobs erfolgreich; macOS/Python 3.12 scheiterte nativ bei einem Menü-Test. Der Stacktrace zeigt Garbage-collecting im execnet-Thread parallel zum Qt-Aufbau. Die Collector-Integration adressiert diesen belegten Fehlerpfad.

Grenzen: Andere historische Abschlussstörungen sind nicht pauschal als behoben belegt. EXE- und native Screenshot-Smokes sind im Offscreen-Quelltest übersprungen. Kein EXE/MSIX-Release, keine Store-Einreichung. Der geschützte master verlangt eine GitHub-Freigabe vor dem Merge.

Das Join-Kriterium folgt der Qt-Dokumentation zu QThread: Nach finished können noch native Aufräumarbeiten laufen; wait muss den vollständigen Abschluss bestätigen.

@github-actions

github-actions Bot commented Oct 1, 2026

Copy link
Copy Markdown

Welcome! Thanks for your first pull request in this repository.

A maintainer will review it soon. Please make sure:

  • Your changes are tested
  • Documentation is updated if needed
  • The PR description explains what changed and why

Thanks for contributing.

@lukisch lukisch changed the title fix: close checksum dialog after native worker has joined fix: protect checksum workers and GUI garbage collection Oct 1, 2026
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.

1 participant