Hi Mathieu, I guess scoping issues in CINT . Bring the TCut declarations out of the loop: void start() { int max=30; int iterator=0; TCut cut1; TCut cut2; TCut cut; while(iterator!=max) { if(iterator<10 || iterator>20) // <--- ********* { cout<<"hello: "<<iterator<<endl; TString str_cut1="detCEL==1"; cut1=str_cut1; TString str_cut2="sampCEL==2"; cut2=str_cut2; cut = cut1 && cut2; // <--- ********* } ++iterator; } } Eddy --- Matthieu LECHOWSKI <lechowsk@lal.in2p3.fr> wrote: > Hello, > > One of my macros crashes, and I can reproduce the > problem in this little > simple example: > > void start() > { > int max=30; > int iterator=0; > while(iterator!=max) > { > if(iterator<10 || iterator>20) // <--- > ********* > { > cout<<"hello: "<<iterator<<endl; > TString str_cut1="detCEL==1"; > TCut cut1=str_cut1; > TString str_cut2="sampCEL==2"; > TCut cut2=str_cut2; > TCut cut = cut1 && cut2; // <--- ********* > } > ++iterator; > } > } > Try to execute this and you will have the "break > segmentation violation" > below, but: > - if you comment the line TCut cut = cut1 && cut2; > OR > - if you do not make the cut (10->20) in the loop > then it works !! > Hard to believe it... > Maybe I don't use correctly the TCuts (not a big > experience with them) ? In > my macro, I retrieve a ntuple and want draw > variables (as "detCEL" and > "sampCEL") with cuts. > > Could you help me ?? > > Matthieu. > > PS: I'm working on lxplus with > ROOTSYS=/afs/cern.ch/sw/root/v3.10.02/rh73_gcc2952/root > > *** Break *** segmentation violation > Generating stack trace... > 0x406dcc84 in G__exec_asm + 0x1714 from > /afs/cern.ch/sw/root/v3.10.02/rh73_gcc2952/root/lib/libCint.so > 0x406cdee5 in G__exec_loop + 0x4d9 from > /afs/cern.ch/sw/root/v3.10.02/rh73_gcc2952/root/lib/libCint.so > 0x406ce0fa in G__exec_while + 0x82 from > /afs/cern.ch/sw/root/v3.10.02/rh73_gcc2952/root/lib/libCint.so > 0x406d0f7e in G__exec_statement + 0x289a from > /afs/cern.ch/sw/root/v3.10.02/rh73_gcc2952/root/lib/libCint.so > 0x406a1eb4 in G__interpret_func + 0x20c0 from > /afs/cern.ch/sw/root/v3.10.02/rh73_gcc2952/root/lib/libCint.so > 0x406872ae in G__getfunction + 0x1f86 from > /afs/cern.ch/sw/root/v3.10.02/rh73_gcc2952/root/lib/libCint.so > 0x4067bd11 in G__getitem + 0x715 from > /afs/cern.ch/sw/root/v3.10.02/rh73_gcc2952/root/lib/libCint.so > 0x4067a3c3 in G__getexpr + 0x8c5f from > /afs/cern.ch/sw/root/v3.10.02/rh73_gcc2952/root/lib/libCint.so > 0x406c9c6b in G__exec_function + 0x17b from > /afs/cern.ch/sw/root/v3.10.02/rh73_gcc2952/root/lib/libCint.so > 0x406d131d in G__exec_statement + 0x2c39 from > /afs/cern.ch/sw/root/v3.10.02/rh73_gcc2952/root/lib/libCint.so > 0x406610bc in G__exec_tempfile_core + 0x2b4 from > /afs/cern.ch/sw/root/v3.10.02/rh73_gcc2952/root/lib/libCint.so > 0x4066128d in G__exec_tempfile_fp + 0x25 from > /afs/cern.ch/sw/root/v3.10.02/rh73_gcc2952/root/lib/libCint.so > 0x406d9edc in G__process_cmd + 0x5094 from > /afs/cern.ch/sw/root/v3.10.02/rh73_gcc2952/root/lib/libCint.so > 0x40198b1e in TCint::ProcessLine(char const *, > TInterpreter::EErrorCode *) > + 0x9e from > /afs/cern.ch/sw/root/v3.10.02/rh73_gcc2952/root/lib/libCore.so > 0x401162fe in TApplication::ProcessLine(char const > *, bool, int *) + 0x5b2 > from > /afs/cern.ch/sw/root/v3.10.02/rh73_gcc2952/root/lib/libCore.so > 0x40f51333 in TRint::HandleTermInput(void) + 0x1bb > from > /afs/cern.ch/sw/root/v3.10.02/rh73_gcc2952/root/lib/libRint.so > 0x40f503e1 in TTermInputHandler::Notify(void) + > 0x29 from > /afs/cern.ch/sw/root/v3.10.02/rh73_gcc2952/root/lib/libRint.so > 0x40f5173c in TTermInputHandler::ReadNotify(void) + > 0x24 from > /afs/cern.ch/sw/root/v3.10.02/rh73_gcc2952/root/lib/libRint.so > 0x40204d9a in TUnixSystem::CheckDescriptors(void) + > 0xfe from > /afs/cern.ch/sw/root/v3.10.02/rh73_gcc2952/root/lib/libCore.so > 0x402044c4 in TUnixSystem::DispatchOneEvent(bool) + > 0x110 from > /afs/cern.ch/sw/root/v3.10.02/rh73_gcc2952/root/lib/libCore.so > 0x401688a9 in TSystem::InnerLoop(void) + 0x31 from > /afs/cern.ch/sw/root/v3.10.02/rh73_gcc2952/root/lib/libCore.so > 0x40168819 in TSystem::Run(void) + 0x79 from > /afs/cern.ch/sw/root/v3.10.02/rh73_gcc2952/root/lib/libCore.so > 0x40116cd6 in TApplication::Run(bool) + 0x32 from > /afs/cern.ch/sw/root/v3.10.02/rh73_gcc2952/root/lib/libCore.so > 0x40f50d5b in TRint::Run(bool) + 0x2e3 from > /afs/cern.ch/sw/root/v3.10.02/rh73_gcc2952/root/lib/libRint.so > 0x080488ac in main + 0x88 from > /afs/cern.ch/sw/root/v3.10.02/rh73_gcc2952/root/bin/root.exe > 0x42017589 in __libc_start_main + 0x95 from > /afs/cern.ch/sw/root/v3.10.02/rh73_gcc2952/root/bin/root.exe > 0x08048751 in __register_frame_info + 0x35 from > /afs/cern.ch/sw/root/v3.10.02/rh73_gcc2952/root/bin/root.exe > Root > Function start() busy flag cleared > > NB: with my macro (more heavy than the little > example above), I have in > addition the line below appearing when I leave with > .q > Error: ~TString() header declared but not defined > FILE: LINE:0 > > Problem of TString's destructor when it's used by > TCut ?? >
This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:05 MET