FreeBSD 上 valgrind 的限制
limits of valgrind on FreeBSD
我一直在尝试使用 valgrind 查找一些可疑的内存错误。
在被分析的程序甚至到达我希望分析的点之前,它会因为对 mmap 的调用开始失败而退出。当它不在 valgrind 下时,这些调用会成功。
在 valgrind 下,文件映射/映射内存的数量是否有某种限制?
映射的文件很大(总共约 600Gb)
默认情况下,valgrind 不支持这么多内存。
在 linux 上,默认值(在源代码中硬编码)为 128 GB。
请注意,内存在提交时从 64GB 增加到 128GB
e706fbfa9fa563e81d6dc09de2bf785b2c34e84e.
此提交中的更改将指出需要的更改以进一步
增加 valgrind 支持的最大内存。
文件 coregrind/m_aspacemgr/aspacemgr-linux.c 包含注释解释
管理内存和映射的策略。
这表明可能是一个大小大于 128GB 的固定映射
如果您将其映射到(当前 linux)128 GB 限制以上,则可能会被接受。
(我还没有尝试过,所以这需要确认)。
还有其他硬编码最大值,例如段的最大数量
在 aspacemgr-linux.c.
中定义(在 linux 上)为 30000
我一直在尝试使用 valgrind 查找一些可疑的内存错误。
在被分析的程序甚至到达我希望分析的点之前,它会因为对 mmap 的调用开始失败而退出。当它不在 valgrind 下时,这些调用会成功。
在 valgrind 下,文件映射/映射内存的数量是否有某种限制?
映射的文件很大(总共约 600Gb)
默认情况下,valgrind 不支持这么多内存。 在 linux 上,默认值(在源代码中硬编码)为 128 GB。
请注意,内存在提交时从 64GB 增加到 128GB e706fbfa9fa563e81d6dc09de2bf785b2c34e84e.
此提交中的更改将指出需要的更改以进一步 增加 valgrind 支持的最大内存。
文件 coregrind/m_aspacemgr/aspacemgr-linux.c 包含注释解释 管理内存和映射的策略。 这表明可能是一个大小大于 128GB 的固定映射 如果您将其映射到(当前 linux)128 GB 限制以上,则可能会被接受。 (我还没有尝试过,所以这需要确认)。
还有其他硬编码最大值,例如段的最大数量 在 aspacemgr-linux.c.
中定义(在 linux 上)为 30000