Re: [ROOT] Problem with <operator new>

From: H. Gillespie (hgillesp@u.washington.edu)
Date: Fri May 19 2000 - 01:54:04 MEST


Hello,

>   OK can you provide further information on your application
>   I concern your "multithread lock".
> 
>   How and where you do intstantiate  ROOT. Do you use any other 
> "third party" 
>   libraries.
> 

ROOT is instanciated in the main (...) like this:

int	main ( int argc, char** argv) 
{
	TROOT simple("GLAST","GLAST Event");
	...
}

I am also using the ACE library, but 'ACE.h' is not included in the
main.cpp file, so that ROOT's static initiation is the only one present
there (Normally ACE would like to redefine main). No calls to the ACE
library are made in my current example. I also statically link against
CLHEP. Everything has been built using the 'Multithreaded DLL' run-time
libraries option.

>  Do you create your "private" DLL to be loaded  with root.exe or 
> you did your own
>   "ROOT-based" application ? Have you your own therads in there?
> 

I am creating a separate DLL containing a set of ROOT classes which
inherit from TObject, then I am linking against that library and
instanciating those classes from my application. No new threads are
created - looking at the process monitor, I can see only one thread as
well.

> Anyway I can not image the multithread lock caused by any "new" operator 
> unless some  part of your code was compiled as "single thread"
> new itself does nothing special just uses the standard 
> subroutines to allocate 
> memory and keep the track of that. (So far we see no complain like
yours)
> 

It seems that somehow I am running out of heap (?). I've rebuilt ROOT with
debug information thanks to your instructions and I see that eventually
the calloc in the new operator call returns 0L when trying to allocate
just 20 bytes! This doesn't make much sense since my machine has plenty of
memory and disk space for a swap file...any help is appreciated.

Thanks again,

Sawyer



This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:25 MET