IronPDF.LinuxARM: Cannot allocate memory in static TLS block

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

Lors de l'utilisation de la version LinuxARM d'IronPDF, un message d'exception apparaît lorsque vous tentez de charger libcef.so sur Linux ARM dynamiquement. Et le message d'exception suivant apparaîtrait.

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]

Problème

Lors du chargement dynamique de libcef.so sur Linux ARM, vous pouvez rencontrer une erreur indiquant : "impossible d'allouer de la mémoire dans le bloc TLS statique." Cette erreur est un problème reconnu associé au Chromium Embedded Framework (CEF). Cela se produit parce que les versions plus récentes de CEF nécessitent plus d'espace de stockage local de thread (TLS) que ce que le chargeur dynamique Linux alloue par défaut. Ce problème est bien documenté et affecte à la fois les processeurs Linux ARM et les systèmes Linux ARM x64, qui ne disposent pas suffisamment de stockage local de thread (TLS) pour la nouvelle version de CEF. Vous pouvez trouver plus d'informations et la discussion sur ce problème ici.

Solution

La solution à cette exception est de la définir manuellement avant d'exécuter votre application, comme indiqué ci-dessous.

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

En définissant manuellement LD_PRELOAD avant le processus C#, nous forçons le chargeur à charger libcef.so en premier, avant d'autres bibliothèques, garantissant ainsi une allocation suffisante de mémoire TLS. Cette approche s'est avérée très efficace, résolvant le problème et empêchant qu'il échoue avec des erreurs d'allocation TLS. Vous pouvez être sûr que cette solution fonctionne.

La méthode LD_PRELOAD est l'approche la plus efficace et la plus simple recommandée par d'autres utilisateurs, y compris les Forums CEF.

C'est actuellement une solution de contournement jusqu'à ce que CEF résolve finalement le problème pour ARM, comme ils l'ont fait pour les versions x64 en réduisant l'utilisation de TLS dans libxml2. Cependant, il n'y a pas de calendrier défini pour quand CEF traitera cela.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite
Prêt à commencer?
Nuget Téléchargements 16,133,208 | Version : 2025.11 vient de sortir