来自valgrind mc_main.c的断言

时间:2018-04-06 23:04:15

标签: valgrind

我的valgrind运行报告错误,如

Memcheck: mc_main.c:8292 (mc_pre_clo_init): Assertion 'MAX_PRIMARY_ADDRESS == 0x1FFFFFFFFFULL' failed.

这是什么意思?这是一个valgrind内部错误还是来自我的程序的错误?

2 个答案:

答案 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);

所以它看起来已经发生了一些本来应该改变的事情。