IronPdf.LinuxARM : Impossible d'allouer de la mémoire dans un bloc TLS statique
Lors de l'utilisation de la version LinuxARM d'IronPDF, un message d'exception s'affiche lorsque l'on tente de charger libcef.so sur Linux ARM de manière dynamique. 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 connu 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 éprouvent tous deux un manque de Thread Local Storage (TLS) pour la nouvelle version du 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
En définissant manuellement LD_PRELOAD avant le processus C#, nous forçons l'éditeur de liens à charger libcef.so en premier, avant les autres bibliothèques, garantissant ainsi une allocation de mémoire TLS suffisante. Cette approche s'est avérée très efficace, résolvant le problème et empêchant l'échec avec des erreurs TLS allocation. 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.

