Hi
I have sometimes a "list erase iterator outside range" runtime error (trunk, 2011-11-08 23:34:42) at:
class LRUCache
...
Record get( const K& key ) {
_queries++;
map_iter mi = _map.find( key );
if ( mi != _map.end() ) {
_lru.erase( mi->second.second ); // <<<<<<<<<<<<<
Callstack:
> msvcp100d.dll!std::_Debug_message(const wchar_t * message, const wchar_t * file, unsigned int line) Line 15 C++
osgEarthd.dll!std::list<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::erase(std::_List_const_iterator<std::_List_val<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > > * _Where) Line 1058 C++
osgEarthd.dll!osgEarth::LRUCache<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::pair<osg::ref_ptr<osg::Object const >,osgEarth::Config> >::get(const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & key) Line 132 + 0x5c bytes C++
osgEarthd.dll!`anonymous namespace'::MemCacheBin::readObject(const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & key, double maxAge) Line 49 C++
osgEarthd.dll!osgEarth::TileSource::createHeightField(const osgEarth::TileKey & key, osgEarth::TileSource::HeightFieldOperation * prepOp, osgEarth::ProgressCallback * progress) Line 226 + 0x97 bytes C++
osgEarthd.dll!osgEarth::ElevationLayer::createHeightFieldFromTileSource(const osgEarth::TileKey & key, osgEarth::ProgressCallback * progress) Line 215 + 0x49 bytes C++
osgEarthd.dll!osgEarth::ElevationLayer::createHeightField(const osgEarth::TileKey & key, osgEarth::ProgressCallback * progress) Line 370 + 0x1d bytes C++
osgEarthd.dll!`anonymous namespace'::s_getHeightField(const osgEarth::TileKey & key, const std::vector<osg::ref_ptr<osgEarth::ElevationLayer>,std::allocator<osg::ref_ptr<osgEarth::ElevationLayer> > > & elevLayers, const osgEarth::Profile * mapProfile, bool fallback, osgEarth::ElevationInterpolation interpolation, osgEarth::ElevationSamplePolicy samplePolicy, osg::ref_ptr<osg::HeightField> & out_result, bool * out_isFallback, osgEarth::ProgressCallback * progress) Line 1026 + 0x25 bytes C++
osgEarthd.dll!osgEarth::MapFrame::getHeightField(const osgEarth::TileKey & key, bool fallback, osg::ref_ptr<osg::HeightField> & out_hf, bool * out_isFallback, osgEarth::ElevationInterpolation interpolation, osgEarth::ElevationSamplePolicy samplePolicy, osgEarth::ProgressCallback * progress) Line 1373 C++
osgdb_osgearth_engine_osgterraind.dll!BuildElevLayer::execute() Line 112 + 0x5d bytes C++
osgdb_osgearth_engine_osgterraind.dll!TileBuilder::createTile(const osgEarth::TileKey & key, bool parallelize, osg::ref_ptr<Tile> & out_tile, bool & out_hasRealData, bool & out_hasLodBlendedLayers) Line 398 + 0xd bytes C++
osgdb_osgearth_engine_osgterraind.dll!SerialKeyNodeFactory::createNode(const osgEarth::TileKey & key) Line 135 C++
osgdb_osgearth_engine_osgterraind.dll!OSGTerrainEngineNode::createNode(const osgEarth::TileKey & key) Line 378 + 0x3c bytes C++
osgdb_osgearth_engine_osgterraind.dll!OSGTerrainEnginePlugin::readNode(const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & uri, const osgDB::Options * options) Line 103 + 0x1d bytes C++
osg90-osgDBd.dll!osgDB::Registry::ReadNodeFunctor::doRead(osgDB::ReaderWriter & rw) Line 926 + 0x67 bytes C++
_lru content:
- _lru [0x0000000000000010]("8/271/62","7/135/31","4/16/3","13/8545/1989","13/8546/1988","10/1064/248","10/1065/248","10/1064/249","10/1065/249","9/530/124","9/531/124","9/530/125","9/531/125","13/8545/1988","0/1/0",<Bad Ptr>) std::list<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >
+ [0] "8/271/62" std::basic_string<char,std::char_traits<char>,std::allocator<char> >
+ [1] "7/135/31" std::basic_string<char,std::char_traits<char>,std::allocator<char> >
+ [2] "4/16/3" std::basic_string<char,std::char_traits<char>,std::allocator<char> >
+ [3] "13/8545/1989" std::basic_string<char,std::char_traits<char>,std::allocator<char> >
+ [4] "13/8546/1988" std::basic_string<char,std::char_traits<char>,std::allocator<char> >
+ [5] "10/1064/248" std::basic_string<char,std::char_traits<char>,std::allocator<char> >
+ [6] "10/1065/248" std::basic_string<char,std::char_traits<char>,std::allocator<char> >
+ [7] "10/1064/249" std::basic_string<char,std::char_traits<char>,std::allocator<char> >
+ [8] "10/1065/249" std::basic_string<char,std::char_traits<char>,std::allocator<char> >
+ [9] "9/530/124" std::basic_string<char,std::char_traits<char>,std::allocator<char> >
+ [10] "9/531/124" std::basic_string<char,std::char_traits<char>,std::allocator<char> >
+ [11] "9/530/125" std::basic_string<char,std::char_traits<char>,std::allocator<char> >
+ [12] "9/531/125" std::basic_string<char,std::char_traits<char>,std::allocator<char> >
+ [13] "13/8545/1988" std::basic_string<char,std::char_traits<char>,std::allocator<char> >
+ [14] "0/1/0" std::basic_string<char,std::char_traits<char>,std::allocator<char> >
+ [15] <Bad Ptr> std::basic_string<char,std::char_traits<char>,std::allocator<char> >
mi content
mi = ("13/8547/1988", (({_ptr=0x0000000026480120 }, {_key="" _defaultValue="" _children=[0x0000000000000000]() ...}), "««««««««««««îþîþîþîþîþîþ"))
Sorry, i don't have more information. Just a warning ;)
Cheers
Remo