Re: [ROOT] MakeSelector code produces core dump

From: Rene Brun (Rene.Brun@cern.ch)
Date: Fri Oct 10 2003 - 18:21:48 MEST


Hi Frank,

In your selector.h you have teh definition of the prototypes:
   Bool_t  ProcessCut(Int_t entry);
   void    ProcessFill(Int_t entry);

but you do not have the corresponding implementation in selector.C.
Simply comment the two lines above in selector.h and you should be able to run.
ProcessCut and ProcessFill are not necessary anymore as of version 3.10/01.

Rene Brun

Frank Winklmeier wrote:
> 
> Hi Rene,
> 
> since I was wondering if the problem occurs as well with another gcc I
> tried the following configuration: Red Hat 9.0 + Root 3.10-01 RH9 binaries
> + gcc 3.2.2
> 
> Now I don't get a core dump but still it doesn't work:
> 
> root [1] chain.Process("selector.C+")
> Info in <TUnixSystem::ACLiC>: creating shared library
> /home/frank/analysis/./selector_C.so
> In file included from /home/frank/analysis/file2W2ZxW.h:29,
>                  from /home/frank/analysis/file2W2ZxW.cxx:13:
> /home/frank/analysis/selector.C: In member function `virtual void
>    selector::Begin(TTree*)':
> /home/frank/analysis/selector.C:28: warning: unused parameter `TTree*tree'
> /home/frank/analysis/selector.C: In member function `virtual Bool_t
>    selector::Process(int)':
> /home/frank/analysis/selector.C:51: warning: unused parameter `Int_t
> entry'
> dlopen error: /home/frank/analysis/./selector_C.so: undefined symbol:
> _ZN8selector10ProcessCutEi
> Load Error: Failed to load Dynamic link library
> /home/frank/analysis/./selector_C.so
> In file included from /home/frank/analysis/file2W2ZxW.h:29,
>                  from /home/frank/analysis/file2W2ZxW.cxx:13:
> /home/frank/analysis/selector.C: In member function `virtual void
>    selector::Begin(TTree*)':
> /home/frank/analysis/selector.C:28: warning: unused parameter `TTree*tree'
> /home/frank/analysis/selector.C: In member function `virtual Bool_t
>    selector::Process(int)':
> /home/frank/analysis/selector.C:51: warning: unused parameter `Int_t
> entry'
> /usr/lib/gcc-lib/i386-redhat-linux/3.2.2/../../../crt1.o(.text+0x18): In
> function `_start':
> ../sysdeps/i386/elf/start.S:77: undefined reference to `main'
> /home/frank/analysis/./file2W2ZxW.o(.gnu.linkonce.d._ZTV8selector+0xfc):
> undefined reference to `selector::ProcessCut(int)'
> /home/frank/analysis/./file2W2ZxW.o(.gnu.linkonce.d._ZTV8selector+0x100):
> undefined reference to `selector::ProcessFill(int)'
> collect2: ld returned 1 exit status
> *** Interpreter error recovered ***
> Error in <TSelector::GetSelector>: file selector.C+ does not have a valid
> class deriving from TSelector
> (Int_t)(-1)
> 
> I attatched the selector.C and .h file.
> 
> Thanks
> Frank Winklmeier
> 
> On Fri, 10 Oct 2003, Rene Brun wrote:
> 
> > Frank,
> >
> > Could you send me your selector.h and selector.C files ?
> >
> > Rene Brun
> >
> > On Thu, 9 Oct
> > 2003, Frank Winklmeier wrote:
> >
> > > Hi,
> > >
> > > I always get a core dump when I am trying to run an analysis macro that
> > > was created via MakeSelector() in the compiled mode.
> > >
> > > First I loaded some root files into a chain and then I did the following
> > > commands:
> > >
> > > root [1] chain.MakeSelector("selector")
> > > Info in <TTreePlayer::MakeClass>: Files: selector.h and selector.C
> > > generated from Tree: h45
> > > (Int_t)0
> > > root [2] chain.Process("selector.C")
> > > (Int_t)0
> > > root [3] chain.Process("selector.C+")
> > >
> > > Warning in <ACLiC>: script has already been loaded in interpreted mode
> > > Warning in <ACLiC>: unloading /home/frank/analysis/./selector.C and
> > > compiling it
> > > Info in <TUnixSystem::ACLiC>: creating shared library
> > > /home/frank/analysis/./selector_C.so
> > > Note: Link requested for undefined class TBrowser (ignore this message)
> > > FILE: LINE:0
> > > Note: Link requested for undefined class TMethod (ignore this message)
> > > FILE: LINE:0
> > > Note: Link requested for undefined class TTimer (ignore this message)
> > > FILE: LINE:0
> > >
> > > [...]
> > >
> > > Note: Link requested for undefined class TMatrix (ignore this message)
> > > FILE: LINE:0
> > > Note: Link requested for undefined class TMatrixD (ignore this message)
> > > FILE: LINE:0
> > > Error in <ACLiC>: Dictionary generation failed with a core dump!
> > > Error in <TSelector::GetSelector>: file selector.C+ does not have a valid
> > > class deriving from TSelector
> > > (Int_t)(-1)
> > > root [4]
> > >
> > >
> > > So, the program is running in interpreted mode but not in the compiled
> > > version. Do I miss any steps before I can run the program in the compiled
> > > version? Remember, I did not change anything in the files selector.C and
> > > .h between the generation and the run.
> > > I am using RooT 3.10-01 and gcc 2.95.3 on Mandrake 8.
> > >
> > > Thanks for your help.
> > > Frank
> > >
> >
> 
>   --------------------------------------------------------------------------------
>                  Name: selector.h
>    selector.h    Type: Plain Text (TEXT/PLAIN)
>              Encoding: BASE64
> 
>                  Name: selector.C
>    selector.C    Type: Plain Text (TEXT/PLAIN)
>              Encoding: BASE64



This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:16 MET