我的valgrind运行报告错误,如
Memcheck: mc_main.c:8292 (mc_pre_clo_init): Assertion 'MAX_PRIMARY_ADDRESS == 0x1FFFFFFFFFULL' failed.
这是什么意思?这是一个valgrind内部错误还是来自我的程序的错误?
答案 0 :(得分:1)
这是一个valgrind内部错误。这非常奇怪,因为这失败了 断言是很早就完成的自我检查。 你应该在valgrind bugzilla上提交一个bug,报告所需的全部内容 细节(版本,平台,......)
答案 1 :(得分:0)
来自Valgrind源代码(来自git HEAD)
/* Only change this. N_PRIMARY_MAP *must* be a power of 2. */
#if VG_WORDSIZE == 4
/* cover the entire address space */
# define N_PRIMARY_BITS 16
#else
/* Just handle the first 128G fast and the rest via auxiliary
primaries. If you change this, Memcheck will assert at startup.
See the definition of UNALIGNED_OR_HIGH for extensive comments. */
# define N_PRIMARY_BITS 21
#endif
/* Do not change this. */
#define N_PRIMARY_MAP ( ((UWord)1) << N_PRIMARY_BITS)
/* Do not change this. */
#define MAX_PRIMARY_ADDRESS (Addr)((((Addr)65536) * N_PRIMARY_MAP)-1)
...
tl_assert(MAX_PRIMARY_ADDRESS == 0x1FFFFFFFFFULL);
所以它看起来已经发生了一些本来应该改变的事情。