Re: [ROOT] Request for iteration on TSystemDirectory

From: Valeri Fine (Faine) (fine@bnl.gov)
Date: Mon Mar 12 2001 - 22:07:29 MET


> > 
> > 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