Description
Back in 2018 we switched every
NTASSERT
/ASSERT
/NT_ASSERT
in these components to aFAIL_FAST
, unequivocally, because if we cared enough to check it, we should care enough to die for it.
I think that’s good and valuable, and it has its place.Now that these components are shared with Terminal (who seeks to host multiple copies of each of them in parallel), and now that a11y has taken a bigger bet on them performing sanely and safely,
I’m wondering if we should scale back a little bit on the take down the entire process if something lifts off into space stance.We’re seeing a good number of crashes due to accessibility that I think should just be “oh, the API returned an error code, NVDA can recover”. We once saw reports that resizing the window when an unexpected DBCS half lands in the buffer (#4907) caused a crash.
They’re programming errors, for sure, but our users probably want things to be more reliable.
Should, or could, we surface those as exceptions and let the caller recover wherever possible?
Should we just internally recover?
Let's find out.
Generated as of 2022-10-27 ab04067
How did I generate this?
rg -n FAIL_FAST_IF\`( --no-heading | % {
$p=$_ -split ":";
$pa=$p[0] -replace "\\","/";
$ln=$p[1];
[pscustomobject]@{File=$pa;Line=$ln}
} | group File | sort -Descending Count | % {
"## $($_.Name)`n";
$_.Group | % {
"https://github.com/microsoft/terminal/blob/$(git rev-parse HEAD)/src/$($_.File)#L$($_.Line)"
};
"`n"
}
host/screenInfo.cpp
terminal/src/host/screenInfo.cpp
Line 193 in ab04067
terminal/src/host/screenInfo.cpp
Lines 382 to 383 in ab04067
terminal/src/host/screenInfo.cpp
Lines 402 to 403 in ab04067
terminal/src/host/screenInfo.cpp
Lines 421 to 422 in ab04067
terminal/src/host/screenInfo.cpp
Lines 453 to 454 in ab04067
terminal/src/host/screenInfo.cpp
Lines 472 to 473 in ab04067
terminal/src/host/screenInfo.cpp
Line 600 in ab04067
terminal/src/host/screenInfo.cpp
Lines 905 to 907 in ab04067
terminal/src/host/screenInfo.cpp
Line 1161 in ab04067
host/cmdline.cpp
Line 284 in ab04067
Line 448 in ab04067
Line 483 in ab04067
Line 519 in ab04067
Line 651 in ab04067
Line 665 in ab04067
Line 677 in ab04067
Line 685 in ab04067
Line 766 in ab04067
Line 1000 in ab04067
host/_stream.cpp
Line 252 in ab04067
Line 429 in ab04067
Line 608 in ab04067
Line 664 in ab04067
Lines 974 to 979 in ab04067
Line 1187 in ab04067
host/inputBuffer.cpp
terminal/src/host/inputBuffer.cpp
Line 376 in ab04067
terminal/src/host/inputBuffer.cpp
Lines 513 to 518 in ab04067
terminal/src/host/inputBuffer.cpp
Lines 717 to 718 in ab04067
terminal/src/host/inputBuffer.cpp
Line 784 in ab04067
terminal/src/host/inputBuffer.cpp
Line 785 in ab04067
propsheet/fontdlg.cpp
terminal/src/propsheet/fontdlg.cpp
Line 704 in ab04067
terminal/src/propsheet/fontdlg.cpp
Line 891 in ab04067
terminal/src/propsheet/fontdlg.cpp
Line 1143 in ab04067
terminal/src/propsheet/fontdlg.cpp
Line 1355 in ab04067
terminal/src/propsheet/fontdlg.cpp
Line 1498 in ab04067
terminal/src/propsheet/fontdlg.cpp
Line 1590 in ab04067
host/utils.cpp
Lines 176 to 179 in ab04067
Lines 231 to 232 in ab04067
interactivity/win32/icon.cpp
terminal/src/interactivity/win32/icon.cpp
Lines 238 to 241 in ab04067
terminal/src/interactivity/win32/icon.cpp
Line 265 in ab04067
terminal/src/interactivity/win32/icon.cpp
Line 288 in ab04067
terminal/src/interactivity/win32/icon.cpp
Line 320 in ab04067
host/readDataCooked.cpp
terminal/src/host/readDataCooked.cpp
Line 323 in ab04067
terminal/src/host/readDataCooked.cpp
Lines 330 to 333 in ab04067
terminal/src/host/readDataCooked.cpp
Line 1079 in ab04067
host/settings.cpp
terminal/src/host/settings.cpp
Lines 355 to 358 in ab04067
host/history.cpp
Line 41 in ab04067
Line 66 in ab04067
Line 92 in ab04067
Line 197 in ab04067
host/srvinit.cpp
Lines 827 to 829 in ab04067
host/misc.cpp
Line 25 in ab04067
Line 245 in ab04067
Line 272 in ab04067
interactivity/win32/window.cpp
terminal/src/interactivity/win32/window.cpp
Line 129 in ab04067
terminal/src/interactivity/win32/window.cpp
Line 531 in ab04067
terminal/src/interactivity/win32/window.cpp
Line 638 in ab04067
host/readDataDirect.cpp
terminal/src/host/readDataDirect.cpp
Line 74 in ab04067
terminal/src/host/readDataDirect.cpp
Line 77 in ab04067
terminal/src/host/readDataDirect.cpp
Line 181 in ab04067
server/ProcessList.cpp
terminal/src/server/ProcessList.cpp
Line 36 in ab04067
terminal/src/server/ProcessList.cpp
Line 88 in ab04067
terminal/src/server/ProcessList.cpp
Line 91 in ab04067
host/selectionInput.cpp
terminal/src/host/selectionInput.cpp
Line 25 in ab04067
terminal/src/host/selectionInput.cpp
Line 271 in ab04067
terminal/src/host/selectionInput.cpp
Line 336 in ab04067
tsf/TfEditSession.cpp
terminal/src/tsf/TfEditSession.cpp
Line 70 in ab04067
terminal/src/tsf/TfEditSession.cpp
Line 693 in ab04067
terminal/src/tsf/TfEditSession.cpp
Line 1030 in ab04067
server/ObjectHandle.cpp
terminal/src/server/ObjectHandle.cpp
Line 228 in ab04067
terminal/src/server/ObjectHandle.cpp
Line 242 in ab04067
terminal/src/server/ObjectHandle.cpp
Line 267 in ab04067
host/CommandListPopup.cpp
terminal/src/host/CommandListPopup.cpp
Line 58 in ab04067
terminal/src/host/CommandListPopup.cpp
Line 244 in ab04067
interactivity/win32/windowio.cpp
terminal/src/interactivity/win32/windowio.cpp
Line 992 in ab04067
host/conimeinfo.cpp
terminal/src/host/conimeinfo.cpp
Line 338 in ab04067
terminal/src/host/conimeinfo.cpp
Line 418 in ab04067
host/input.cpp
Line 199 in ab04067
Line 276 in ab04067
host/consoleInformation.cpp
terminal/src/host/consoleInformation.cpp
Line 72 in ab04067
terminal/src/host/consoleInformation.cpp
Line 84 in ab04067
host/readDataRaw.cpp
terminal/src/host/readDataRaw.cpp
Lines 77 to 79 in ab04067
tsf/TfDispAttr.cpp
terminal/src/tsf/TfDispAttr.cpp
Line 102 in ab04067
terminal/src/tsf/TfDispAttr.cpp
Line 115 in ab04067
host/inputReadHandleData.cpp
terminal/src/host/inputReadHandleData.cpp
Line 64 in ab04067
host/directio.cpp
terminal/src/host/directio.cpp
Line 196 in ab04067
terminal/src/host/directio.cpp
Line 239 in ab04067
host/ConsoleArguments.cpp
terminal/src/host/ConsoleArguments.cpp
Line 351 in ab04067
terminal/src/host/ConsoleArguments.cpp
Line 552 in ab04067
propsheet/registry.cpp
terminal/src/propsheet/registry.cpp
Line 309 in ab04067
terminal/src/propsheet/registry.cpp
Line 781 in ab04067
server/WaitBlock.cpp
terminal/src/server/WaitBlock.cpp
Line 243 in ab04067
host/writeData.cpp
terminal/src/host/writeData.cpp
Line 122 in ab04067
propsheet/misc.cpp
terminal/src/propsheet/misc.cpp
Line 470 in ab04067
interactivity/base/ServiceLocator.cpp
host/stream.cpp
Line 76 in ab04067
host/dbcs.cpp
Line 95 in ab04067
server/IoSorter.cpp
terminal/src/server/IoSorter.cpp
Line 91 in ab04067
types/sgrStack.cpp
terminal/src/types/sgrStack.cpp
Line 95 in ab04067
Activity