Как правильно зафайлить баг в g++?
Запускаешь компиляцию с -v, находишь строку запуска комилятора непосредственно, дальше смотришь в gdb контекст падения.
Ну это если хочется церебрального секса, конечно.
2. Очень желательно показать бектрейс падения cc1plus. Что-то типа
gdb --args g++ -std=c++0x code.cpp
(gdb) set follow-fork-mode child
(gdb) r
(gdb) bt
3. Я правильно понимаю, что g++ --save-temps -std=c++0x code.cpp не падает? Это довольно странно, будь готов, что мейнтейнеры не смогут воспроизвести баг.
3. Я правильно понимаю, что g++ --save-temps -std=c++0x code.cpp не падает? Это довольно странно, будь готов, что мейнтейнеры не смогут воспроизвести баг.Да, именно так
С 4.7.2 такого не воспроизводится, там в любом случае не падает, так что может быть это уже не надо репортить.
В любом случае - спасибо, будет время и желание - повожусь еще.
С 4.7.2 такого не воспроизводится, там в любом случае не падает, так что может быть это уже не надо репортить.4.6.3 еще лет пять будет в LTS-дистрибутивах.
Попробую в генту зафайлить, получилось собрать шестиметровый препроцессированный файл, который стабильно валится.
В таком случае, вполне вероятно, что это благодаря stack smashing protection, который генту по умолчанию включают (т.е. баг таки в гцц, а не в гентушных патчах).
т.е. баг таки в гцц, а не в гентушных патчахЧорд. Еще поднакодил - стал и ванильный gcc падать. Все-таки в gcc, да.
Оставить комментарий
erotic
Есть довольно странный код, который вызывает падение компилятора g++ 4.6.3. Код использует c++11. В отличие от прошлых разов я не могу сделать минимальный тесткейс - сейчас это один .cpp с кучей инклюдов, если я убираю из любого инклюда любую строчку, код начинает собираться.Кроме того, нет смысла предоставлять препроцессированный исходник, т.к. он отдельно собирается!
Т.е., опуская кучу флагов, g++ -std=c++0x code.cpp говорит
А вот g++ code.ii работает нормально, как и верхний вызов с опцией --save-temps.
Прикладывать к багу архив всех исходников и системных хедеров вроде не приветствуется.
Что можно сделать?