Hi,

I have the following scenario:

1) A scene is using a database pager to load data by a pseudo-loader via the 
network; the viewer runs single threaded, the database pager uses default 
parameters 
2) When the database pager is still loading data via the network the viewer is 
closed.
3) Because of the closing of the viewer the database pager's destructor is 
called but it seems to be that the database threads are still running (I put 
some output at the end of the database pager's destructor and inside database 
pager's database threads and the database threads are still producing output).
Looking at the database pager's destructor the threads are not finished but 
will stop only when their current task has finished, I think.
4) The database thread will crash at

Code:
DatabasePager::FindCompileableGLObjectsVisitor stateToCompile(_pager, 
_pager->getMarkerObject());

 inside DatabasePager::DatabaseThread::run().
5) The reason for the crash is that DatabaseThread uses a simple pointer to the 
database pager. But the database pager is gone and therefore the stored pointer 
("_pager") became invalid!

Am I doing anything wrong or is this a bug in OSG?

I think that "_pager" should be at least an observer of the database pager 
pointer and not a bare pointer. Or the destructor of DatabasePager must 
invalidate all its references stored in DatabasePager::DatabaseThread.

Cheers,
Hartwig

------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=73157#73157





_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to