IronPdf.LinuxARM: No se puede asignar memoria en el bloque estático TLS

This article was translated from English: Does it need improvement?
Translated
View the article in English

Al utilizar la versión LinuxARM de IronPDF, aparece un mensaje de excepción al intentar cargar libcef.so en Linux ARM de forma dinámica. Y aparecería el siguiente mensaje de excepción.

IronSoftware.Exceptions.IronSoftwareDeploymentException: Error while deploying IronPdf Chrome renderer: '/irontest/testIronPdfOnLinuxArm/bin/Debug/net8.0/runtimes/linux-arm64/native/libcef.so: cannot allocate memory in static TLS block'. To learn more about making an engineering support request please visit: . To learn how to solve this issue please read https://ironpdf.com/troubleshooting/error-while-deploying-chrome-dependencies/ [Issue Code IRONPDF-CHROME-DEPLOYMENT-ERROR-LINUX]

Problema

Al cargar dinámicamente libcef.so en Linux ARM, puede aparecer el error "No se puede asignar memoria en el bloque TLS estático". Este error es un problema reconocido de Chromium Embedded Framework (CEF). Se produce porque las versiones más recientes de CEF requieren más espacio de Almacenamiento Local de Hilos (TLS) del que el enlazador dinámico de Linux asigna por defecto. Este problema está bien documentado y afecta tanto a procesadores Linux ARM como a sistemas Linux ARM x64, que experimentan no tener suficiente Almacenamiento Local de Hilos (TLS) para la versión más reciente de CEF. Puedes encontrar más información y la discusión sobre este problema aquí.

Solución

La solución para esta excepción es configurarla manualmente antes de ejecutar tu aplicación, como se muestra a continuación.

export LD_PRELOAD=/path/to/libcef.so
export LD_PRELOAD=/path/to/libcef.so
SHELL

Al configurar LD_PRELOAD manualmente antes del proceso C#, forzamos al enlazador a cargar libcef.so primero, antes que otras bibliotecas, lo que garantiza una asignación de memoria TLS suficiente. Se ha demostrado que este enfoque es muy eficaz, resuelve el problema y evita que falle con errores TLS allocation. Puedes estar seguro de que esta solución funciona.

El método LD_PRELOAD es el enfoque más efectivo y simple recomendado por otros usuarios, incluidos los foros de CEF.

Actualmente, esta es una solución provisional hasta que CEF finalmente resuelva el problema para ARM, como lo hizo para las versiones x64 al reducir el uso de TLS en libxml2. Sin embargo, no hay un plazo definido para cuando CEF abordará esto.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más
¿Listo para empezar?
Nuget Descargas 18,135,201 | Versión: 2026.4 recién lanzado
Still Scrolling Icon

¿Aún desplazándote?

¿Quieres una prueba rápida? PM > Install-Package IronPdf
ejecutar una muestra Mira cómo tu HTML se convierte en PDF.