IronPdf.LinuxARM:无法在静态 TLS 块中分配内存

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

使用 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 时,您可能会遇到以下错误:"无法在静态 TLS 块中分配内存"。此错误是与 Chromium 嵌入式框架 (CEF) 相关的已知问题。 此问题出现是因为较新版本的CEF所需的线程本地存储(TLS)空间超过Linux动态链接器默认分配的空间。 这个问题已被详细记录,并且影响到Linux ARM处理器和Linux ARM x64系统,这两者都无法为新版本的CEF提供足够的线程本地存储(TLS)。 您可以在这里找到关于该问题的更多信息和讨论。

解决方案

解决此异常的方法是在运行应用程序之前手动设置它,如下所示。

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

通过在 C# 进程之前手动设置 LD_PRELOAD,我们强制链接器首先加载 libcef.so,然后再加载其他库,从而确保足够的 TLS 内存分配。 事实证明,这种方法非常有效,可以解决问题,防止出现 TLS allocation 错误。 您可以确信该解决方案是有效的。

LD_PRELOAD方法是其他用户,包括CEF论坛推荐的最有效和最简便的方法。

这目前是一个权宜之计,直到CEF最终为ARM解决这个问题,就像他们通过减少libxml2中的TLS使用解决了x64版本的问题。但没有明确的时间表说明CEF何时会解决这个问题。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

准备开始了吗?
Nuget 下载 18,120,209 | 版本: 2026.4 刚刚发布
Still Scrolling Icon

还在滚动吗?

想快速获得证据? PM > Install-Package IronPdf
运行示例看着你的HTML代码变成PDF文件。