CoreCLR Error in threads.cpp:7954
Aug 29, 25В чем суть
На одном из рабочих ноутбуков (ОС Windows 10) при запуске приложения, написанного на NET Framework, выпадала ошибка ошибка вида ‘KernelBase.dll’ и не понятно в чем причина.
Начал раскручивать эту темку и выяснил следующее. Приложение написано на версии .NET Core 6.0 (.NET Runtime 6). Чтобы понять, на чем падает - пришлось поставить стандартный WinDbg. А уже через него я выяснил следующую ошибку:
File: D:\a\_work\1\s\src\coreclr\vm\threads.cpp:7954 Image:
А что делать?
Гугление похожих ошибок (например, issues в runtime dotnet) привело к корню проблем и имя ему - Control-Flow Enforcement Technology aka CET производства Intel. Свежие версии .NET Core включают его по умолчанию сразу. А из-за того, что ОС не все обновляют до последних версий с этим возникают проблемы.
Из [документации] (https://learn.microsoft.com/ru-ru/dotnet/core/compatibility/interop/9.0/cet-support) становится понятно, что добавив <CETCompat>false</CETCompat>
в файл проекта приложения (например, CSPROJ-файл ) можно отключить эту функцию.
Но мы приложение не разрабатывали, поэтому пришлось идти дальше.
И решение нашлось. Через стандартное приложение “Безопасность Windows” необходимо добавить исключение и поотключать галочки в “Параметры защиты от эксплойтов”. И о чудо - приложение запустилось!
Ссылка со всеми подробностями по шагам от Microsoft - https://learn.microsoft.com/ru-ru/defender-endpoint/enable-exploit-protection#windows-security-app.