From: Dmytro Minochkin Date: Sat, 27 Sep 2025 16:26:46 +0000 (+0300) Subject: vulkan: throw system error instead of SIGABRT during init on older devices (llama... X-Git-Tag: upstream/1.8.0~32 X-Git-Url: https://git.djapps.eu/?a=commitdiff_plain;h=88dd9e0d452432d819ad8fc9054f986327bd1eee;p=pkg%2Fggml%2Fsources%2Fwhisper.cpp vulkan: throw system error instead of SIGABRT during init on older devices (llama/16156) * Throw system error on old Vulkan driver rather than SIGABRT * Optionally handle any potential error in vulkan init --- diff --git a/ggml/src/ggml-vulkan/ggml-vulkan.cpp b/ggml/src/ggml-vulkan/ggml-vulkan.cpp index 5dd72367..325d7cad 100644 --- a/ggml/src/ggml-vulkan/ggml-vulkan.cpp +++ b/ggml/src/ggml-vulkan/ggml-vulkan.cpp @@ -4521,7 +4521,7 @@ static void ggml_vk_instance_init() { if (api_version < VK_API_VERSION_1_2) { std::cerr << "ggml_vulkan: Error: Vulkan 1.2 required." << std::endl; - GGML_ABORT("fatal error"); + throw vk::SystemError(vk::Result::eErrorFeatureNotPresent, "Vulkan 1.2 required"); } vk::ApplicationInfo app_info{ "ggml-vulkan", 1, nullptr, 0, api_version }; @@ -12909,6 +12909,12 @@ ggml_backend_reg_t ggml_backend_vk_reg() { } catch (const vk::SystemError& e) { VK_LOG_DEBUG("ggml_backend_vk_reg() -> Error: System error: " << e.what()); return nullptr; + } catch (const std::exception &e) { + VK_LOG_DEBUG("ggml_backend_vk_reg() -> Error: " << e.what()); + return nullptr; + } catch (...) { + VK_LOG_DEBUG("ggml_backend_vk_reg() -> Error: unknown exception during Vulkan init"); + return nullptr; } }