Skip to content

Commit ae99c8f

Browse files
committed
suppress error dialogs on windows
1 parent 53d7f4f commit ae99c8f

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

ggml/src/ggml-backend-reg.cpp

+17-3
Original file line numberDiff line numberDiff line change
@@ -134,14 +134,24 @@ struct ggml_backend_registry {
134134

135135
ggml_backend_reg_t load_backend(const char * path, bool silent) {
136136
#ifdef _WIN32
137+
// suppress error dialogs for missing DLLs
138+
DWORD old_mode = SetErrorMode(SEM_FAILCRITICALERRORS);
139+
SetErrorMode(old_mode | SEM_FAILCRITICALERRORS);
140+
137141
HMODULE handle = LoadLibraryA(path);
142+
138143
if (!handle) {
139144
if (!silent) {
140145
GGML_LOG_ERROR("%s: failed to load %s: %lu\n", __func__, path, GetLastError());
141146
}
147+
SetErrorMode(old_mode);
142148
return nullptr;
143149
}
150+
144151
ggml_backend_init_t backend_init = (ggml_backend_init_t) GetProcAddress(handle, "ggml_backend_init");
152+
153+
SetErrorMode(old_mode);
154+
145155
if (!backend_init) {
146156
if (!silent) {
147157
GGML_LOG_ERROR("%s: failed to find ggml_backend_init in %s: %lu\n", __func__, path, GetLastError());
@@ -151,13 +161,16 @@ struct ggml_backend_registry {
151161
}
152162
#else
153163
void * handle = dlopen(path, RTLD_NOW | RTLD_LOCAL);
164+
154165
if (!handle) {
155166
if (!silent) {
156167
GGML_LOG_ERROR("%s: failed to load %s: %s\n", __func__, path, dlerror());
157168
}
158169
return nullptr;
159170
}
171+
160172
auto * backend_init = (ggml_backend_init_t) dlsym(handle, "ggml_backend_init");
173+
161174
if (!backend_init) {
162175
if (!silent) {
163176
GGML_LOG_ERROR("%s: failed to find ggml_backend_init in %s: %s\n", __func__, path, dlerror());
@@ -167,6 +180,7 @@ struct ggml_backend_registry {
167180
}
168181
#endif
169182
ggml_backend_reg_t reg = backend_init();
183+
170184
if (!reg || reg->api_version != GGML_BACKEND_API_VERSION) {
171185
if (!silent) {
172186
if (!reg) {
@@ -176,11 +190,11 @@ struct ggml_backend_registry {
176190
__func__, path, reg->api_version, GGML_BACKEND_API_VERSION);
177191
}
178192
}
179-
#ifdef _WIN32
193+
#ifdef _WIN32
180194
FreeLibrary(handle);
181-
#else
195+
#else
182196
dlclose(handle);
183-
#endif
197+
#endif
184198
return nullptr;
185199
}
186200

0 commit comments

Comments
 (0)