Заранее приносим свои извинения за то, что я не добавлял код, поскольку у меня нет разрешения на это.
У меня есть программа, которая дает сбой в некоторых системах через разное время в диапазоне от 2 до 10 секунд после запуска с Valgrind массивный инструмент. Выполнение того же самого с gdb или запуск приложения в неизменном виде не вызывает сбоев.
Это отлично работает - valgrind --tool=massif --pages-as-heap=yes ./<prog> <prog_args>
Это приводит к прерыванию программы с помощью SIGSEGV valgrind --tool=massif --stacks=yes ./<prog> <prog_args>
Функция в верхней части трассировки, когда программа завершается с помощью Valgrind, похожа на Итак, номер строки, указывающий на оператор условия if с флагами:
<enum_type>
tmr_fn(ctx *ctx, tmr_t *tmr, const char *fn, unsigned int ln)
{
int ret = ENUM_0
if (ctx == NULL || tmr == NULL)
return (ENUM_ERR);
if (tmr->flags & 0x1) {
tmr->flags |= 0x2;
return (0);
}
...
}
Я попытался найти ответы, но пока не нашел ничего полезного. Любая помощь или указатели были бы действительно замечательными!