Когда я запускаю STLport в Дарвине, я получаю странный сбой. (Я не видел его нигде, кроме Mac, но точно так же происходит сбой на i686 и PowerPC.) Вот как это выглядит в gdb:
Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: 13 at address: 0x0000000000000000
[Switching to process 21097]
0x000000010120f47c in stlp_std::__node_alloc_impl::_M_allocate ()
Это может быть какая-то настройка в STLport, я заметил, что Mac.h и MacOSX.h, похоже, сильно отстали по функциям. Я также знаю, что это должно быть какое-то состояние гонки, поскольку это происходит не просто при вызове этого метода (вызывается простота). Сбой происходит в основном, когда я нажимаю на систему, запуская 10 одновременных потоков, которые выполняют много операций со строками.
Другие теории, с которыми я столкнулся, касаются флагов компилятора (скрипт configure) и ошибок g ++ 4.2 (похоже, 4.4.3 еще не на Mac с поддержкой Objective-C, с которой мне нужно связать).
HELP !!! :)
Редактировать : Я запускаю модульные тесты, которые делают все что угодно. Эта проблема возникает, когда я запускаю 10 потоков, которые выдвигают систему; и это всегда сводится к std :: string :: append, который в конечном итоге сводится к _M_allocate. Поскольку я даже не могу получить дамп спуска кода, который вызывает проблему, я полагаю, что делаю что-то плохое. Может ли быть так, потому что он пытается выполнить по указателю инструкции 0x000 ... 000? Dynlibs создаются как библиотеки DLL в Windows с таблицей переходов? Возможно ли, что такая таблица переходов по какой-то причине была перезаписана? Это, вероятно, объясняет это поведение. (Код огромен, если у меня закончатся другие идеи, я опубликую здесь пример минимального сбоя.)