Когда я запускаю STLport в Дарвине, я получаю странный сбой. (Не видели его в другом месте, чем на Mac, но точно то же самое аварии на обоих i686 и PowerPC.) Это то, что он выглядит в БГД:STLport авария (состояние гонки, только Дарвин?)
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 script) и g ++ 4.2 ошибками (похоже, что 4.4.3 не на Mac, но с поддержкой Objective-C, с которой мне нужно связать).
HELP !!! :)
Редактировать: Я запускаю модульные тесты, которые делают всевозможные вещи. Эта проблема возникает, когда я запускаю 10 потоков, которые подталкивают систему; и он всегда сводится к std :: string :: append, который в конечном итоге сводится к _M_allocate. Поскольку я даже не могу получить спуск сбрасывания кода, который вызывает проблему, я полагаю, что я делаю что-то плохое. Может быть так, так как он пытается выполнить с указателем инструкции 0x000 ... 000? Являются ли dynlibs построены как DLL в Windows с таблицей переходов? Может быть, почему-то такая таблица прыжка была переписана по какой-то причине? Вероятно, это объясняет это поведение. (Код огромен, если у меня заканчиваются другие идеи, я опубликую здесь минимальный образец сбой).
Вы не можете «запустить» STLport - это библиотека - какой код C++ вы написали, что вызывает сбой? – 2010-03-05 14:36:05
Что сказал Нил, но также стоит посмотреть, как/если код является потокобезопасным. –