Rather than changing the policy of an allocator (csBlockAllocator)  
which was designed specifically for automated construction/ 
destruction of vended objects, perhaps it would make more sense  
simply to use a pure heap allocator/manager, such as csMemoryPool or  
CS::Memory::Heap?

-- ES

On Jun 24, 2006, at 7:53 PM, Peter Amstutz wrote:
> If that is the case, then yes, this is exactly the problem that  
> existed
> with the csKDTree -- csBlockAllocator is destroying objects without  
> regard
> for other objects that might be pointing to them, so when those  
> objects
> get destroyed, the program crashes.
>
> This is a recurrent problem that perhaps would be better solved by
> changing the policy of the deallocator (i.e. don't call the  
> destructor,
> like Andrew suggests) than having it keep coming up and having to  
> be fixed
> on a case-by-case basis (for those cases where that is even  
> possible...)
>
> On Sat, 24 Jun 2006, Andrew Mann wrote:
>
>>    The problem is that csBlockAllocator calls destructors of the
>> objects it contains.  I don't know when this would ever be necessary,
>> but in the case of an XML document node tree where the root node  
>> 'leaks'
>> during program execution, the blockallocator enters a loop calling  
>> the
>> destructor on each valid object it contains.  The first object it
>> destructs is the root node, which happens to destruct all other  
>> nodes,
>> but the blockallocator is already in its' destruction loop, so  
>> after the
>> root node (and all other nodes) are fully destructed, it proceeds  
>> on to
>> try and destruct each node again, causing a crash.
>>
>>    In my opinion the block allocator should stick to its' job as a  
>> heap
>> management layer, and leave the object lifecycle management to the  
>> code
>> above it.
>>
>> Andrew/Rhad
>>
>>
>> Peter Amstutz wrote:
>>> -----BEGIN PGP SIGNED MESSAGE-----
>>> Hash: SHA1
>>>
>>> Crystal Space on amd64 Linux, compiled with
>>> - --enable-shared, --enable-debug and --disable-ptmalloc
>>>
>>> I'm getting the following crash on exit in my program.  I recall  
>>> from
>>> diagnosing a similar error in csKDTree that certain static  
>>> variables need
>>> to be destroyed in a specific order when one static variable type  
>>> refers
>>> to another (otherwise you get double-free crashes).  Could that be
>>> happening here?
>>>
>>> (gdb) bt
>>> #0  0x000000000083fe80 in ?? ()
>>> #1  0x00002aaab3bd79ec in ~csRef (this=0x83c538) at ref.h:184
>>> #2  0x00002aaab3bdce04 in ~WrappedChild (this=0x83c538) at  
>>> docwrap.h:114
>>> #3  0x00002aaab3bdce2b in
>>> csBlockAllocator<CS::Plugin::XMLShader::csWrappedDocumentNode::Wrapp 
>>> edChild,
>>> CS::Memory::AllocatorMalloc>::DestroyObject (
>>>      this=0x7d74d0, p=0x83c538, warn=false, invokeDtor=true)
>>>      at blockallocator.h:155
>>> #4  0x00002aaab3bdd033 in
>>> csBlockAllocator<CS::Plugin::XMLShader::csWrappedDocumentNode::Wrapp 
>>> edChild,
>>> CS::Memory::AllocatorMalloc>::DisposeAll (
>>>      this=0x7d74d0, warn_unfreed=false) at blockallocator.h:200
>>> #5  0x00002aaab3bdd0c6 in ~csBlockAllocator (this=0x7d74d0)
>>>      at blockallocator.h:269
>>> #6  0x00002aaab3bd4ceb in
>>> CS::Plugin::XMLShader::csWrappedDocumentNode::WrappedChild::ChildAll 
>>> oc_kill
>>> ()
>>>      at
>>> plugins/video/render3d/shader/shadercompiler/xmlshader/ 
>>> docwrap.cpp:349
>>> #7  0x00002aaab3c0ca28 in csStaticVarCleanup_local (p=0)
>>>      at
>>> plugins/video/render3d/shader/shadercompiler/xmlshader/ 
>>> xmlshader.cpp:37
>>> #8  0x00002aaab3c0cab6 in csXMLShaderCompiler_scfFinalize ()
>>>      at
>>> plugins/video/render3d/shader/shadercompiler/xmlshader/ 
>>> xmlshader.cpp:46
>>> #9  0x00002aaaaada39fd in ~scfSharedLibrary (this=0x55db50)
>>>      at libs/csutil/scf.cpp:273
>>> #10 0x00002aaaaada8126 in
>>> csPDelArrayElementHandler<scfSharedLibrary*>::Destroy
>>>      (address=0x11ffab8) at parray.h:47
>>> #11 0x00002aaaaadaa12f in csArray<scfSharedLibrary*,
>>> csPDelArrayElementHandler<scfSharedLibrary*>,  
>>> CS::Memory::AllocatorMalloc,
>>> csArrayCapacityDefault>::DeleteIndex (this=0x5129d0, n=15) at  
>>> array.h:1046
>>> #12 0x00002aaaaadaa1b8 in scfSharedLibrary::TryUnload  
>>> (this=0x55db50)
>>>      at libs/csutil/scf.cpp:222
>>> #13 0x00002aaaaada59ca in csSCF::UnloadUnusedModules (this=0x512280)
>>>      at libs/csutil/scf.cpp:924
>>> #14 0x00002aaaaada5a41 in ~csSCF (this=0x512280) at
>>> libs/csutil/scf.cpp:765
>>> #15 0x00002aaaaada44fd in csSCF::Finish (this=0x512280)
>>>      at libs/csutil/scf.cpp:884
>>> #16 0x00002aaaaae9073d in csInitializer::DestroyApplication  
>>> (r=0x5727d8)
>>>      at libs/cstool/initapp.cpp:500
>>> #17 0x0000000000404c4c in main (argc=<value optimized out>,
>>>      argv=<value optimized out>) at csplugintest.cc:346
>>>
>>>
>>> [   Peter Amstutz   ][ [EMAIL PROTECTED] ] 
>>> [ [EMAIL PROTECTED]  ]
>>> [Lead Programmer][Interreality Project][Virtual Reality for the  
>>> Internet]
>>> [ VOS: Next Generation Internet Communication][ http:// 
>>> interreality.org ]
>>> [ http://interreality.org/~tetron ][ pgpkey:  pgpkeys.mit.edu   
>>> 18C21DF7 ]
>>> -----BEGIN PGP SIGNATURE-----
>>> Version: GnuPG v1.4.1 (GNU/Linux)
>>>
>>> iD4DBQFEncbwaeHUyhjCHfcRAnQHAJdF7/bXRX1ScJzrNbzUMymugjIXAKCSUQOh
>>> UprK2ZRggFc5WefmnLwfGQ==
>>> =nuRj
>>> -----END PGP SIGNATURE-----
>>>
>>>
>>> Using Tomcat but need to do more? Need to support web services,  
>>> security?
>>> Get stuff done quickly with pre-integrated technology to make  
>>> your job easier
>>> Download IBM WebSphere Application Server v.1.0.1 based on Apache  
>>> Geronimo
>>> http://sel.as-us.falkag.net/sel? 
>>> cmd=lnk&kid=120709&bid=263057&dat=121642
>>> _______________________________________________
>>> Crystal-main mailing list
>>> [email protected]
>>> https://lists.sourceforge.net/lists/listinfo/crystal-main
>>> Unsubscribe: mailto:[EMAIL PROTECTED] 
>>> subject=unsubscribe
>>>
>>
>>
>> Using Tomcat but need to do more? Need to support web services,  
>> security?
>> Get stuff done quickly with pre-integrated technology to make your  
>> job easier
>> Download IBM WebSphere Application Server v.1.0.1 based on Apache  
>> Geronimo
>> http://sel.as-us.falkag.net/sel? 
>> cmd=lnk&kid=120709&bid=263057&dat=121642
>> _______________________________________________
>> Crystal-main mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/crystal-main
>> Unsubscribe: mailto:[EMAIL PROTECTED] 
>> subject=unsubscribe
>>
>
> [   Peter Amstutz   ][ [EMAIL PROTECTED] ] 
> [ [EMAIL PROTECTED]  ]
> [Lead Programmer][Interreality Project][Virtual Reality for the  
> Internet]
> [ VOS: Next Generation Internet Communication][ http:// 
> interreality.org ]
> [ http://interreality.org/~tetron ][ pgpkey:  pgpkeys.mit.edu   
> 18C21DF7 ]
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.1 (GNU/Linux)
>
> iD8DBQFEndCUaeHUyhjCHfcRAjYLAJwLvP/sGDXDTPPmmgYnbrsdB3uVOQCgr+si
> 1xav5h8IjnxjBPQLZLDGtlw=
> =OVir
> -----END PGP SIGNATURE-----
>
>
> Using Tomcat but need to do more? Need to support web services,  
> security?
> Get stuff done quickly with pre-integrated technology to make your  
> job easier
> Download IBM WebSphere Application Server v.1.0.1 based on Apache  
> Geronimo
> http://sel.as-us.falkag.net/sel? 
> cmd=lnk&kid=120709&bid=263057&dat=121642
> _______________________________________________
> Crystal-main mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/crystal-main
> Unsubscribe: mailto:[EMAIL PROTECTED] 
> subject=unsubscribe


Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Crystal-main mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/crystal-main
Unsubscribe: mailto:[EMAIL PROTECTED]

Reply via email to