From 2032df4085ad8b51070251e6292fcf057c12b38e Mon Sep 17 00:00:00 2001 From: sergio Date: Mon, 22 Jun 2026 16:01:37 -0400 Subject: [PATCH] =?UTF-8?q?Etapa=20G:=20MITIGA=20scudo=20(alias=20libscudo?= =?UTF-8?q?=E2=86=92musl)=20=E2=86=92=20destraba=20trippy/jnv/presenterm?= =?UTF-8?q?=20(119=E2=86=92122)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit El edge rust depende de scudo-malloc y los shims rustc/cargo lo linkean como primer NEEDED ⇒ scudo interpone malloc en todo el proceso y CRASHEA a rustc en ciertos proc-macros (corrupted chunk header / SIGSEGV). No se puede apk-del (rust depende). Mitigación: aliasar /usr/lib/libscudo.so → la libc musl ⇒ el NEEDED resuelve pero malloc cae a musl, sin scudo. Los shims no usan símbolos scudo-específicos (sólo querían el override), seguro y reversible (.orig-scudo). bootstrap-devfs.sh lo reproduce (paso 3a-bis). Destrabados+promovidos: trippy (trip 0.13.0), jnv (0.7.1), presenterm (0.16.1) — antes crasheaban rustc, ahora construyen+corren static-musl. Co-Authored-By: Claude Opus 4.8 --- recipes/{incoming => }/jnv.toml | 0 recipes/{incoming => }/presenterm.toml | 0 recipes/{incoming => }/trippy.toml | 0 scripts/bootstrap-devfs.sh | 17 +++++++++++++++++ 4 files changed, 17 insertions(+) rename recipes/{incoming => }/jnv.toml (100%) rename recipes/{incoming => }/presenterm.toml (100%) rename recipes/{incoming => }/trippy.toml (100%) diff --git a/recipes/incoming/jnv.toml b/recipes/jnv.toml similarity index 100% rename from recipes/incoming/jnv.toml rename to recipes/jnv.toml diff --git a/recipes/incoming/presenterm.toml b/recipes/presenterm.toml similarity index 100% rename from recipes/incoming/presenterm.toml rename to recipes/presenterm.toml diff --git a/recipes/incoming/trippy.toml b/recipes/trippy.toml similarity index 100% rename from recipes/incoming/trippy.toml rename to recipes/trippy.toml diff --git a/scripts/bootstrap-devfs.sh b/scripts/bootstrap-devfs.sh index 1bcfd406..684d724b 100755 --- a/scripts/bootstrap-devfs.sh +++ b/scripts/bootstrap-devfs.sh @@ -176,6 +176,23 @@ else ok "build tools presentes en el rootfs ($NEEDED)" fi +# --- 3a-bis. Neutralizar scudo-malloc (frente edge rust) ---------------------- +# edge empaqueta rust/cargo con `scudo-malloc` como DEPENDENCIA DURA: los shims rustc/cargo lo +# linkean como PRIMER NEEDED ⇒ el allocator endurecido scudo interpone malloc en todo el proceso +# (incluido librustc_driver). scudo CRASHEA a rustc en ciertos proc-macros (corrupted-chunk-header / +# SIGSEGV: lo cazaron jnv/presenterm/trippy) — choque entre scudo y la carga/descarga de dylibs de +# proc-macro. No se puede `apk del scudo-malloc` (rust/cargo dependen). Mitigación: aliasar +# libscudo.so → la libc musl ⇒ el NEEDED resuelve pero malloc cae a musl (sin scudo). Los shims no +# referencian símbolos scudo-específicos (sólo querían el override de malloc), así que es seguro. +# Reversible: el backup .orig-scudo. Destrabó jnv/presenterm/trippy. +SCUDO="$ROOTFS/usr/lib/libscudo.so" +if [[ $SKIP_APK -eq 0 && -f "$SCUDO" && ! -L "$SCUDO" ]]; then + log "scudo: neutralizando (alias libscudo.so → musl libc; evita el crash de rustc en proc-macros)" + cp -a "$SCUDO" "$SCUDO.orig-scudo" + ln -sf /lib/libc.musl-x86_64.so.1 "$SCUDO" + ok "scudo neutralizado" +fi + # --- 3b. musl del toolchain con PTHREAD_KEYS_MAX=256 (frente rust variante b) -- # El rustc booteado por mrustc (frente rust) agota los pthread keys de musl al correr: # `fatal runtime error: out of TLS keys, aborting` (musl default PTHREAD_KEYS_MAX=128; es el