vulkan: hide internal symbols to prevent duplicate-dlopen state destruction (#29139)

Since #28732 our internal symbols are exported. A duplicate copy dlopened and
dlclosed by ggml_backend_load_all() then interposes them, so its destructors
destroy the live vk_instance and later device queries hit the GGML_ASSERT on
vk_instance.device_indices. Hidden visibility exports only GGML_BACKEND_API,
as before #28732.

Fixes #29138

Assisted-by: henk:claude-fable-5
This commit is contained in:
Erik Winter
2026-09-23 08:13:01 +03:00
committed by GitHub
parent 441df11f65
commit 08b1d2aea5
+5
View File
@@ -69,6 +69,11 @@ if (Vulkan_FOUND)
ggml-vulkan-debug.cpp
)
# hide symbols, so dlclosed duplicate copies cannot interpose them
set_target_properties(ggml-vulkan PROPERTIES
CXX_VISIBILITY_PRESET hidden
VISIBILITY_INLINES_HIDDEN ON)
set(VULKAN_SHADER_GEN_CMAKE_ARGS "")
# Test all shader extensions