使用GCC编译带ThreadSanitizer的程序出现意外内存映射错误求助
ThreadSanitizer 触发"unexpected memory mapping"错误
已查阅两个相关问题:
- 针对Clang的"FATAL: ThreadSanitizer: unexpected memory mapping when running on Linux Kernels 6.6+"问题
- 另一篇提到需避免使用
-pie -fPIC参数的"Thread sanitizer complaining of unexpected memory map"问题(本人未使用该参数)
最小可复现示例(MRE)
#include <iostream> int main() { std::cout << "Hello, world!\n"; }
编译命令
g++ -g -o hw hw.cpp -fsanitize=thread -pthread
运行错误输出
./hw FATAL: ThreadSanitizer: unexpected memory mapping 0x80000004b000-0x80000004f000
环境与测试情况
- 系统环境:Rocky 8.9 x86_64
- ASLR相关:
/proc/sys/kernel/randomize_va_space值为0,无root权限查看或修改vm.mmap_rnd_bits、vm.mmap_rnd_compat_bits - 编译器测试:
- clang++ 18.1.7编译运行正常
- GCC 8.5、5.3等多个版本编译均触发相同错误
- 跨机器测试:另一台机器运行正常,但无权限查看配置,已向IT部门提交支持工单
- 编辑补充:两台机器的
vm.mmap_rnd_bits均为28
内容的提问来源于stack exchange,提问作者Paul Floyd
相关产品推荐
相关产品推荐

