diff --git a/recipes/mesa.toml b/recipes/mesa.toml index 621deeaa..c4e0eccc 100644 --- a/recipes/mesa.toml +++ b/recipes/mesa.toml @@ -24,6 +24,22 @@ # El target DRI emite el version-script como token separado (`-Wl,--version-script dri.sym`), que # zig cc REORDENA (separa el archivo posicional de los args -Wl) ⇒ «cannot find version script # --end-group» al ligar libgallium_dri.so. Lo arregla mesa-version-script-comma.patch (forma coma). +# +# ⚠️ `--build-id` NO ES COSMÉTICO EN IRIS: ES LA DIFERENCIA ENTRE ARRANCAR Y NO ARRANCAR. +# Medido en metal (OptiPlex 3060, UHD 630, 2026-08-06): cosmic-comp moría en silencio, sin panic y +# con RUST_BACKTRACE=full, y el dmesg decía +# cosmic-comp[1266]: segfault at 10 ip ... error 4 in iris_dri.so[9626c0,...] +# El offset resuelve a `_mesa_sha1_format`, y su llamador es literalmente esto, sin un solo salto +# condicional entre medio: +# call build_id_find_nhdr_for_addr → NULL (nuestras .so no traían ninguna nota) +# call build_id_data → NULL + offsetof(build_id) = 0x10 +# call _mesa_sha1_format → lee la dirección 0x10 ⇒ SIGSEGV +# `iris_disk_cache_init` protegía eso con `assert(note && ...)`, que -Db_ndebug=true BORRA. O sea: +# meson no pide build-id, lld no lo pone por su cuenta (37 de 40 .so del corpus SÍ lo traen — esto +# era exclusivo de mesa), y el assert que lo habría cazado no existe en release. Tres decisiones +# razonables por separado que juntas dan un cuelgue mudo del escritorio. +# NO se arregla con MESA_SHADER_CACHE_DISABLE: la desreferencia pasa ANTES de consultar si la caché +# está habilitada. Tampoco se ve en QEMU, donde el userland es swrast/llvmpipe y esta ruta es de iris. name = "mesa" version = "24.0.9" @@ -41,7 +57,7 @@ link = "dynamic" zig_version = "0.13.0" [build.phases] -configure = "PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release -Db_ndebug=true -Dgallium-drivers=iris -Dvulkan-drivers= -Dllvm=disabled -Dintel-clc=disabled -Dplatforms=wayland -Dglx=disabled -Dgbm=enabled -Degl=enabled -Dopengl=true -Dgles1=disabled -Dgles2=enabled -Dexpat=enabled -Dzstd=enabled -Dshader-cache=enabled -Dxmlconfig=enabled -Dglvnd=false -Dgallium-rusticl=false -Dgallium-va=disabled -Dgallium-extra-hud=false -Dvideo-codecs= -Dtools= -Dbuild-tests=false -Dvalgrind=disabled -Dlibunwind=disabled" +configure = "PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release -Db_ndebug=true -Dc_link_args=-Wl,--build-id=sha1 -Dcpp_link_args=-Wl,--build-id=sha1 -Dgallium-drivers=iris -Dvulkan-drivers= -Dllvm=disabled -Dintel-clc=disabled -Dplatforms=wayland -Dglx=disabled -Dgbm=enabled -Degl=enabled -Dopengl=true -Dgles1=disabled -Dgles2=enabled -Dexpat=enabled -Dzstd=enabled -Dshader-cache=enabled -Dxmlconfig=enabled -Dglvnd=false -Dgallium-rusticl=false -Dgallium-va=disabled -Dgallium-extra-hud=false -Dvideo-codecs= -Dtools= -Dbuild-tests=false -Dvalgrind=disabled -Dlibunwind=disabled" compile = "PYTHONPATH=/usr/lib/python3.12/site-packages ninja -C output" install = "DESTDIR=/out ninja -C output install"