IronPdf.LinuxARM:静的 TLS ブロックでメモリを割り当てられません
LinuxARMバージョンのIronPDFを使用する際に、Linux ARMでlibcef.soを動的に読み込もうとすると、例外メッセージが表示されます。 以下の例外メッセージが表示されます。
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]
問題
Linux ARMでlibcef.soを動的に読み込む際、"cannot allocate memory in static TLS block"というエラーが発生することがあります。このエラーはChromium Embedded Framework (CEF)に関連する既知の問題です。 これは、CEFの新しいバージョンが、Linux動的リンカーがデフォルトで割り当てる以上のスレッドローカルストレージ(TLS)スペースを要求するために発生します。 この問題は十分に文書化されており、Linux ARMプロセッサだけでなく、より新しいバージョンのCEFのためにスレッドローカルストレージ(TLS)が不足しているLinux ARM x64システムにも影響します。 この問題に関する詳細情報と議論はこちらで見つけることができます。
解決策
この例外の解決策は、以下に示すようにアプリケーションを実行する前に手動で設定することです。
export LD_PRELOAD=/path/to/libcef.so
C#プロセスの前にLD_PRELOADを手動で設定することで、リンカに最初にlibcef.soを読み込ませ、他のライブラリより先に読み込むようにして、TLSメモリの十分な割り当てを確保します。 このアプローチは非常に効果的であることが立証されており、問題を解決し、TLS allocationエラーの発生を防ぎます。 この解決策が機能することに自信を持ってください。
LD_PRELOADメソッドは、CEFフォーラムを含む他のユーザーによって推奨される最も効果的で簡単なアプローチです。
これは、x64ビルドでlibxml2のTLS使用量を削減して解決したように、最終的にCEFがARMの問題を解決するまでの間の回避策です。しかし、CEFがこれに対処する時期は定義されていません。

Curtis Chau holds a Bachelor’s degree in Computer Science (Carleton University) and specializes in front-end development with expertise in Node.js, TypeScript, JavaScript, and React. Passionate about crafting intuitive and aesthetically pleasing user interfaces, Curtis enjoys working with modern frameworks and creating well-structured, visually appealing manuals.