Race condition during AppLogic::ReloadSettings and all reads of _settings #18176
Labels
Area-Quality
Stability, Performance, Etc.
In-PR
This issue has a related PR
Issue-Bug
It either shouldn't be doing this or needs an investigation.
Product-Terminal
The new Windows Terminal.
Severity-Crash
Crashes are real bad news.
Milestone
Windows Terminal version
All of them
Windows build number
No response
Other Software
No response
Steps to reproduce
Reduce startup cost and make Windows Terminal launch faster.
Expected Behavior
No response
Actual Behavior
Windows Terminal will randomly crash because now that it starts a lot faster (relatively speaking) the main- and window-thread(s) will call
ReloadSettings()
concurrently.Additionally, we swap out the
_settings
member on the main thread while window threads may currently be reading from it. This is problematic because after optimizations the pointer to_settings
may be cached in a register or on the stack and so we may end up reading from a settings instance that has since been deleted.Sounds like a rare occurrence, but with just the right timing (which I now have), this crashes the app 99% of the time during startup. I suspect it also happens on main, but simply less often.
The text was updated successfully, but these errors were encountered: