Hello Philippe, > Hi Valery, > > TFileSet::TFileSet current has to receveive a first argument > containing a '/'. > I.e. your example would works with > TString name("./ATLAS") > TFileSet fs(name) > > This is due to the lines: > It is not correct since "setname" is second parameter. That is omitted above. By this reason it is "default" However I agree with your comment. The code must be protected against of such things properly. > if (!setname) {setname = strrchr(name,'/')+1;} > if (setname) SetName(setname); > else SetName(name); > > The test on the second line is incorrect because the > first line sets 'setname' to 1 when there are no '/'. Anyway this bug should not cause the behaviour I am observing under Root 3.00.06 at CERN and doesn'r explain the problem that Christian found. Thank you, Valeri > Philippe. > > A possible patch is: > > > cvs diff star/src/TFileSet.cxx > Index: star/src/TFileSet.cxx > =================================================================== > RCS file: /user/cvs/root/star/src/TFileSet.cxx,v > retrieving revision 1.2 > diff -r1.2 TFileSet.cxx > 63c63,66 > < if (!setname) {setname = strrchr(name,'/')+1;} > --- > > if (!setname) { > > setname = strrchr(name,'/'); > > if (setname) setname++; > > } > > > > -----Original Message----- > From: owner-roottalk@pcroot.cern.ch > [mailto:owner-roottalk@pcroot.cern.ch]On Behalf Of Valeri Fine (Faine) > Sent: Monday, March 12, 2001 3:07 PM > To: Christian Holm Christensen > Cc: roottalk@pcroot.cern.ch > Subject: Re: [ROOT] Request for iteration on TSystemDirectory > > > > > > > > > Uh. When I do > > > > > > root> gSystem->Load("libStar.so"); > > > root> TString home("/home/group/user") > > > root> TFileSet myHome(home) > > > > > > it hangs! That is, nothing happens. ROOT/CINT doen't do anything (I > > > let it sit there for at least ~30 minutes). Even if I do > > > > > > root> TFileSet myhome("/home/group/user", "foo", kFALSE) > > > > > > nothing (and I really mean nothing!) happens. What's up? > > > > > > > I still have no 3.00.06 locally. Mean time I tried 3.00.05 > > and found no problem: > > I've tried this example at CERN under ROOT 3.00.06 and found: > > Starting program: > /afs/cern.ch/na49/library.4/ROOT/new/i386_redhat60/root//bin/root.exe -b > ******************************************* > * * > * W E L C O M E to R O O T * > * * > * Version 3.00/06 12 March 2001 * > * * > * You are welcome to visit our Web site * > * http://root.cern.ch * > * * > ******************************************* > > Compiled with thread support. > > CINT/ROOT C/C++ Interpreter version 5.14.79, Feb 24 2001 > Type ? for help. Commands must be C++ statements. > Enclose multiple statements between { }. > root [0] gSystem->Load("libStar") > root [1] TString name("ATLAS") > root [2] TFileSet fs(name) > > Program received signal SIGSEGV, Segmentation fault. > 0x400fde3b in TString::operator= () > from > /afs/cern.ch/na49/library.4/ROOT/new/i386_redhat60/root//lib/libCore.so > (gdb) where 5 > #0 0x400fde3b in TString::operator= () > from > /afs/cern.ch/na49/library.4/ROOT/new/i386_redhat60/root//lib/libCore.so > #1 0x400ed130 in TNamed::SetName () > from > /afs/cern.ch/na49/library.4/ROOT/new/i386_redhat60/root//lib/libCore.so > #2 0x40cfd21e in TFileSet::TFileSet () > from > /afs/cern.ch/na49/library.4/ROOT/new/i386_redhat60/root//lib/libStar.so > #3 0x40d344dc in G__TFileSet_TFileSet_1_0__FP8G__valuePCcP8G__parami () > from > /afs/cern.ch/na49/library.4/ROOT/new/i386_redhat60/root//lib/libStar.so > #4 0x404722f3 in G__call_cppfunc () > from > /afs/cern.ch/na49/library.4/ROOT/new/i386_redhat60/root//lib/libCint.so > (More stack frames follow...) > (gdb) > > Any idea ? > > > > > [rcf] ~/public/expert/root > root.exe -b > > ******************************************* > > * * > > * * > > * Version 3.00/05 5 March 2001 * > > * * > > * * > > ******************************************* > > root [0] gSystem->Load("libStar") > > (int)0 > > root [1] TString a("~/public/expert") > > root [2] TFileSet fs(a) > > root [3] fs.ls(8) > > 0 - expert directory > > 1 - expert/Jeff directory > > 2 - expert/Jeff/SavePrim.C file > > 2 - expert/Jeff/myTestFile.C file > > 1 - expert/C++Fun directory > > > > > > How deep is your ("/home/group/user") ? > > Are you sure it is not running around the globe follow the symbolic > > links for example.It may take a while I think. > > I have found one has to protect this class against of "black hole deep" > > directories. > > > > Some thing like this: > > > > Replace ctor: > > > > TFileSet(const TString &dirname,const Char_t *setname,Bool_t expand) > > > > with > > > > TFileSet(const TString &dirname,const Char_t *setname,Bool_t expand, Int_t > maxDeep=10) > > { > > if (!maxDeep) return; > > . . . > > > > > > and replace: > > > > Add(new TFileSet(nextdir,name,kFALSE)); > > with > > Add(new TFileSet(nextdir,name,kFALSE,maxDeep-1)); > > > > Thank you, > > Valeri > > > > > >
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:39 MET