Добрый день.
Некоторое время назад мы наткнулись на интересный баг. Я был бы рад, если бы кто-то мог мне его объяснить.
Посмотрим на такой код
int main(){
for(;;);
return 0;
}
Скомпилируем его с помощью обычного g++. При запуске, он ожидаемо зависает. Прервем процесс.
Теперь попробуем сделать немного по-другому. Добавим в строку компиляции -Wl,--stack=925000001
. Запустим процесс, он снова зависнет(неожиданно правда?). Однако, при нажатии Ctrl+C, он полностью занимает ядро процессора и не собирается завершаться.
Константа 925000001 найдена бинпоиском, на границе эффект воспроизводится не очень стабильно, иногда не убивается один из 2-3 запусков. Воспроизвелось на нескольких Win7.
Проблема не у gcc, потому что у MSVS2010 происходит тоже самое, только начиная с 9400000001 стека.
Так же было бы интересно воспроизводится ли под другими версиями windows.