Re: [ROOT] MakeSelector code produces core dump

From: Clark McGrew (clark.mcgrew@sunysb.edu)
Date: Wed Oct 15 2003 - 17:58:08 MEST


Hello,

I've been bitten by a similar problem as Frank is reporting (using
3.10/01).  Would it be possible to either remove ProcessCut [and Fill]
from the header generated by MakeSelector, or add definitions to the
generated source?

Thanks,
Clark

On Fri, 2003-10-10 at 12:21, Rene Brun wrote:
> 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
-- 
Clark McGrew	                Univ. at Stony Brook, Physics and Astronomy
<clark.mcgrew@sunysb.edu>	631-632-8299



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