pio*_*otr 9 memory 64-bit valgrind memory-leaks
我试图在一个使用超过32 Gb的ram并且达到这个valgrind限制的进程上对一个heisenbug进行valgrind,这是一个任意的,可以通过重新编译valgrind来避免它还是一个很难的?
mar*_*k4o 12
限制是任意的,可以通过重新编译valgrind来更改.
Valgrind使用2级稀疏阵列跟踪内存.16位地址用于索引65536条目表,该表包含指向第二级映射的指针,该映射跟踪地址空间的范围(对于32位进程通常为2 15字节= 64KB,对于32位进程为2 15字节= 512 KB 64位进程).因此,这个2级稀疏阵列可以跟踪的内存总量是65536×这个块大小.通过修改代码,这些组块的大小可以增加到2的更大功率,代价是使用更多内存来跟踪大多数部分组块.
在valgrind-users邮件列表的这条消息中,Julian Seward解释了如何将限制从32GB增加到128GB:
在
memcheck/mc_main.c变化N_PRIMARY_BITS,从19以21相应地更改断言
memcheck/mc_main.c:
MAX_PRIMARY_ADDRESS→4*(现有值+ 1) - 1- 对于
MASK(1/2/4/8)断言,将前1位块中最右边的两个"1"位设置为零,例如MASK(8)→0xFFFFFFE000000007ULL我认为在
coregrind/m_aspacemgr/aspacemgr-linux.c变化aspacem_maxAddr,从(Addr)0x800000000 - 1到(Addr)0x2000000000ULL - 1.
更新: Valgrind可以使用的最大内存量在最近的版本中有所增加:
| 归档时间: |
|
| 查看次数: |
1857 次 |
| 最近记录: |