У меня проблема, с которой я боролся некоторое время.Запуск приложения Cocoa под otest вызывает dyld_misaligned_stack_error в режиме освобождения
У меня есть библиотека Cocoa, которая действует как обертка для библиотеки C++. Библиотека C++ тестируется с использованием набора модульных тестов BOOST. Тесты выполняются обычно в режимах отладки и выпуска.
Чтобы проверить оболочку какао, я использую otest. Вот странная часть, тесты работают нормально в режиме отладки, но не работают в режиме деблокирования. Чтобы убедиться, что это не что-то в коде, я взял содержимое тестов и скомпилировал их как отдельное приложение Cocoa, которое использует код оболочки. Это нормально работает как при выпуске, так и при отладке.
Когда otest failed, я получаю трассировку стека, которая не имеет смысла и заканчивается dyld_misaligned_stack_error.
Еще одна странная вещь, которую я заметил, заключается в том, что при запуске otest из командной строки, а не из XCode, если я укажу DYLD_LIBRARY_PATH и DYLD_FRAMEWORK_PATH на версию Debug версии C++, тесты проходят. Я подтвердил, что весь мой тестовый код скомпилирован с флажками Release.
Любая помощь была бы принята с благодарностью!
Спасибо
Спасибо за ответ. Однако в этом случае это не является причиной, хотя это помогло обнаружить исправление. По какой-то причине удаление NDEBUG из флагов C в режиме Release устранило проблему даже без опции -mstackrealign. Однако я не понимаю, почему. – Alex
Nevermind :) Я забыл добавить этот флаг для выпуска версий моих библиотек C++. Большое спасибо, ваш ответ помог найти проблему. – Alex