Dear Rooters
I have the following situation:
First I open an existing file "fDataFile" which contains some data
trees. In a first step I add these trees as friends to a tree "fTree".
Then I create a new file "fFile" where the result tree "atree" should be
stored. Later, I create the result tree "atree" in a class method.
After filling "atree" I want to add "atree" as friend to fTree, too.
The relevant code fragment of the method looks like this:
TTree *atree = new TTree(treename, "");
// fill atree
fFile->cd();
atree->Write();
fTree->AddFriend(atree->GetName(), fFile->GetName());
In this case AddTree() results in the following message:
Warning in <TFile::Init>: file /Users/cs/ROOT/rootcode/tmp.root probably
not closed, trying to recover
Info in <TFile::Recover>: /Users/cs/ROOT/rootcode/tmp.root, recovered
key TTree:Test at address 350
Warning in <TFile::Init>: successfully recovered 1 keys
Nevertheless, everything works fine including the call to the
destructors, where I delete "fDataFile" with "SafeDelete(fDataFile)".
In contrast, when I add "atree" as friend using:
fTree->AddFriend(atree->GetName(), fFile);
everything works fine until I call the destructors.
When I try to delete "fDataFile" with "SafeDelete(fDataFile)" then
root crashes beyond recovery with "*** Break *** bus error"
However, if I remove "atree" after usage by calling in a different method
fTree->RemoveFriend(atree);
then everything works fine again and I can call "SafeDelete(fDataFile)"
in the destructor.
Does anybody have an idea what might be the reason for this behavior?
(I am afraid ths code is too complex to extract a simple macro.)
Thank you in advance
Best regards
Christian
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
C.h.r.i.s.t.i.a.n. .S.t.r.a.t.o.w.a
V.i.e.n.n.a. .A.u.s.t.r.i.a
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:08 MET