Hi,
I ran root with gdb in order to attack my MakeSelector problem:
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("libTestStand.so");
root [1] TFile f("batch-1063.root");
root [2] TTree* tree = (TTree*)f.Get("T");
root [3] tree->Process("SimpleSelector.C+", "fillList");
Creating shared library
/home/kordosky/work/devel/maketree/./SimpleSelector_C.so
Class SimpleSelector: Streamer() not declared
Class SimpleSelector: ShowMembers() not declared
Program received signal SIGSEGV, Segmentation fault.
0x200003387c4 in TClass::BuildRealData ()
from /home/kordosky/root.3.00.06/lib/libCore.so.3.00
(gdb) info stack
#0 0x200003387c4 in TClass::BuildRealData ()
from /home/kordosky/root.3.00.06/lib/libCore.so.3.00
#1 0x20001461a34 in TBranchObject::SetAddress ()
from /home/kordosky/root.3.00.06/lib/libTree.so.3.00
#2 0x2000147f894 in TTree::SetBranchAddress ()
from /home/kordosky/root.3.00.06/lib/libTree.so.3.00
#3 0x200034a9c58 in SimpleSelector::Init ()
from /home/kordosky/work/devel/maketree/./SimpleSelector_C.so
#4 0x200034aa344 in SimpleSelector::Begin ()
from /home/kordosky/work/devel/maketree/./SimpleSelector_C.so
#5 0x2000337d178 in TTreePlayer::Process ()
from /home/kordosky/root.3.00.06/lib/libTreePlayer.so
#6 0x2000337cfcc in TTreePlayer::Process ()
from /home/kordosky/root.3.00.06/lib/libTreePlayer.so
#7 0x2000147f0b4 in TTree::Process () from
/home/kordosky/root.3.00.06/lib/libTree.so.3.00
#8 0x200014957ac in G__TTree_Process_2_8__FP8G__valuePCcP8G__parami ()
from /home/kordosky/root.3.00.06/lib/libTree.so.3.00
#9 0x200008ff774 in G__call_cppfunc () from
/home/kordosky/root.3.00.06/lib/libCint.so.3.00
#10 0x200008e68e8 in G__interpret_func ()
from /home/kordosky/root.3.00.06/lib/libCint.so.3.00
#11 0x200008c64b0 in G__getfunction () from
/home/kordosky/root.3.00.06/lib/libCint.so.3.00
#12 0x2000097d808 in G__getstructmem () from
/home/kordosky/root.3.00.06/lib/libCint.so.3.00
#13 0x20000976698 in G__getvariable () from
/home/kordosky/root.3.00.06/lib/libCint.so.3.00
#14 0x200008becd0 in G__getitem () from
/home/kordosky/root.3.00.06/lib/libCint.so.3.00
#15 0x200008bd4b0 in G__getexpr () from
/home/kordosky/root.3.00.06/lib/libCint.so.3.00
#16 0x2000091e4d8 in G__exec_function () from
/home/kordosky/root.3.00.06/lib/libCint.so.3.00
#17 0x20000927f00 in G__exec_statement ()
from /home/kordosky/root.3.00.06/lib/libCint.so.3.00
#18 0x200008a024c in G__exec_tempfile () from
/home/kordosky/root.3.00.06/lib/libCint.so.3.00
#19 0x200009348c0 in G__process_cmd () from
/home/kordosky/root.3.00.06/lib/libCint.so.3.00
#20 0x20000330314 in TCint::ProcessLine ()
from /home/kordosky/root.3.00.06/lib/libCore.so.3.00
#21 0x200002697f4 in TApplication::ProcessLine ()
from /home/kordosky/root.3.00.06/lib/libCore.so.3.00
#22 0x200017aaa08 in TRint::HandleTermInput ()
from /home/kordosky/root.3.00.06/lib/libRint.so.3.00
#23 0x200017a91a4 in TTermInputHandler::Notify ()
from /home/kordosky/root.3.00.06/lib/libRint.so.3.00
#24 0x200017aad80 in TTermInputHandler::ReadNotify ()
from /home/kordosky/root.3.00.06/lib/libRint.so.3.00
#25 0x2000038e81c in TUnixSystem::CheckDescriptors ()
from /home/kordosky/root.3.00.06/lib/libCore.so.3.00
#26 0x2000038ddbc in TUnixSystem::DispatchOneEvent ()
from /home/kordosky/root.3.00.06/lib/libCore.so.3.00
#27 0x200002e8c14 in TSystem::InnerLoop ()
from /home/kordosky/root.3.00.06/lib/libCore.so.3.00
#28 0x200002e8b54 in TSystem::Run () from
/home/kordosky/root.3.00.06/lib/libCore.so.3.00
#29 0x2000026a414 in TApplication::Run ()
from /home/kordosky/root.3.00.06/lib/libCore.so.3.00
#30 0x200017aa320 in TRint::Run () from
/home/kordosky/root.3.00.06/lib/libRint.so.3.00
---Type <return> to continue, or q <return> to quit---
#31 0x120000b80 in main ()
(gdb) help
The seg fault looks like it comes from BuildRealData(), but perhaps that
is due to a mistake by SetAddress(). The Init() method is exactly what is
produced by MakeSelector. I did notice one odd looking call in there:
fChain->SetBranchAddress("HistRef",(void*)-1);
HistRef is my own class in a split branch. That class has only basic data
types.
Thanks!
Mike Kordosky
On Mon, 9 Apr 2001, Rene Brun wrote:
> Hi Mike,
>
> Difficult to make a diagnostic without having your code. It looks like an
> unitialized variable somewhere.
> It would also help if you could send the result of the debugger traceback
> when you get the seg fault, eg on Linux, run under gdb
> gdb root.exe
> root > tree->Process(....)
> here you get the crash
> gdb > info stack
>
> Rene Brun
>
>
> Mike Kordosky wrote:
> >
> > Hi,
> >
> > I am using the TTree::MakeSelector method to analyze some data that I have
> > in a TTree. It seems that when I initially have root compile the selector
> > code, I get a seg fault. The shared library does get created though, and
> > further root sessions don't produce any problems. Here is a sample
> > session:
> >
> > *******************************************
> > * *
> > * W E L C O M E to R O O T *
> > * *
> > * Version 3.00/06 3 April 2001 *
> > * *
> > * You are welcome to visit our Web site *
> > * http://root.cern.ch *
> > * *
> > *******************************************
> >
> > FreeType Engine v1.x used to render TrueType fonts.
> >
> > 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("libTestStand.so");
> > root [1] TFile m3file("batch-1063.root");
> > root [2] TTree* tree = (TTree*)m3file.Get("T");
> > root [3] tree->Process("SimpleSelector.C+","fillList");
> > Creating shared library
> > /home/kordosky/work/devel/maketree/./SimpleSelector_C.soClass
> > SimpleSelector: Streamer() not declared
> > Class SimpleSelector: ShowMembers() not declared
> >
> > *** Break *** segmentation violation
> > Root > tree->Process("SimpleSelector.C+","fillList");
> > Unmodified script has already been compiled and loaded.
> > Starting SimpleSelector Analysis with Option: fillList
> > Before Histogram
> > Before HistRef
> > After HistRef
> > <TCanvas::MakeDefCanvas>: created default TCanvas with name c1
> > root [5] .q
> > alpha2:/home/kordosky/work/devel/maketree# root
> > *******************************************
> > * *
> > * W E L C O M E to R O O T *
> > * *
> > * Version 3.00/06 3 April 2001 *
> > * *
> > * You are welcome to visit our Web site *
> > * http://root.cern.ch *
> > * *
> > *******************************************
> >
> > FreeType Engine v1.x used to render TrueType fonts.
> >
> > 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("libTestStand.so");
> > root [1] TFile m3file("batch-1063.root");
> > root [2] TTree* tree = (TTree*)m3file.Get("T");
> > root [3] tree->Process("SimpleSelector.C+","fillList");
> > Starting SimpleSelector Analysis with Option: fillList
> > Before Histogram
> > Before HistRef
> > After HistRef
> > <TCanvas::MakeDefCanvas>: created default TCanvas with name c1
> > root [4] PostScript file: c1.ps has been created
> >
> > My tree entry does contain a (split) class called HistRef, which I load
> > via gSystem->Load(...) above. I include HistRef.h in the SimpleSelector.h
> > file. Perhaps this is causing some of the problems? I actually don't care
> > about this one segfault, since I think that during the second session I
> > am running at compiled speed and the seg fault only seems to happen once.
> > Anyone got any ideas?
> >
> > Thanks!
> >
> > Mike Kordosky
>
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:41 MET