-
Notifications
You must be signed in to change notification settings - Fork 8.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix two race conditions around pseudo window visibility #13832
Conversation
@msftbot make sure @zadjii-msft signs off |
Hello @DHowett! Because you've given me some instructions on how to help merge this pull request, I'll be modifying my merge approach. Here's how I understand your requirements for merging this pull request:
If this doesn't seem right to you, you can tell me to cancel these instructions and use the auto-merge policy that has been configured for this repository. Try telling me "forget everything I just told you". |
I think this will primarily hit when there is (1) a lot of VT output and (2) an application calls Thoughts? |
@zadjii-msft should this be part of 1.15? |
@DHowett almost definitely |
This commit fixes two race conditions: * `SetPseudoWindowCallback` set the `_pseudoWindowMessageCallback` callback after the Win32 message thread was already spawned. This issue was fixed by instead using the `ServiceLocator` to get a hold of the global `VtIo` instance which is created statically. * `XtermEngine::SetWindowVisibility` was called without holding the console lock. This issue was fixed by simply acquiring it first. Closes MSFT:40913882 ## Validation Steps Performed * Add `IsConsoleLocked()` assertion in `VtEngine::_Write` * Run Windows Terminal * No assertion failures ✅ (cherry picked from commit 4f3afee) Service-Card-Id: 85487461 Service-Version: 1.15
🎉 Handy links: |
🎉 Handy links: |
This commit fixes two race conditions:
SetPseudoWindowCallback
set the_pseudoWindowMessageCallback
callback after the Win32 message thread was already spawned.
This issue was fixed by instead using the
ServiceLocator
to geta hold of the global
VtIo
instance which is created statically.XtermEngine::SetWindowVisibility
was called without holding theconsole lock. This issue was fixed by simply acquiring it first.
Closes MSFT:40913882
Validation Steps Performed
IsConsoleLocked()
assertion inVtEngine::_Write