Как показывает ошибка, возможно, у вас есть double free () или повреждение кучи
Редактировать: Либо вы освобождаете один и тот же буфер более одного раза, либо вы записываете байты в области памяти, в которую не следует писать. Последнее может быть вызвано записью в буфер после его освобождения или записью вне границ буфера.
Возможно Memcheck может помочь точно определить проблему.
Скомпилируйте вашу программу с отладочной информацией cc -g
и запустите valgrind ./a.out