You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Lite and the Darling Viewer: 18 unguarded clipboard writes can crash the app when the clipboard is busy #4594
Every clipboard write in Lite and the Darling Viewer outside the shared plan viewer still calls Clipboard.SetText/SetDataObject unguarded. When another program holds the Windows clipboard, WPF throws COMException (CLIPBRD_E_CANT_OPEN), and in a click handler that ends the app.
#4582 (PR #4593) adds a guarded writer, ClipboardText.TrySetText in PerformanceMonitor.Ui, with the same bounded retry as the existing guarded reader. It routes the shared plan viewer, blocking chain, deadlock graph and grid-export copies through it. The same unguarded pattern remains at 18 sites:
Lite:Helpers/ContextMenuHelper.cs (4, including the chart bitmap copy), Controls/ServerTab.CopyExport.cs, Controls/RecommendationsTab.xaml.cs (2), Windows/SettingsWindow.xaml.cs, Windows/AlertDetailWindow.xaml.cs, and Windows/EntraDeviceCodeWindow.xaml.cs.
The Darling Viewer:MainWindow.xaml.cs (3), ViewerServerTab.CopyExport.cs, ViewerServerTab.ChartContextMenu.cs, SettingsWindow.xaml.cs (2), and AlertDetailWindow.xaml.cs.
The fix is mechanical: route each through ClipboardText.TrySetText (and a bitmap-capable overload for the chart copy), and pin with a census that no unguarded Clipboard.Set* call is left outside ClipboardText. deprecated/ is out of scope.
Activity
Plan viewer: guard clipboard writes, and hand back the captured query…
Lite and the Darling Viewer: every remaining clipboard write goes thr…
erikdarlingdata commentedon Sep 28, 2026
Closed by the watcher: delivered in PR #4600, merged to dev.