Hi,
had anyone a look on this? We should fix this.
- Can we assure to call this destructor first and then destruct _path_cache?
- Why is it necessary to set the path to "/ai/models/model-removed" ?
Wouldn't it work without this?
Maik
Maik Justus schrieb am 14.11.2006 21:42:
> Hi,
>
> I found another bug. While exiting fg, I got a crash. The crashed
> function is called by FGAIBase::~FGAIBase() line 71:
> fgSetString("/ai/models/model-removed", props->getPath());
> This calls SGPropertyNode::getNode (const char * relative_path, bool
> create) where _path_cache is referenced. But this object seems to be
> destructed and SGPropertyNode * result =
> _path_cache->get(relative_path); (props.cxx l. 61) crashes.
>
> Here the call stack:
> FlightGear.exe!SGPropertyNode::hash_table::get(const char *
> key=0x01230c78) Zeile 2230 + 0x3 Bytes C++
> > FlightGear.exe!SGPropertyNode::getNode(const char *
> relative_path=0x01230c78, bool create=true) Zeile 1746 + 0x12 Bytes C++
> FlightGear.exe!SGPropertyNode::setStringValue(const char *
> relative_path=0x01230c78, const char * value=0x1ded48f0) Zeile 1936 +
> 0x12 Bytes C++
> FlightGear.exe!fgSetString(const char * name=0x01230c78, const char
> * val=0x1ded48f0) Zeile 787 C++
> FlightGear.exe!FGAIBase::~FGAIBase() Zeile 80 + 0x1f Bytes C++
> FlightGear.exe!FGAIMultiplayer::~FGAIMultiplayer() Zeile 44 + 0x5d
> Bytes C++
> FlightGear.exe!FGAIMultiplayer::`scalar deleting destructor'() +
> 0x2b Bytes C++
> FlightGear.exe!SGSharedPtr<FGAIMultiplayer>::put() Zeile 93 + 0x8e
> Bytes C++
>
> FlightGear.exe!SGSharedPtr<FGAIMultiplayer>::~SGSharedPtr<FGAIMultiplayer>()
> Zeile 58 + 0x2b Bytes C++
>
> FlightGear.exe!std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
> > const ,SGSharedPtr<FGAIMultiplayer>
> >::~pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
> > const ,SGSharedPtr<FGAIMultiplayer> >() + 0x54 Bytes C++
>
> FlightGear.exe!std::_Tree_nod<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
>
> >,SGSharedPtr<FGAIMultiplayer>,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
> >
>
> >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
> > const ,SGSharedPtr<FGAIMultiplayer> > >,0> >::_Node::~_Node() + 0x2e
> Bytes C++
>
> FlightGear.exe!std::_Tree_nod<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
>
> >,SGSharedPtr<FGAIMultiplayer>,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
> >
>
> >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
> > const ,SGSharedPtr<FGAIMultiplayer> > >,0> >::_Node::`scalar deleting
> destructor'() + 0x2b Bytes C++
>
> FlightGear.exe!std::_Destroy<std::_Tree_nod<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
>
> >,SGSharedPtr<FGAIMultiplayer>,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
> >
>
> >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
> > const ,SGSharedPtr<FGAIMultiplayer> > >,0>
>
> >::_Node>(std::_Tree_nod<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
>
> >,SGSharedPtr<FGAIMultiplayer>,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
> >
>
> >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
> > const ,SGSharedPtr<FGAIMultiplayer> > >,0> >::_Node *
> _Ptr=0x157a6f98) Zeile 61 C++
>
> FlightGear.exe!std::allocator<std::_Tree_nod<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
>
> >,SGSharedPtr<FGAIMultiplayer>,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
> >
>
> >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
> > const ,SGSharedPtr<FGAIMultiplayer> > >,0>
>
> >::_Node>::destroy(std::_Tree_nod<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
>
> >,SGSharedPtr<FGAIMultiplayer>,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
> >
>
> >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
> > const ,SGSharedPtr<FGAIMultiplayer> > >,0> >::_Node *
> _Ptr=0x157a6f98) Zeile 161 + 0x9 Bytes C++
>
> FlightGear.exe!std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
>
> >,SGSharedPtr<FGAIMultiplayer>,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
> >
>
> >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
> > const ,SGSharedPtr<FGAIMultiplayer> > >,0>
>
> >::_Erase(std::_Tree_nod<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
>
> >,SGSharedPtr<FGAIMultiplayer>,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
> >
>
> >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
> > const ,SGSharedPtr<FGAIMultiplayer> > >,0> >::_Node *
> _Rootnode=0x157a6f98) Zeile 1078 C++
>
> FlightGear.exe!std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
>
> >,SGSharedPtr<FGAIMultiplayer>,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
> >
>
> >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
> > const ,SGSharedPtr<FGAIMultiplayer> > >,0>
>
> >::_Erase(std::_Tree_nod<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
>
> >,SGSharedPtr<FGAIMultiplayer>,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
> >
>
> >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
> > const ,SGSharedPtr<FGAIMultiplayer> > >,0> >::_Node *
> _Rootnode=0x1d06f700) Zeile 1076 C++
>
> FlightGear.exe!std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
>
> >,SGSharedPtr<FGAIMultiplayer>,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
> >
>
> >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
> > const ,SGSharedPtr<FGAIMultiplayer> > >,0> >::clear() Zeile 955 C++
> FlightGear.exe!FGMultiplayMgr::Close() Zeile 226 C++
> FlightGear.exe!FGMultiplay::close() Zeile 292 C++
> FlightGear.exe!FGIO::shutdown_all() Zeile 351 + 0xf Bytes C++
> FlightGear.exe!FGIO::~FGIO() Zeile 85 C++
> FlightGear.exe!FGIO::`scalar deleting destructor'() + 0x2b
> Bytes C++
> FlightGear.exe!FGGlobals::~FGGlobals() Zeile 107 + 0x3a Bytes C++
> FlightGear.exe!FGGlobals::`scalar deleting destructor'() + 0x2b
> Bytes C++
> FlightGear.exe!fgExitCleanup() Zeile 232 + 0x36 Bytes C++
>
>
> Maik
>
> -------------------------------------------------------------------------
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to share your
> opinions on IT & business topics through brief surveys - and earn cash
> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> _______________________________________________
> Flightgear-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/flightgear-devel
>
>
>
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Flightgear-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/flightgear-devel