ripgrep falla con SIGSEGV en binarios para musl al recorrer árboles muy grandes

Fuentes: x86_64-unknown-linux-musl binaries occasionally segfault during very-large searches

Un fallo detectado en la versión 15.2.0 de ripgrep, la herramienta de búsqueda en línea de comandos escrita en Rust, provoca un cierre abrupto (SIGSEGV) cuando se ejecuta en binarios compilados para el objetivo x86_64-unknown-linux-musl durante recorridos recursivos sobre árboles de directorios de gran tamaño y con alta concurrencia. El error fue abierto como incidencia #3494 en el repositorio de GitHub de BurntSushi y se reproduce de forma determinista en OpenSUSE Tumbleweed con un sistema de 24 núcleos.

Según el informe, la caída se origina dentro del asignador mallocng de musl libc: una aserción de integridad sobre los metadatos del heap falla en una llamada a calloc() invocada desde opendir(), que ripgrep utiliza a través de std::fs::read_dir para enumerar el contenido de cada directorio. El árbol de prueba, generado con un script en Python, contiene aproximadamente 20 GiB repartidos en 1,8 millones de archivos; basta con lanzar ripgrep en un bucle infinito buscando una cadena inexistente para que el fallo aparezca en alrededor de un minuto.

El usuario reprodujo el error tanto con el binario precompinado distribuido en los releases oficiales de ripgrep como con una compilación propia usando cross, podman y símbolos de depuración, lo que descarta diferencias con la versión empaquetada en OpenAI Codex, donde se detectó originalmente. La traza muestra la cadena completa desde el hilo de Rust hasta __clone en musl, pasando por el walker de la crate ignore. El autor adjunta el volcado de memoria y el binario para facilitar el diagnóstico. Se espera que el binario no genere un segfault.