[ROOT] memory leak in canvas creation / deletion ?

From: eric.anciant@noos.fr
Date: Thu Aug 19 2004 - 22:21:08 MEST

Hello rooters,

I have in fact two questions one leading to the second one :

Question 1 :

Using ROOT 4.00/08 with GDK on WIN2000

  *   Version   4.00/08       9 July 2004   *
Compiled for win32.
CINT/ROOT C/C++ Interpreter version 5.15.138, May 23 2004

I suspect a weird memory leak when drawing canvas : I have an 
application that display a few canvas (in fact 3) in which I draw and 
updates graphs and histograms over hours, meanwhile the memory usage of 
the application grows slowly but constantly ( from about 20 M to 100's 
of Meg, eventually crashing the system). I am quite confident with the 
rest of the code, because if I remove the drawing of the canvas (keeping 
creation/deletion of histograms and graphs), the leak doesn't appear, 
and because of the funniest part : If I iconify the 3 canvases 
(graphically using the mouse) the memory usage of the application 
suddently drops to very low (and to what I would expect the application 
memory usage to be; a few megs ), and then starts again to grow .... 
until I de-iconify and re-iconify again the canvases...
It looks to me more like a GDK / microsoft-windows low level interaction 
than a root problem, did somebody have seen something equivalent ?

Question 2 :

I therefore tried a few things at home on Linux box; namely :

macro1 :
TCanvas* c;
int i;
for (i=0; i< 10000; i++) {
   c = new TCanvas();
   delete c;

macro2 :
TH2D* h;
int j;
for (j=0; j<10000; j++ ) {
   h = new TH2D("h","h",1000,0,1,1000,0,1);
   delete h;

macro1 shows a memory usage of root.exe that grows constantly,
macro2 shows a (though oscillating ..) steady memory usage.

Is this the expected behaviour ?


This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:09 MET