Malloc работает только с Valgrind. Как отлаживать? - PullRequest
0 голосов
/ 02 июля 2018

, чтобы поместить вас в некоторый контекст здесь, проект i test с valgrind является слегка измененной версией distcc . Сбой функции не был изменен. Точное место в коде, которое является проблематичным, - это функция dcc_compress_file_lzo1x в compress.c. Это выглядит так:

int dcc_compress_file_lzo1x(int in_fd,
                        size_t in_len,
                        char **out_buf,
                        size_t *out_len)
{
char *in_buf = NULL;
int ret;

if ((in_buf = malloc(in_len)) == NULL) {
    rs_log_error("allocation of %ld byte buffer failed",
                 (long) in_len);
    ret = EXIT_OUT_OF_MEMORY;
    goto out;
}

Проблема здесь в том, что malloc в операторе if. Если я обычно запускаю эту программу, она случайно выходит из строя (я завернул все это в отладочные отпечатки), и я имею в виду, что программа вылетает при выполнении malloc, не производя ошибку печати. С другой стороны, если я запускаю программу с помощью valgrind, все проходит, и valgrind не производит ничего полезного.

Я не ищу простого ответа. Я просто хотел бы знать, как отладить это, потому что у меня нет идей.

...