ダーウィンで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個のスレッドを同時に実行します。
私が思いついた他の理論は、コンパイラフラグ(スクリプトの構成)とg ++ 4.2のバグに関係しています(4.4.3はまだMacになく、Objective-Cをサポートしているようです。リンクする必要があります)。
ヘルプ!!!:)
編集:私はあらゆる種類のことを行う単体テストを実行します。この問題は、システムをプッシュする10個のスレッドを開始したときに発生します。そしてそれは常にstd::string :: appendになり、最終的には_M_allocateになります。問題の原因となっているコードの降下ダンプを取得することすらできないので、私は何か悪いことをしていると思います。命令ポインタ0x000...000で実行しようとしているので、そうでしょうか?dynlibsはジャンプテーブルを備えたWindowsでDLLとして構築されていますか?そのようなジャンプテーブルが何らかの理由で上書きされた可能性がありますか?それはおそらくこの振る舞いを説明するでしょう。(コードは巨大です。他のアイデアが足りなくなった場合は、クラッシュする最小限のサンプルをここに投稿します。)