IronPdf.LinuxARM: Não é possível alocar memória no bloco TLS estático

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

Ao usar a versão LinuxARM do IronPDF, uma mensagem de exceção aparece ao tentar carregar libcef.so no Linux ARM dinamicamente. E a seguinte mensagem de exceção seria exibida.

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

Ao carregar dinamicamente libcef.so no Linux ARM, você pode encontrar um erro que diz: "não é possível alocar memória no bloco TLS estático." Este erro é um problema reconhecido associado ao Chromium Embedded Framework (CEF). Isso ocorre porque as versões mais recentes do CEF exigem mais espaço de armazenamento local de threads (TLS) do que o vinculador dinâmico do Linux aloca por padrão. Este problema está bem documentado e afeta tanto processadores Linux ARM quanto sistemas Linux ARM x64, que não possuem armazenamento local de threads (TLS) suficiente para a versão mais recente do CEF. Você pode encontrar mais informações e a discussão sobre este assunto aqui .

Solução

A solução para essa exceção é configurá-la manualmente antes de executar o aplicativo, conforme mostrado abaixo.

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

Ao definir LD_PRELOAD manualmente antes do processo C#, forçamos o linker a carregar libcef.so primeiro, antes de outras bibliotecas, garantindo alocação de memória TLS suficiente. Esta abordagem tem se mostrado altamente eficaz, resolvendo o problema e impedindo que falhe com erros TLS allocation. Você pode ter certeza de que essa solução funciona.

O método LD_PRELOAD é a abordagem mais eficaz e simples recomendada por outros usuários, incluindo os Fóruns CEF .

Esta é, por enquanto, uma solução alternativa até que a CEF resolva o problema para ARM, como fez para as versões x64 ao reduzir o uso de TLS na libxml2. No entanto, não há um prazo definido para quando a CEF resolverá isso.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais
Pronto para começar?
Nuget Downloads 18,318,263 | Versão: 2026.4 acaba de ser lançado
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package IronPdf
executar um exemplo Veja seu HTML se transformar em um PDF.