У меня было что-то подобное с проектом, над которым я работал. В результате возникла проблема со ссылкой на неинициализированный указатель в стеке. Обычно он указывает на неиспользуемую программную память и перезаписывает код, который не использовался.
Когда я удалял неиспользуемый код, он внезапно указывал на память, которую я не мог изменить, и выходил из рук вон.
Дважды проверьте ваши mallocs и убедитесь в правильности указателей на переменные функции!