При переходе на более новую версию компилятора CC в модуле, который раньше работал, проявился segfault.
Из основного файла я мог узнать, в какой функции возникла segfault. Когда я наблюдал за функцией, я не мог найти ничего подозрительного.
Первая серьезная проблема заключалась в том, что segfault воспроизводился только при компиляции в «выпуске» (с включенными оптимизациями )и не воспроизводился при «отладке». Кроме того, segfault не воспроизводится на g++.
Сейчас начал пользоваться печатью, и возникла большая проблема -при добавлении cout
/printf
( для бинарного поиска строки segfault/вывод значения указателей )на определенные строки в коде, segfault не воспроизводился. Более того, я добавил cout в определенную строку кода, который поддерживал segfault, что якобы означает, что segfault происходит до этой строки. Комментирование строк после этой строки привело к исчезновению segfault.
Для меня это кричит о повреждении памяти (, особенно в стеке ), но я понятия не имею, как продвинуться в этом, не глядя на сгенерированную сборку.
Любые идеи? заранее спасибо.
Я работаю над SunOS _5.10 _Studio _12 _5.12 _64, версия CC "Sun C++ 5.12 SunOS _sparc 2011/11/16"