Hello Simon,

On 09/13/2011 02:10 PM, Simon Bouvier-Zappa wrote:
> I did another test with a simple material below
>
[SNIP - code]
> Here's the stack I retrieved from Instruments
>
> ########################################################################
>    15 MyApp  544.00 KB     (anonymous namespace)::buildMaterial()
>    14 MyApp  544.00 KB     (anonymous namespace)::defaultMaterial()
>    13 libOSGSystem.dylib  544.00 KB
> osg::SimpleMaterial::changed(unsigned long long, unsigned int)
> /Users/sbz/src/OpenSG/Source/System/Material/OSGSimpleMaterial.cpp:160
>    12 libOSGSystem.dylib  544.00 KB
> osg::ChunkMaterial::changed(unsigned long long, unsigned int)
> /Users/sbz/src/OpenSG/Source/System/Material/OSGChunkMaterial.cpp:130
>    11 libOSGSystem.dylib  544.00 KB     osg::Material::changed(unsigned
> long long, unsigned int)
> /Users/sbz/src/OpenSG/Source/System/Material/OSGMaterial.cpp:184
>    10 libOSGSystem.dylib  544.00 KB
> osg::SimpleMaterial::rebuildState()
> /Users/sbz/src/OpenSG/Source/System/Material/OSGSimpleMaterial.cpp:223
>     9 libOSGSystem.dylib  544.00 KB     osg::StateBase::create()
> /Users/sbz/src/OpenSG/Source/System/State/OSGStateBase.inl:79
>     8 libOSGSystem.dylib  544.00 KB     osg::StateBase::shallowCopy()
> const /Users/sbz/src/OpenSG/Source/System/State/OSGStateBase.cpp:123
>     7 libOSGSystem.dylib  544.00 KB     void
> osg::FieldContainer::newPtr<osg::FCPtr<osg::FieldContainerPtr,
> osg::State> >(osg::FCPtr<osg::FieldContainerPtr, osg::State>&,
> osg::FCPtr<osg::FieldContainerPtr, osg::State>::StoredObjectType const*)
> /Users/sbz/src/OpenSG/Source/System/FieldContainer/Impl/OSGFieldContainerImpl.inl:164
>     6 libOSGSystem.dylib  544.00 KB
> osg::FieldContainerFactory::registerFieldContainer(osg::FieldContainerPtr 
> const&)
> /Users/sbz/src/OpenSG/Source/System/FieldContainer/Impl/OSGFieldContainerFactoryImpl.inl:115
>     5 libOSGSystem.dylib  544.00 KB
> std::vector<osg::FieldContainerPtr,
> std::allocator<osg::FieldContainerPtr>
>  >::push_back(osg::FieldContainerPtr const&)
> /Developer/SDKs/MacOSX10.5.sdk/usr/include/c++/4.0.0/bits/stl_vector.h:610
>     4 libOSGSystem.dylib  544.00 KB
> std::vector<osg::FieldContainerPtr,
> std::allocator<osg::FieldContainerPtr>
>  >::_M_insert_aux(__gnu_cxx::__normal_iterator<osg::FieldContainerPtr*,
> std::vector<osg::FieldContainerPtr,
> std::allocator<osg::FieldContainerPtr> > >, osg::FieldContainerPtr
> const&)
> /Developer/SDKs/MacOSX10.5.sdk/usr/include/c++/4.0.0/bits/vector.tcc:275
>     3 libOSGSystem.dylib  544.00 KB
> std::_Vector_base<osg::FieldContainerPtr,
> std::allocator<osg::FieldContainerPtr> >::_M_allocate(unsigned long)
> /Developer/SDKs/MacOSX10.5.sdk/usr/include/c++/4.0.0/bits/stl_vector.h:117
>     2 libOSGSystem.dylib  544.00 KB
> __gnu_cxx::new_allocator<osg::FieldContainerPtr>::allocate(unsigned
> long, void const*)
> /Developer/SDKs/MacOSX10.5.sdk/usr/include/c++/4.0.0/ext/new_allocator.h:88
>     1 libstdc++.6.dylib  544.00 KB     operator new(unsigned long)
>     0 libSystem.B.dylib  544.00 KB     malloc
> ########################################################################

that looks like (assuming I'm reading the output correctly) it is the 
FieldContainerFactory's store of all created FC.
Have you looked at the information on 
http://www.opensg.org/wiki/Tutorial/OpenSG1/Memleak?

> Are ref pointers created for every parameters of the material ?
> Also, is it possible to reset or flush the FieldContainer vector ?

not trivially so, because it is used to map from a container's id to a 
pointer to the container. OpenSG 2 uses a hash map for this data structure.

> We are frequently unloading - reloading 3d models and at the same time
> building
> switch materials of a dozen custom materials.  Memory builds up very
> fast, and
> leaks a little bit at every operation.

hmm, while the FC Factory's vector can get large it should still be 
fairly small compared to geometric data and textures...

> Also, I still have a memory leak with MaterialPtr, but NodePtr and other
> ref counted pointers seem to be freed properly, or at the very least,
> memory leaks do not show in instruments reports.

Are you using a CVS checkout of OpenSG 1.x (from when?) or the 1.9 
release code? If the latter I'd highly recommend using a CVS checkout 
instead, it's seen quite a few bug fixes since 1.8 was released.

        Cheers,
                Carsten

------------------------------------------------------------------------------
BlackBerry&reg; DevCon Americas, Oct. 18-20, San Francisco, CA
Learn about the latest advances in developing for the 
BlackBerry&reg; mobile platform with sessions, labs & more.
See new tools and technologies. Register for BlackBerry&reg; DevCon today!
http://p.sf.net/sfu/rim-devcon-copy1 
_______________________________________________
Opensg-users mailing list
Opensg-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensg-users

Reply via email to