IronPdf.LinuxARM: Nie można przydzielić pamięci w statycznym bloku TLS

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

Podczas korzystania z wersji LinuxARM IronPDF pojawia się komunikat o wyjątku przy próbie dynamicznego załadowania libcef.so na Linux ARM. I pojawia się następujący komunikat o wyjątku.

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]

Problem

Podczas dynamicznego ładowania libcef.so na Linux ARM, można napotkać błąd mówiący: "nie można przydzielić pamięci w statycznym bloku TLS." Ten błąd jest znanym problemem związanym z Chromium Embedded Framework (CEF). Wynika to z faktu, że nowsze wersje CEF wymagają więcej miejsca na przechowywanie lokalne w wątku (TLS) niż to, co dynamiczny linker Linux przydziela domyślnie. Ten problem jest dobrze udokumentowany i dotyczy zarówno procesorów Linux ARM, jak i systemów Linux ARM x64, które doświadczają braku wystarczającej ilości miejsca na przechowywanie lokalne w wątku (TLS) dla nowszej wersji CEF. Więcej informacji oraz dyskusję na temat tego problemu można znaleźć tutaj.

Rozwiązanie

Rozwiązaniem tego wyjątku jest ręczne ustawienie go przed uruchomieniem aplikacji, jak pokazano poniżej.

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

Ustawiając ręcznie LD_PRELOAD przed procesem C#, zmuszamy linkera do załadowania najpierw libcef.so, przed innymi bibliotekami, zapewniając wystarczające przydzielenie pamięci TLS. To podejście okazało się wysoce skuteczne, rozwiązując problem i zapobiegając występowaniu błędów TLS allocation. Można mieć pewność, że to rozwiązanie działa.

Metoda LD_PRELOAD jest najbardziej efektywnym i prostym podejściem rekomendowanym przez innych użytkowników, w tym fora CEF.

Jest to obecnie obejście, dopóki CEF ostatecznie nie rozwiąże problemu dla ARM, tak jak to zrobili dla kompilacji x64, zmniejszając zużycie TLS w libxml2. Jednak nie ma określonego terminu, kiedy CEF zajmie się tym problemem.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 18,135,201 | Wersja: 2026.4 just released
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package IronPdf
Uruchom przykład i zobacz, jak Twój kod HTML zamienia się w plik PDF.