[ROOT] rootfile writing corruption ?

From: jean-roch vlimant (vlimant@lpnhep.in2p3.fr)
Date: Sun Oct 03 2004 - 22:02:33 MEST


Hi,

in on skimming program I do

	TFile * f = TFile::Open("myhisto.root","recreate");
	TTree * QuickDump= new TTree("dump","dump tree");
	Dump * gototree= new Dump();
  	const Int_t bufsize = 32000;
	QuickDump->Branch("dumpbranch","Dump",&gototree,bufsize,2);

then among a lot of code that does not explicitly interact with the 
previous varirables I do

	gototree->field=variable;
	QuickDump->Fill();

and at the end
	
	f->cd();
	QuickDump->Write();
	f->Close();

this gives me a rootuple with the correct information in it. and I have 
no problem interactivly.

However, there is a segfault when I do that in an other program

	TFile * f = TFile::Open("myhisto.root");
	TTree * t= (TTree *)f->Get("dump");
	TBranchElement* tb = (TBranchElement*)t->GetBranch("dumpbranch");
	
	Dump * gototree= new Dump();
	t->SetBranchAddress("dumpbranch",&gototree);
	t->SetBranchStatus("dumpbranch",1);

	t->GetEntry(1);//crashes here
	
gdb catch the crash in

Program received signal SIGSEGV, Segmentation fault.
0x4149d4e2 in TBranchElement::ReadLeaves(TBuffer&) ()
    from 
/d0usr/products/root/Linux-2-4/v3_05_04b_rh71_lockedGCC_3_1-exception-opt-thread/lib/libTree.so

WHILE and this is the interesting point, if I a try with an different 
rootfile and the corresponding object class I get no crash and the 
correct values out of the tree.

What could be wrong in my rootfile or the way I create it ?

cheers
Jean-Roch

-- 
-------
-----------------
VLIMANT Jean-Roch
LPNHE : CNRS - IN2P3 - University of Paris 6
France : 33 1 44 27 23 28
USA : 00 1 630 840 87 40
-----------------
-------
--



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