Нужна помощь в отладке странной ошибки сегментации

Фон

При переходе на более новую версию компилятора CC в модуле, который раньше работал, проявился segfault.

Наблюдения на данный момент

  1. Из основного файла я мог узнать, в какой функции возникла segfault. Когда я наблюдал за функцией, я не мог найти ничего подозрительного.

  2. Первая серьезная проблема заключалась в том, что segfault воспроизводился только при компиляции в «выпуске» (с включенными оптимизациями )и не воспроизводился при «отладке». Кроме того, segfault не воспроизводится на g++.

  3. Сейчас начал пользоваться печатью, и возникла большая проблема -при добавлении 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"

Подробнее в ответах на комментарии

  1. Код однопоточный -.
  2. valgrind недоступен в Solaris, так что это не имеет значения.
6
задан infokiller 9 April 2018 в 23:02
поделиться