valgrind сообщает об ошибке утверждения malloc, memcheck не сообщает об ошибках - PullRequest
1 голос
/ 10 августа 2011

Callgrind сообщил о нарушении утверждения в malloc, хотя memcheck и обычный запуск не выявляют ошибок:

stp: malloc.c: 3096: sYSMALLOc: Assertion `(old_top == (((mbinptr)(((char *) & ((av) -> bins [((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) ||((unsigned long) (old_size)> = (unsigned long) ((((__buildin_offsetof (struct malloc_chunk, fd_nextsize)) + ((2 * (sizeof (size_t))) - 1)) & ~ ((2 * (sizeof(size_t))) - 1))) && ((old_top) -> size & 0x1) && ((unsigned long) old_end & pagemask) == 0) 'не удалось.

Команда запускаis:

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?Если нет - идеи как отлаживать?

Спасибо!

1 Ответ

0 голосов
/ 10 августа 2011

Поскольку это ошибка подтверждения, ваша программа должна аварийно завершить работу с дампом ядра.Если это не так, включите сохранение дампа ядра (ulimit -c unlimited) и откройте дамп ядра в gdb.

...