mirror of https://github.com/icsharpcode/ILSpy.git
Browse Source
A Debug.Assert raised on a background decompile thread runs through TraceInternal.Fail, which holds the global trace lock while invoking the listener; the listener blocks on the UI thread to show the assertion dialog. Meanwhile the UI thread, mid-navigation, runs a layout pass whose virtualizing panel raises a binding error that Avalonia logs via Trace.WriteLine -- which blocks acquiring that same global trace lock. The two threads deadlock and the app freezes with no dialog. Mark the listener thread-safe and disable the global trace lock so TraceInternal dispatches to it without serializing, removing the contended lock between the asserting thread and the UI thread. Assisted-by: Claude:claude-fable-5:Claude Codepull/3776/head
1 changed files with 13 additions and 0 deletions
Loading…
Reference in new issue