Skip to content

Commit ad04995

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

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

ggml/src/ggml-backend-reg.cpp

+14
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) {

0 commit comments

Comments
 (0)