Hello Can you check your problem is still persisting with Qt-evaluation version of ROOT http://www.usatlas.bnl.gov/~fine/QtRootDownload.html and let me know. Mean time I'll try your example ( as soon as I reach my office table). Thank you, Valeri ----- Original Message ----- From: <eoltman@imagoscientific.com> To: <roottalk@pcroot.cern.ch> Sent: Saturday, February 02, 2002 8:32 AM Subject: [ROOT] Unexpected behavior of object's destructor: interpreted, on stack > Hello, > > I have observed strange destructor behavior for an > object I wrote. (I have included a simple class that > demonstrates the problem): > > 1. If the interpreted object is created on the stack, > it usually causes root to crash, but not always - > see two root sessions below (taken in sequence > w/out any intervening commands) > > 2. Problem does NOT occur if object is created > on the heap when I delete it > > 3. The problem does NOT occur when I compile > (e.g. replace .L test.cpp w/ .L test.cpp++) > > I am using Root V3.2/07 on Windows XP. > > Any idea why this behavior? > > Thanks, > Ed Oltman > > ================ sample root sessions ================== > > C:\BowlV>root > the current keyboard layout is 437 > ******************************************* > * * > * W E L C O M E to R O O T * > * * > * Version 3.02/07 10 January 2002 * > * * > * You are welcome to visit our Web site * > * http://root.cern.ch * > * * > ******************************************* > > Compiled for win32. > > CINT/ROOT C/C++ Interpreter version 5.15.25, Jan 6 2002 > Type ? for help. Commands must be C++ statements. > Enclose multiple statements between { }. > root [0] .L test.cpp > root [1] Demo p > root [2] TCanvas *c = new TCanvas() > root [3] p.Make() > ********** > ** 1 **SET ERR 1 > ********** > root [4] p.Draw() > root [5] .q > > C:\BowlV>root > the current keyboard layout is 437 > ******************************************* > * * > * W E L C O M E to R O O T * > * * > * Version 3.02/07 10 January 2002 * > * * > * You are welcome to visit our Web site * > * http://root.cern.ch * > * * > ******************************************* > > Compiled for win32. > > CINT/ROOT C/C++ Interpreter version 5.15.25, Jan 6 2002 > Type ? for help. Commands must be C++ statements. > Enclose multiple statements between { }. > root [0] .L test.cpp > root [1] Demo p > root [2] TCanvas *c = new TCanvas() > root [3] p.Make() > ********** > ** 1 **SET ERR 1 > ********** > root [4] p.Draw() > root [5] .q > Error: Symbol i is not defined in current scope FILE:C:\BowlV\test.cpp LINE:27 > *** Interpreter error recovered *** > > C:\BowlV> > > --Then I get a "root.exe has encountered a problem and needs to > close..." > box... > > ================ demonstration class ================== > > #include <string.h> > #include <stdio.h> > #include <stdlib.h> > #include "TGraph.h" > #include "TCanvas.h" > #include "TPad.h" > #include "TROOT.h" > #include "TF1.h" > class Demo > { > private: > TGraph *m_pGraph[3]; > bool noCanvas(); > public: > Demo(); > ~Demo(); > void Make(); > void Draw(); > #if !defined(__CINT__) || defined(__MAKECINT__) > ClassDef(Demo,0) > #endif > }; > #if !defined(__CINT__) || defined(__MAKECINT__) > ClassImp(Demo) > #endif > Demo::Demo() > { > for (int i=0;i<3;i++) m_pGraph[i]=0; > } > Demo::~Demo() > { > for(int i=0;i<3;i++)if (m_pGraph[i]) delete m_pGraph[i]; > } > void Demo::Make() > { > double x[20],y[20]; > for(int i=0;i<20;i++) x[i] = 6.283*i/20.; > for(i=0;i<3;i++) > { > if (m_pGraph[i]) delete m_pGraph[i]; > for(int j=0;j<20;j++) y[j] = sin(x[j] + .5*i); > m_pGraph[i] = new TGraph(20,x,y); > m_pGraph[i]->SetMarkerColor(1+i); > m_pGraph[i]->SetMarkerStyle(20); > > // now, fit graph... > TF1 *pf = new TF1("fit","sin(x+[0])",0.,6.283); > m_pGraph[i]->Fit(pf,"qw"); > delete pf; > } > } > void Demo::Draw() > { > if (noCanvas()) return; > gPad->GetCanvas()->Clear(); > m_pGraph[0]->Draw("AP"); > for(int i=1;i<3;i++) > { > m_pGraph[i]->Draw("P"); > } > } > bool Demo::noCanvas() > { > if (gROOT->GetListOfCanvases()->IsEmpty()) > { > printf(" No canvas exists: Please create one...\n"); > return true; > } > return false; > } > >
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:40 MET