Re: [ROOT] GCC Optimisation and SIGSEGV from TTree::Scan

From: Fons Rademakers (Fons.Rademakers@cern.ch)
Date: Mon Jul 16 2001 - 14:40:47 MEST


Hi Christian,

  did you recompile ROOT yourself with -O2 or is in all cases ROOT compiled
with -O and only your app with -O2?

My main development platform has been for the last year and a half a dual CPU
with RH6.1 and egcs 2.91.66. But then again I only use -O.

Cheers, Fons.



Christian Holm Christensen wrote:
> 
> Hi ROOT'ers et al,
> 
> I'm experiencing a very strange error when I compile a class for
> handling a ROOT file with a TTree in it.  Basically the class opens a
> TFile and creates a TTree in it.
> 
> On a single processor i386, running GNU/Linux (Redhat 6.2), using 2nd
> level optimisation (-O2), ROOT 3.01/06, everything works fine.
> 
> On a dual processor i386, runnning GNU/Linux (Redhat 6.1), using the
> same optimisation and ROOT version, the class crashed with SIGSEGV
> after lines like:
> 
>     fTree = new TTree("T","BRAT Event Tree");
>     fTree->SetAutoSave(5000000);  // autosave when 5 Mbyte written
> 
> Running the program in the debugger says that the SIGSEGV comes from
> 
>     0x413f509f in TTreePlayer::Scan ()
> 
> and a trace gives
> 
>     #0  0x413f509f in TTreePlayer::Scan ()
>     from /afs/rhic/opt/brahms/new/lib/libTreePlayer.so
>     #1  0x40a20a91 in TTree::Scan ()
>     from /afs/rhic/opt/brahms/new/lib/libTree.so.3.01
>     #2  0x40dc86bf in BrEventIO::InitializeRootTreeFile ()
> 
> (BrEventIO is the class in question).  Now, looking through the code,
> I see absolutly no where where the message TTree::Scan is send.  The
> code continues like
> 
>     BrEvent *dummy = new BrEvent("ev",0,0);
>     fBranch = fTree->Branch("event","BrEvent", &dummy,fBufsize,fSplit);
>     delete dummy;
> 
> Then I tried to compile the class in question on the SMP GNU/Linux
> machine with only first level optimisation (-O1) and no optimisation,
> and everything works smoothly.
> 
> I know the compiler on Redhat 6.1 is really old
> 
>     gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)
> 
> and probably a newer compiler will do the trick.  However, that is not
> an option in our case.  Also, when I compiled ROOT I used the
> linuxegcs configuration which also only has 1st level optimisation.
> 
> I searched ROOT talk for anything pertaining to the GCC optimisation,
> but only found
> 
>   http://root.cern.ch/cgi-bin/print_hit_bold.pl/root/roottalk/roottalk00/2581.html?Optimization#first_hit
> 
> which seems to be the same problem, but Rene's answer that didn't
> really help much (quite understandable, since this is probably a very
> compiler/os/machine specific thing).
> 
> So the question is: Has anyone else seen this?  Does anyone know what
> could be wrong?
> 
> And also: Heads up to those using Redhat 6.1 on an SMP machine!
> 
> Yours,
> 
> Christian  -----------------------------------------------------------
> Holm Christensen                             Phone:  (+45) 35 35 96 91
>   Sankt Hansgade 23, 1. th.                  Office: (+45) 353  25 305
>   DK-2200 Copenhagen N                       Web:    www.nbi.dk/~cholm
>   Denmark                                    Email:       cholm@nbi.dk

-- 
Org:    CERN, European Laboratory for Particle Physics.
Mail:   1211 Geneve 23, Switzerland
E-Mail: Fons.Rademakers@cern.ch              Phone: +41 22 7679248
WWW:    http://root.cern.ch/~rdm/            Fax:   +41 22 7677910



This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:52 MET