Hello all,
I'm getting a consistent crash in the DatabasePager thread in our application.
I'll post the callstack and some information:
Windows XP OS with VS 2005, uising OSG 3.0.1 with an appx. 35Gb .ive terrain
built with the latest VPB against OSG 3.0.1. I've also got the same crash to
happen for terrains built against 2.9.8 and 2.9.9, one of which is much smaller.
Just yesterday, I loaded this same terrain into the osgcompositeviewerd example
app, and got the same crash in the same location. So, I think it's a problem
in the DatabasePager and perhaps not something we're doing in our app, or
possibly a problem with how VPB is building the terrain.
A few times this crash has occured in as little as 10 minutes, however most
times it seems to take 45min to 2hours+ to occur. I tilted the terrains in the
bottom two views of the sample app to try and get as many tiles in view as
possible and then tried to slowly spin them around so they would keep paging in
and out tiles and I also spun the flaming Cessna. I've gotten it twice so far
in osgcompostiteviewerd, in the same spot. Also, I have gotten it to occur in
our app with only a single view and a single DatabasePager thread, so I don't
think it's an issue with multiple DatabasePager threads.
Here is the callstack:
osg80-osgd.dll!std::_Vector_const_iterator<osg::ref_ptr<osg::Node>,std::allocator<osg::ref_ptr<osg::Node>
> >::operator++() Line 117 + 0x33 bytes C++
osg80-osgd.dll!std::_Vector_iterator<osg::ref_ptr<osg::Node>,std::allocator<osg::ref_ptr<osg::Node>
> >::operator++() Line 337 C++
osg80-osgd.dll!osg::Group::traverse(osg::NodeVisitor & nv={...}) Line
60 + 0x8 bytes C++
osg80-osgd.dll!osg::NodeVisitor::traverse(osg::Node & node={...}) Line
193 + 0x1c bytes C++
osg80-osgUtild.dll!osgUtil::StateToCompile::apply(osg::Node &
node={...}) Line 70 + 0xf bytes C++
osg80-osgd.dll!osg::NodeVisitor::apply(osg::Group & node={...}) Line
86 + 0x13 bytes C++
osg80-osgd.dll!osg::NodeVisitor::apply(osg::Transform & node={...})
Line 121 + 0x13 bytes C++
osg80-osgd.dll!osg::NodeVisitor::apply(osg::MatrixTransform &
node={...}) Line 136 + 0x13 bytes C++
osg80-osgd.dll!osg::MatrixTransform::accept(osg::NodeVisitor &
nv={...}) Line 37 + 0x41 bytes C++
>
> osg80-osgTerraind.dll!osgTerrain::GeometryTechnique::traverse(osg::NodeVisitor
> & nv={...}) Line 1488 + 0x47 bytes C++
osg80-osgTerraind.dll!osgTerrain::TerrainTile::traverse(osg::NodeVisitor &
nv={...}) Line 159 + 0x24 bytes C++
osg80-osgd.dll!osg::NodeVisitor::traverse(osg::Node & node={...}) Line
193 + 0x1c bytes C++
osg80-osgUtild.dll!osgUtil::StateToCompile::apply(osg::Node &
node={...}) Line 70 + 0xf bytes C++
osg80-osgd.dll!osg::NodeVisitor::apply(osg::Group & node={...}) Line
86 + 0x13 bytes C++
osg80-osgTerraind.dll!osgTerrain::TerrainTile::accept(osg::NodeVisitor
& nv={...}) Line 76 + 0x55 bytes C++
osg80-osgd.dll!osg::NodeAcceptOp::operator()(osg::ref_ptr<osg::Node>
node={...}) Line 358 + 0x5e bytes C++
osg80-osgd.dll!std::for_each<std::_Vector_iterator<osg::ref_ptr<osg::Node>,std::allocator<osg::ref_ptr<osg::Node>
>
>,osg::NodeAcceptOp>(std::_Vector_iterator<osg::ref_ptr<osg::Node>,std::allocator<osg::ref_ptr<osg::Node>
> > _First={_ptr=0x098306b0 },
std::_Vector_iterator<osg::ref_ptr<osg::Node>,std::allocator<osg::ref_ptr<osg::Node>
> > _Last={_ptr=0xfdfdfdfd }, osg::NodeAcceptOp _Func={...}) Line 29 + 0x1f
bytes C++
osg80-osgd.dll!osg::PagedLOD::traverse(osg::NodeVisitor & nv={...})
Line 136 + 0x6c bytes C++
osg80-osgd.dll!osg::NodeVisitor::traverse(osg::Node & node={...}) Line
193 + 0x1c bytes C++
osg80-osgUtild.dll!osgUtil::StateToCompile::apply(osg::Node &
node={...}) Line 70 + 0xf bytes C++
osg80-osgd.dll!osg::NodeVisitor::apply(osg::Group & node={...}) Line
86 + 0x13 bytes C++
osg80-osgd.dll!osg::NodeVisitor::apply(osg::LOD & node={...}) Line 156
+ 0x13 bytes C++
osg80-osgd.dll!osg::NodeVisitor::apply(osg::PagedLOD & node={...})
Line 161 + 0x13 bytes C++
osg80-osgd.dll!osg::PagedLOD::accept(osg::NodeVisitor & nv={...}) Line
32 + 0x41 bytes C++
osg80-osgd.dll!osg::Group::traverse(osg::NodeVisitor & nv={...}) Line
62 + 0x25 bytes C++
osg80-osgd.dll!osg::NodeVisitor::traverse(osg::Node & node={...}) Line
193 + 0x1c bytes C++
osg80-osgUtild.dll!osgUtil::StateToCompile::apply(osg::Node &
node={...}) Line 70 + 0xf bytes C++
osg80-osgd.dll!osg::NodeVisitor::apply(osg::Group & node={...}) Line
86 + 0x13 bytes C++
osg80-osgd.dll!osg::Group::accept(osg::NodeVisitor & nv={...}) Line 38
+ 0x41 bytes C++
osg80-osgDBd.dll!osgDB::DatabasePager::DatabaseThread::run() Line 886
+ 0x2d bytes C++
ot12-OpenThreadsd.dll!OpenThreads::ThreadPrivateActions::StartThread(void *
data=0x0207bed4) Line 113 + 0xf bytes C++
msvcr80d.dll!_callthreadstartex() Line 348 + 0xf bytes C
msvcr80d.dll!_threadstartex(void * ptd=0x052c2e30) Line 331 C
kernel32.dll!7c80b729()
[Frames below may be incorrect and/or missing, no symbols loaded for
kernel32.dll]
ntdll.dll!7c910222()
In the osgTerrain::TerrainTile::traverse call some info on the node visitor(nv):
osg80-osgTerraind.dll!osgTerrain::TerrainTile::traverse(osg::NodeVisitor &
nv={...}) Line 159 + 0x24 bytes C++
- nv {_visitorType=NODE_VISITOR _traversalNumber=4294967295
_frameStamp={...} ...} osg::NodeVisitor &
+ osg::Referenced {_observerSet={...} _refCount={...} }
osg::Referenced
+ __vfptr 0x010d874c const
osgDB::DatabasePager::FindCompileableGLObjectsVisitor::`vftable'{for
`osg::NodeVisitor'} *
_visitorType NODE_VISITOR osg::NodeVisitor::VisitorType
_traversalNumber 4294967295 unsigned int
+ _frameStamp {_ptr=0x00000000 }
osg::ref_ptr<osg::FrameStamp>
_traversalMode TRAVERSE_ALL_CHILDREN
osg::NodeVisitor::TraversalMode
_traversalMask 4294967295 unsigned int
_nodeMaskOverride 0 unsigned int
- _nodePath [4](0x09830440 {_children=[4]({_ptr=0x09830518
},{_ptr=0x094a8670 },{_ptr=0x08d229c0 },{_ptr=0x086f9228 }) },0x09830518
{_databaseOptions={...} _databasePath="sat_root_L0_X0_Y0/"
_frameNumberOfLastTraversal=0 ...},0x098306b0 {_terrain=0x020641c8 _dirtyMask=0
_hasBeenTraversal=true ...},0x091fd2e8 {_contextID=0 _glObjectID=483
_profile={...} ...}) std::vector<osg::Node *,std::allocator<osg::Node *> >
+ [0] 0x09830440 {_children=[4]({_ptr=0x09830518
},{_ptr=0x094a8670 },{_ptr=0x08d229c0 },{_ptr=0x086f9228 }) } osg::Node *
- [1] 0x09830518 {_databaseOptions={...}
_databasePath="sat_root_L0_X0_Y0/" _frameNumberOfLastTraversal=0 ...}
osg::Node *
- [osg::PagedLOD] {_databaseOptions={...}
_databasePath="sat_root_L0_X0_Y0/" _frameNumberOfLastTraversal=0 ...}
osg::PagedLOD
+ osg::LOD {_centerMode=USER_DEFINED_CENTER
_userDefinedCenter={...} _radius=-1.0000000 ...} osg::LOD
+ _databaseOptions {_ptr=0x00000000 }
osg::ref_ptr<osg::Referenced>
+ _databasePath "sat_root_L0_X0_Y0/"
std::basic_string<char,std::char_traits<char>,std::allocator<char> >
_frameNumberOfLastTraversal 0 unsigned int
_numChildrenThatCannotBeExpired 0 unsigned int
_disableExternalChildrenPaging false bool
- _perRangeDataList [2]({_filename=""
_priorityOffset=0.00000000 _priorityScale=1.0000000
...},{_filename="sat_L5_X23_Y14_subtile.ive" _priorityOffset=0.00000000
_priorityScale=1.0000000 ...})
std::vector<osg::PagedLOD::PerRangeData,std::allocator<osg::PagedLOD::PerRangeData>
>
+ [0] {_filename="" _priorityOffset=0.00000000
_priorityScale=1.0000000 ...} osg::PagedLOD::PerRangeData
+ [1] {_filename="sat_L5_X23_Y14_subtile.ive"
_priorityOffset=0.00000000 _priorityScale=1.0000000 ...}
osg::PagedLOD::PerRangeData
I did verify the terrain tile in there was valid and viewable in osgviewer.
I'm going to start looking now to see if it's not only the same code location
crash, but also tiles involved.
Also, I have tried setting some things in our app on the DatabasePager such as
turning off caching, setting the unref image after apply policy to false,
setting do pre compile to false and still get the same results.
I have seen some threads in the past addressing DatabasePager thread issues,
but perhaps this bug has been still lurking because it can take a long time to
appear in most cases.
Any ideas or suggestions would be greatly appreciated. Thanks.
Steve
------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=43400#43400
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org