Callgrind报告了malloc中的断言违规,尽管memcheck和通常的运行没有显示错误:
stp:malloc.c:3096:sYSMALLOc:断言`(old_top ==(((mbinptr)(((char *)&amp;((av) - &gt; bins [((1) - 1)* 2 ])) - __builtin_offsetof(struct malloc_chunk,fd))))&amp;&amp; old_size == 0)|| ((unsigned long)(old_size)&gt; =(unsigned long)(((__ builtin_offsetof(struct malloc_chunk,fd_nextsize))+((2 *(sizeof(size_t))) - 1))&amp;〜((2 * (sizeof(size_t))) - 1)))&amp;&amp;((old_top) - &gt; size&amp; 0x1)&amp;&amp;((unsigned long)old_end&amp; pagemask)== 0)'失败。< / p>
运行命令是:
taskset -c 7 valgrind --main-stacksize = 256768768 --tool = callgrind no-asserts-no-cbitp / stp~ / profiling -stp / python-samples-without-const-arr / * .smt
该程序使用-O2 -g选项构建。在运行valgrind之前,调用“ulimit -s unlimited”。
是否可以获得Callgrind报告的错误的堆栈跟踪?如果不是 - 想法如何调试?
谢谢!
答案 0 :(得分:0)
由于这是断言失败,您的程序应该崩溃核心转储。如果不是,请启用核心转储保存(ulimit -c unlimited)并在gdb中打开核心转储。