Aihong, The line where your program crashes in TBuffer.cxx (line 2068) does not exists in the official version of Root. My guess is that you use the modified version of TBuffer::WriteObject from Victor. If this is the case, see with him what is the problem. I repeat that your program works correctly with the standard version of Root. Rene Brun Aihong Tang wrote: > > Hi, Rene: > > Yes I shoud delete graph1 and graph2, but that does not help. > Following is what I got (on linux) : > > [rcas6008] /star/rcf/scratch/aihong/producePar/treetest > gdb `which > root4star` > GNU gdb 4.17 > Copyright 1998 Free Software Foundation, Inc. > GDB is free software, covered by the GNU General Public License, and you > are > welcome to change it and/or distribute copies of it under certain > conditions. > Type "show copying" to see the conditions. > There is absolutely no warranty for GDB. Type "show warranty" for > details. > This GDB was configured as "i686-pc-linux-gnu"... > (gdb) run > Starting program: > /afs/rhic/star/packages/DEV00/.i386_redhat61/bin/root4star > ******************************************* > * * > * W E L C O M E to R O O T * > * * > * Version 2.24/05 17 June 2000 * > * * > * You are welcome to visit our Web site * > * http://root.cern.ch * > * * > ******************************************* > > CINT/ROOT C/C++ Interpreter version 5.14.40, May 21 2000 > Type ? for help. Commands must be C++ statements. > Enclose multiple statements between { }. > > Welcome to the ROOT tutorials > > Type ".x demos.C" to get a toolbar from which to execute the demos > > Type ".x demoshelp.C" to see the help window > > *** Start at Date : 27-Jun-2000 Time : 8:56:9 *** > QAInfo:You are using STAR_LEVEL : dev, ROOT_LEVEL : 2.24.05 and node : > rcas6008.rcf.bnl.gov > root4star [0] .x treetest.C > > Program received signal SIGSEGV, Segmentation fault. > 0x400814b1 in TBuffer::WriteObject (this=0x93ec880, obj=0x0, flag=0) > at .i386_redhat61/root/obj/base/src/TBuffer.cxx:2068 > 2068 Int_t topTKey = (topLevel && > strcmp("TKey",obj->ClassName())==0); > (gdb) > > I am completlely stuck, any help will be appreciated. > > Thanks! > > Aihong > > On Tue, 27 Jun 2000, Rene Brun wrote: > > > Aihong, > > I cannot reproduce your problem. > > > > Note that there is something strange in your loop. > > You should either delete graph1 and graph2 in the loop or move > > the constructors outside the loop. > > > > Rene Brun > > > > Aihong Tang wrote: > > > > > > Hi, > > > > > > To simulate a crash recently found in my code, I wrote a simple code > > > treetest.C. > > > > > > The following code runs ok in root 2.23.12 but crashes in root 2.24.05, > > > could anybody tell me the reason and how to fix it ? > > > > > > I saw it on linux machine. > > > > > > Thanks! > > > > > > Aihong > > > > > > void treetest(){ > > > Int_t bufSize=32000; > > > Int_t splitLevel=0; > > > > > > TFile* file = new TFile("File.root", "RECREATE"); > > > TTree* tree = new TTree("Tree", "A Foo Tree"); > > > TObjArray* theArray= 0; > > > > > > TBranch* br=tree->Branch("tree","TObjArray", &theArray, > > > bufSize,splitLevel); > > > > > > for (Int_t j=0; j < 10; j++){ > > > > > > theArray=new TObjArray(); > > > > > > TGraph* graph1 = new TGraph(); > > > TH1F* graph2 = new TH1F("foo","foo",0,10,10); > > > > > > for (Int_t i = 0; i < 10; i++) { > > > graph1->SetPoint(i, i, i+1); > > > graph2->Fill(i); > > > } > > > > > > theArray->AddLast(graph1); > > > theArray->AddLast(graph2); > > > > > > tree->Fill(); // <========crash here > > > } > > > > > > // tree->Print(); > > > tree->Write(); > > > file->Close(); > > > > > > > > > } > >
This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:29 MET