Conversation
|
Welcome! Thanks for your first pull request in this repository. A maintainer will review it soon. Please make sure:
Thanks for contributing. |
This was referenced Oct 1, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.