内部错误:无法更改当前线程的区域(4.5.0)
作者: hpcpony创建于 2024年11月17日更新于 2026年7月24日
我使用了一个使用 jemalloc 的第三方包。在一台具有大量"核心"(1568=784*2 线程)的机器上,我看到类似"jemalloc: 将 narenas 减少到限制(4094)"和"内部错误: 无法更改当前线程的 arena"的消息。在后者的情况下,它会崩溃。我已经能够追踪到 ctl.c 例程:
ctl_byname(tsd_t *tsd, const char *name, void *oldp, size_t *oldlenp, void *newp, size_t newlen)
以及以下行:ret = node->ctl(tsd, mib, depth, oldp, oldlenp, newp, newlen);这似乎返回了"14"。由于 ctl 是一个指向函数的指针,我无法弄清楚被调用的是什么,因此无法进一步追踪。我调整了 MALLOC_CONF 为 'narenas:512',但这并没有帮助。我甚至不确定它是否有任何作用,因为我仍然看到"正在减少 narenas ..."。我所能做的和尝试修复的事情有限,但我想看看这对任何人来说是否有什么响应,并有简单的解决方案(比如 MALLOC_CONF 设置 ;^)。
内容来源: jemalloc/jemalloc