Hi Cedric,

Thanks for keep on digging into this problem.  I don't think this is a
bug in your code, rather you've just set up a set of circumstances
that the normal clean up is circumvented and an errors occurs.   If
possible we should find a way of avoid the problem in full range of
usage.

Does the little example app you provided in your email reproduce the
crash on exit?  Could we use this as a unit test?

Robert.

On Fri, Oct 9, 2009 at 1:49 PM, Cedric Pinson
<cedric.pin...@plopbyte.net> wrote:
> Hi again,
>
> ok i found my mistake and it could help other people that have a strange
> behaviour when quitting. I make a small code to reproduce the problem.
> At the end i did
> myviewer.setSceneData(0);
> in order to remove scene. With the new texture manager it produces this
> valgrind output in attached file. I did not think it was bad to do that.
> anyway if this post can save time for other people...
>
>
> #include <osg/ref_ptr>
> #include <osgDB/ReadFile>
> #include <osgDB/Registry>
> #include <osgViewer/Viewer>
> #include <osg/StateSet>
> #include <osgText/Text>
> #include <osg/Texture2D>
>
> int main(int argc, char** argv)
> {
>    osg::ref_ptr<osg::Group> grp = new osg::Group;
>    osgViewer::Viewer myviewer;
>    myviewer.setSceneData(grp);
>
>    osg::ref_ptr<osg::Geode> geode = new osg::Geode;
>    osg::ref_ptr<osgText::Text> chipsText = new osgText::Text;
>    std::string fontName = "../data/Vera.ttf";
>    int size = 20;
>    osg::Vec3 pos(0,0,0);
>    osg::ref_ptr<osgText::Font> font =
> osgText::readFontFile(fontName.c_str());
>    chipsText->setFont(font);
>    chipsText->setText("blabla");
>    geode->addDrawable(chipsText);
>    grp->addChild(geode);
>
>    myviewer.realize();
>    myviewer.run();
>    myviewer.setSceneData(0);
>    return 0;
> }
>
>
>
> --
> +33 659 598 614  Cedric Pinson mailto:cedric.pin...@plopbyte.net
> http://www.plopbyte.net
>
>
> On Thu, 2009-10-08 at 15:22 +0200, Cedric Pinson wrote:
>> Hi Robert,
>>
>> I updated to the svn trunk today, and i can notice a crash when quitting
>> my application. To be sure it was with the new texture manager i defined
>> USE_NEW_TEXTURE_POOL to 0 and then to 1.
>>
>> I dont have yet found the problem, but i guess it's linked with my
>> texture manager, i own some static that reference texture.
>>
>> The segfault appear when quitting
>> Program received signal SIGSEGV, Segmentation fault.
>> #0  0xb6ef7ddf in ?? () from /lib/libc.so.6
>> #1  0xb5dddc40 in ?? () from //usr//lib/opengl/nvidia/lib/libGLcore.so.1
>> #2  0xb5dddc40 in ?? () from //usr//lib/opengl/nvidia/lib/libGLcore.so.1
>> #3  0xb54f2008 in ?? ()
>> #4  0xb54f2008 in ?? ()
>> #5  0xb6193d60 in ?? () from //usr//lib/opengl/nvidia/lib/libGLcore.so.1
>> #6  0xb6fd0bcb in ?? () from /lib/libc.so.6
>> #7  0xb6fd26e8 in ?? () from /lib/libc.so.6
>> #8  0xb6fcf469 in ?? () from /lib/libc.so.6
>> #9  0xb6fcf442 in ?? () from /lib/libc.so.6
>> #10 0xbfc68254 in ?? ()
>> #11 0xa7200010 in ?? ()
>> #12 0x0000001d in ?? ()
>> #13 0x00000000 in ?? ()
>>
>> I guess there is something wrong with my texture management and the new
>> texture pool.
>>
>> I continue to dig
>>
>> Cheers,
>> Cedric
>>
>> --
>> +33 659 598 614  Cedric Pinson mailto:cedric.pin...@plopbyte.net
>> http://www.plopbyte.net
>>
>>
>> On Fri, 2009-10-02 at 22:21 +0100, Robert Osfield wrote:
>> > Hi All,
>> >
>> > I've been pretty quiet and the public list/forum through September,
>> > keeping my head down developing new functionality for the OSG...  and
>> > the new functionality I'm pleased to announce today is that we now
>> > have a loverly new back-end implementation for texture objects and
>> > buffer objects (VertexBufferObject, ElementBufferObjects and
>> > PixelBufferObjects's) that provides a set of GL objects pools that
>> > enable recycling of both orphaned GL objects and reuse of GL objects
>> > that are still attached to the scene graph, but are stale - i.e.
>> > haven't been rendered in the last frame.
>> >
>> > The benefit the GL object pools provide is that we can scale up the
>> > scene graph in main memory without blowing OpenGL driver and GPU
>> > memory as we would do without the new pools.  This feature also
>> > reduces the likely-hood of thrashing of OpenGL driver and GPU memory
>> > so that where we might have previously seen frame drops due to memory
>> > management we avoid them completely or reduce there impact.  The
>> > memory pools will come in there own once we scale down the GPU memory
>> > size, such as embedded systems, or on desktop/workstation applications
>> > where GPU memory can be overflowed due to massive databases being kept
>> > in main memory.  In the later case this issue is more compounded on
>> > some OS's, such as Vista, that limits the amount of memory that OpenGL
>> > drivers can allocate, so here it should help make the app more stable
>> > (avoid the crashes due to out of memory errors) and faster.
>> >
>> > So... how to try out the new texture and buffer object pools?   First
>> > up you'll need to update to the latest OpenScenGraph svn/trunk.  Next
>> > you'll need to enable the pools by setting the env vars: (example
>> > below for bash)
>> >
>> >   export OSG_TEXTURE_POOL_SIZE=100000000 // size in bytes (100Mb)
>> >   export OSG_BUFFER_OBJECT_POOL_SIZE=200000000 // size in bytes (200Mb)
>> >
>> > Then run your app with some big data, such a large paged database, you
>> > can push the amount of main memory used by enabling the MaxPagedLOD
>> > feature in the DatabasePager via:
>> >
>> >   export OSG_MAX_PAGEDLOD=100000 // keep in memory a maximum of
>> > 100,000 PagedLOD nodes
>> >
>> > You can also set these values programmatically via osg::DisplaySettings.
>> >
>> > A word of warning though, I have almost completely rewritten the way
>> > that the backend that drives texture objects and buffer objects, even
>> > when you don't enable the texture/buffer object pools, the code
>> > managing the GL objects is still completely different. With major
>> > changes like this comes the likelihood of regressions.  I've been
>> > doing a range of tests at my end, but it's still far more limited in
>> > scope to what the community will expose the OSG to, so... there you
>> > may way see problems that I haven't.  The best I can do is endeavor to
>> > get them fixed as quickly as possible, just let me know if you see
>> > something odd and I we can work together to spot what the underlying
>> > problem and squish it.  The more testing we can get the quicker we can
>> > shape the code up to being release quality.
>> >
>> > Have fun with it :-)
>> > Robert.
>> > _______________________________________________
>> > 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
>
> _______________________________________________
> 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

Reply via email to