2012-01-15 4 views
-5

私のアプリケーションでクラッシュすることがあり、誰かが助けることができるかどうかを知りたいと思います。セグメンテーションフォールト - std :: _ Rb_tree

GDB:

http://pastebin.com/tW6HzY2Y これを引き起こす可能性がありますか?私はUbuntu 10.04.3を使用しています。

編集: ルックは、問題がここにある好き:これは奇妙です

bool ChatChannel::removeUser(Player* player) 
{ 
    UsersMap::iterator it = m_users.find(player->getID()); 
    if(it == m_users.end()) 
     return false; 

    m_users.erase(it); 

    return true; 
} 

、この部分に問題があることはなかったです。私はエラーを再現する方法を知らない。

+3

これは...あまりにも情報が少なすぎるためです。 – Xeo

+2

問題は、コードにバグがあることです。しかし、あなたはコードを表示していないので、それが何であるかを示唆することは不可能です。 [** minimal test-case **](http://sscce.org)を作成することを検討してください。 –

+0

これを引き起こす可能性のある例を教えてもらえますか?私はどこに問題があるのか​​わからないコードを私は与えることができません。 – user1150772

答えて

0

valgrindでプログラムを実行してください。実際のクラッシュの前に、エラーの原因をより詳細に指摘する可能性があります(副次的な被害とは対照的に)。

1

他にも示唆されているようにあまり行くものはありません。リンクしたスタックトレースにはほとんど情報がありません。しかし、小さなビットがあります。これは、this=0x38に基づいて、ツリーではないオブジェクトで何かを見つけようとしています。私の個人的な推測では、std::map<unsigned int, Player>を含むデータ構造には、他のいくつかのメンバー(合計サイズが56バイトです)の後にこのマップがありますが、NULLポインタを介してこのデータ構造にアクセスしようとしています。つまり、セグメンテーションエラーはstd::_Rb_treeに発生しましたが、エラーはstd::map実装にはまったくありません。

+0

狂った診断スキル! :) +1 – Xeo

関連する問題