Skip to content

Commit

Permalink
Merge pull request #2060 from martygrant/martin/supressSystemErrorsOn…
Browse files Browse the repository at this point in the history
…Windows

[Loader] Suppress system errors when loading adapters on Windows
  • Loading branch information
omarahmed1111 committed Sep 16, 2024
1 parent 2dfc006 commit b21ba58
Showing 1 changed file with 25 additions and 0 deletions.
25 changes: 25 additions & 0 deletions source/loader/ur_loader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,27 @@ context_t *getContext() { return context_t::get_direct(); }

///////////////////////////////////////////////////////////////////////////////
ur_result_t context_t::init() {
#ifdef _WIN32
// Suppress system errors.
// Tells the system to not display the critical-error-handler message box.
// Instead, the system sends the error to the calling process.
// This is crucial for graceful handling of adapters that couldn't be
// loaded, e.g. due to missing native run-times.
// TODO: add reporting in case of an error.
// NOTE: we restore the old mode to not affect user app behavior.
// See https://github.com/intel/llvm/blob/sycl/sycl/ur_win_proxy_loader/ur_win_proxy_loader.cpp (preloadLibraries())
UINT SavedMode = SetErrorMode(SEM_FAILCRITICALERRORS);
#endif

#ifdef UR_STATIC_ADAPTER_LEVEL_ZERO
// If the adapters were force loaded, it means the user wants to use
// a specific adapter library. Don't load any static adapters.
if (!adapter_registry.adaptersForceLoaded()) {
auto &level_zero = platforms.emplace_back(nullptr);
ur::level_zero::urAdapterGetDdiTables(&level_zero.dditable.ur);
}
#endif

for (const auto &adapterPaths : adapter_registry) {
for (const auto &path : adapterPaths) {
auto handle = LibLoader::loadAdapterLibrary(path.string().c_str());
Expand All @@ -24,6 +45,10 @@ ur_result_t context_t::init() {
}
}
}
#ifdef _WIN32
// Restore system error handling.
(void)SetErrorMode(SavedMode);
#endif

forceIntercept = getenv_tobool("UR_ENABLE_LOADER_INTERCEPT");

Expand Down

0 comments on commit b21ba58

Please sign in to comment.