Классик Гейзенбаг . Из Википедии:
Время также может быть фактором в heisenbugs. Выполнение программы под управлением отладчика может изменить время выполнения программы по сравнению с обычным выполнением. Чувствительные ко времени ошибки, такие как состояние гонки, могут не воспроизводиться, когда программа замедляется одноступенчатыми исходными строками в отладчике. Это особенно верно, когда поведение включает взаимодействие с объектом, не находящимся под управлением отладчика, например, при отладке обработки сетевых пакетов между двумя компьютерами, и только один находится под контролем отладчика.
Отладчик может изменять время и скрывать состояние гонки.
В Linux GDB также отключает рандомизацию адресного пространства, и ваш сбой может быть связан с разметкой адресного пространства. Попробуйте (gdb) set disable-randomization off
.
Наконец, ulimit -c unlimited
и посмертная отладка (уже предложенная Роби) могут работать.