Thanks for your reply Robert,

I was able to reproduce the crash with the example osgwindows (but not with
osgcompositeviewer). I launched the example with the cow.osg model in debug
mode, moved a little with the camera and gave a rotation, then waited a
couple of minutes (less than 5) and it crash for the same reason (the
OperationQueue has its SwapBuffersOperation corrupted) at the same location
(line 75 in OperationThread.cpp).

Anyone can try to reproduce it ? :)
I'll try to launch it in release mode to see if it also crash.

On Thu, Jun 26, 2008 at 3:43 PM, Robert Osfield <[EMAIL PROTECTED]>
wrote:

> Hi Serge,
>
> What you are doing looks OK, and there are already OSG examples doing
> similar things so it "should" work.  To track down what it might be
> it'd worth trying out different threading models, and also try out
> examples like osgthirdpersonview, osgcompositeviewer and osgcamera to
> see if you can recreate the problems here, if so then others can try
> it out at there end to see if problems occurs across OS/machines/build
> combinations.
>
> For one point of reference, the type of usage you are putting the OSG
> through is something I've put the OSG through many times before
> without coming across this problem.
>
> Robert.
>
> On Thu, Jun 26, 2008 at 1:57 PM, Serge Lages <[EMAIL PROTECTED]>
> wrote:
> > Hi all,
> >
> > I am having a crash with a CompositeViewer setup on Windows XP (VS 8 Sp1,
> 1
> > GeForce card, SVN trunk). It is composed of 2 windows into 1 screen, with
> > one context for each window. My threading model is DrawThreadPerContext.
> > The crash takes place into OperationQueue, the _operations list has a
> > corrupted element : the last one (the SwapBuffersOperation). The two
> > graphics threads have their OperationQueue corrupted.
> >
> > So it crash line 75 into OperationThread.cpp because
> > _currentOperationIterator points to a corrupted pointer.
> > About my app, it just load the cow.osg, nothing else.
> >
> > Anyone have seen this problem before ? Or am I making something wrong on
> my
> > viewer setup (my code is below) ?
> > Thanks in advance !
> >
> >     osgViewer::CompositeViewer    viewer;
> >     osg::Node                    *root = osgDB::readNodeFile("cow.osg");
> >
> >     // upper window
> >     {
> >         // Traits
> >         osg::ref_ptr<osg::GraphicsContext::Traits>    traits = new
> > osg::GraphicsContext::Traits;
> >
> >         traits->x = 300;
> >         traits->y = 40;
> >         traits->width = 600;
> >         traits->height = 300;
> >         traits->windowDecoration = true;
> >         traits->doubleBuffer = true;
> >         traits->sharedContext = 0;
> >
> >         // Graphic context
> >         osg::ref_ptr<osg::GraphicsContext>    gc =
> > osg::GraphicsContext::createGraphicsContext(traits.get());
> >         osgViewer::View                        *view = new
> osgViewer::View;
> >         GLenum                                buffer =
> traits->doubleBuffer
> > ? GL_BACK : GL_FRONT;
> >
> >         viewer.addView(view);
> >         view->getCamera()->setGraphicsContext(gc.get());
> >         view->getCamera()->setViewport(new osg::Viewport(0,0,
> traits->width,
> > traits->height));
> >         view->getCamera()->setDrawBuffer(buffer);
> >         view->getCamera()->setReadBuffer(buffer);
> >         view->setSceneData(root);
> >     }
> >     // lower window
> >     {
> >         // Traits
> >         osg::ref_ptr<osg::GraphicsContext::Traits>    traits = new
> > osg::GraphicsContext::Traits;
> >
> >         traits->x = 300;
> >         traits->y = 375;
> >         traits->width = 600;
> >         traits->height = 480;
> >         traits->windowDecoration = true;
> >         traits->doubleBuffer = true;
> >         traits->sharedContext = 0;
> >
> >         // Graphic context
> >         osg::ref_ptr<osg::GraphicsContext>    gc =
> > osg::GraphicsContext::createGraphicsContext(traits.get());
> >         osgViewer::View                        *view = new
> osgViewer::View;
> >         GLenum                                buffer =
> traits->doubleBuffer
> > ? GL_BACK : GL_FRONT;
> >
> >         viewer.addView(view);
> >         view->getCamera()->setGraphicsContext(gc.get());
> >         view->getCamera()->setViewport(new osg::Viewport(0,0,
> traits->width,
> > traits->height));
> >         view->getCamera()->setDrawBuffer(buffer);
> >         view->getCamera()->setReadBuffer(buffer);
> >         view->setSceneData(root);
> >         view->addEventHandler(new
> > osgGA::StateSetManipulator(view->getCamera()->getOrCreateStateSet()));
> >         view->addEventHandler(new osgViewer::StatsHandler());
> >     }
> >
> >     viewer.run();
> >
> >     return (0);
> >
> > --
> > Serge Lages
> > http://www.tharsis-software.com
> > _______________________________________________
> > osg-users mailing list
> > osg-users@lists.openscenegraph.org
> >
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> >
> >
> _______________________________________________
> osg-users mailing list
> osg-users@lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>



-- 
Serge Lages
http://www.tharsis-software.com
_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to