Crash: Promptverwaltung zweimal öffnen crasht die App #1
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Schritte zum Reproduzieren
Erwartetes Verhalten
Das Promptverwaltungs-Fenster öffnet sich wieder normal.
Tatsächliches Verhalten
Die Anwendung crasht.
Mögliche Ursache
Das Fenster-Objekt wird beim Schließen nicht korrekt freigegeben oder neu initialisiert, sodass beim zweiten Öffnen ein ungültiger Zustand entsteht.
Behoben in Commit
126d061300b76712255af1380ab06cc28dbe524f.Root Cause:
self.windowhielt eine Referenz auf das geschlossene Fenster. Beim zweiten Öffnen versuchteshowOrFocus(), dieses veraltete Fenster aufzuräumen, während SwiftUI-Teardown-Callbacks noch ausstanden → Crash.Fix:
SystemPromptManagerWindowControllerimplementiert jetztNSWindowDelegate. InwindowWillClosewirdself.window = nilgesetzt, sodass der Cleanup-Pfad beim zweiten Öffnen ein sicheres Noop ist.✅ Behoben und vom Nutzer bestätigt.
Root Cause: AppKit ruft intern
releaseauf dem NSWindow auf wenn es geschlossen wird. Dadurch fiel der Retain Count auf 0 und das Objekt wurde dealloziiert — obwohlself.windoweine Swift-Strong-Reference hielt. Folgender Zugriff aufisVisible→ EXC_BAD_ACCESS.Fix (Commit
71fbc27): Pattern vonOnboardingWindowControllerübernommen:panel.isReleasedWhenClosed = false— verhindert Deallokation beim SchließenNSWindowDelegate.windowWillClose— setztself.window = nildirekt auf dem MainActor (keinnonisolated, kein Task-Dispatch)showOrFocus()erstellt nur ein neues Fenster wennwindow == nil, sonst wird das bestehende wiederverwendet