[bvar] 在 Clang 环境下,AgentGroup 在 bthread 迁移后可能会使用过期的_s_tls_blocks 地址
作者: bobhan1创建于 2026年9月4日更新于 2026年9月4日
描述错误 我们在更新来自 bthread 的 bvar::Adder 过程中在 bvar::detail::AgentGroup<…>::get_tls_agent() 中发现了 `SIGSEGV`。捕获的内核和生成的代码表明,bthread 在同步 RPC 中暂停,从一个 pthread 迁移到另一个 pthread,然后继续使用为之前的 pthread 解析的 `_s_tls_blocks` TLS 地址。崩溃在 Linux x86_64 上使用 Clang 16 构建的下游 Apache Doris BE 进程中观察到,该报告基于源代码、内核、寄存器和反汇编分析。我们没有尝试独立重现。 ### 相关实现 `AgentGroup` 将其每个 pthread 的块向量声明为一个原始 TLS 静态成员:
内容来源: apache/brpc