When I call GetMaximum() and/or GetMinimum() on a TChain in a loop over the branches in the TTree, the first iteration of the loop always goes fine, but then it crashes on the second iteration:
Processing get_binning.C...
Thread 6 (Thread 0x7f83b0112700 (LWP 31856)):
#0 0x00007f83c8eaa1c3 in epoll_wait () from /lib64/libc.so.6
#1 0x00007f83b0c5c377 in XrdSys::IOEvents::PollE::Begin (this=0x744a790, syncsem=<optimized out>, retcode=<optimized out>, eTxt=<optimized out>) at /var/build/jenkins/workspace/lcg_release_tar/BUILDTYPE/Release/COMPILER/gcc49/LABEL/slc6-physical/build/externals/xrootd-4.5.0/src/xrootd/4.5.0/src/./XrdSys/XrdSysIOEventsPollE.icc:213
#2 0x00007f83b0c58ba5 in XrdSys::IOEvents::BootStrap::Start (parg=0x7ffe683c8cf0) at /var/build/jenkins/workspace/lcg_release_tar/BUILDTYPE/Release/COMPILER/gcc49/LABEL/slc6-physical/build/externals/xrootd-4.5.0/src/xrootd/4.5.0/src/XrdSys/XrdSysIOEvents.cc:131
#3 0x00007f83b0c57318 in XrdSysThread_Xeq (myargs=0x744df70) at /var/build/jenkins/workspace/lcg_release_tar/BUILDTYPE/Release/COMPILER/gcc49/LABEL/slc6-physical/build/externals/xrootd-4.5.0/src/xrootd/4.5.0/src/XrdSys/XrdSysPthread.cc:86
#4 0x00007f83c915caa1 in start_thread () from /lib64/libpthread.so.0
#5 0x00007f83c8ea9bcd in clone () from /lib64/libc.so.6
Thread 5 (Thread 0x7f83af711700 (LWP 31857)):
#0 0x00007f83c916400d in nanosleep () from /lib64/libpthread.so.0
#1 0x00007f83b0c57ae3 in XrdSysTimer::Wait (mills=<optimized out>) at /var/build/jenkins/workspace/lcg_release_tar/BUILDTYPE/Release/COMPILER/gcc49/LABEL/slc6-physical/build/externals/xrootd-4.5.0/src/xrootd/4.5.0/src/XrdSys/XrdSysTimer.cc:239
#2 0x00007f83b06f0ce2 in XrdCl::TaskManager::RunTasks (this=0x7444390) at /var/build/jenkins/workspace/lcg_release_tar/BUILDTYPE/Release/COMPILER/gcc49/LABEL/slc6-physical/build/externals/xrootd-4.5.0/src/xrootd/4.5.0/src/XrdCl/XrdClTaskManager.cc:244
#3 0x00007f83b06f0e69 in RunRunnerThread (arg=<optimized out>) at /var/build/jenkins/workspace/lcg_release_tar/BUILDTYPE/Release/COMPILER/gcc49/LABEL/slc6-physical/build/externals/xrootd-4.5.0/src/xrootd/4.5.0/src/XrdCl/XrdClTaskManager.cc:37
#4 0x00007f83c915caa1 in start_thread () from /lib64/libpthread.so.0
#5 0x00007f83c8ea9bcd in clone () from /lib64/libc.so.6
Thread 4 (Thread 0x7f83aed10700 (LWP 31858)):
#0 0x00007f83c8ea6419 in syscall () from /lib64/libc.so.6
#1 0x00007f83b0751e80 in XrdSys::LinuxSemaphore::Wait (this=0x451faf0) at /var/build/jenkins/workspace/lcg_release_tar/BUILDTYPE/Release/COMPILER/gcc49/LABEL/slc6-physical/build/externals/xrootd-4.5.0/src/xrootd/4.5.0/src/./XrdSys/XrdSysLinuxSemaphore.hh:161
#2 XrdCl::SyncQueue<XrdCl::JobManager::JobHelper>::Get (this=0x74444e8) at /var/build/jenkins/workspace/lcg_release_tar/BUILDTYPE/Release/COMPILER/gcc49/LABEL/slc6-physical/build/externals/xrootd-4.5.0/src/xrootd/4.5.0/src/./XrdCl/XrdClSyncQueue.hh:67
#3 XrdCl::JobManager::RunJobs (this=0x74444d0) at /var/build/jenkins/workspace/lcg_release_tar/BUILDTYPE/Release/COMPILER/gcc49/LABEL/slc6-physical/build/externals/xrootd-4.5.0/src/xrootd/4.5.0/src/XrdCl/XrdClJobManager.cc:146
#4 0x00007f83b0752009 in RunRunnerThread (arg=<optimized out>) at /var/build/jenkins/workspace/lcg_release_tar/BUILDTYPE/Release/COMPILER/gcc49/LABEL/slc6-physical/build/externals/xrootd-4.5.0/src/xrootd/4.5.0/src/XrdCl/XrdClJobManager.cc:33
#5 0x00007f83c915caa1 in start_thread () from /lib64/libpthread.so.0
#6 0x00007f83c8ea9bcd in clone () from /lib64/libc.so.6
Thread 3 (Thread 0x7f83ae30f700 (LWP 31859)):
#0 0x00007f83c8ea6419 in syscall () from /lib64/libc.so.6
#1 0x00007f83b0751e80 in XrdSys::LinuxSemaphore::Wait (this=0x451faf0) at /var/build/jenkins/workspace/lcg_release_tar/BUILDTYPE/Release/COMPILER/gcc49/LABEL/slc6-physical/build/externals/xrootd-4.5.0/src/xrootd/4.5.0/src/./XrdSys/XrdSysLinuxSemaphore.hh:161
#2 XrdCl::SyncQueue<XrdCl::JobManager::JobHelper>::Get (this=0x74444e8) at /var/build/jenkins/workspace/lcg_release_tar/BUILDTYPE/Release/COMPILER/gcc49/LABEL/slc6-physical/build/externals/xrootd-4.5.0/src/xrootd/4.5.0/src/./XrdCl/XrdClSyncQueue.hh:67
#3 XrdCl::JobManager::RunJobs (this=0x74444d0) at /var/build/jenkins/workspace/lcg_release_tar/BUILDTYPE/Release/COMPILER/gcc49/LABEL/slc6-physical/build/externals/xrootd-4.5.0/src/xrootd/4.5.0/src/XrdCl/XrdClJobManager.cc:146
#4 0x00007f83b0752009 in RunRunnerThread (arg=<optimized out>) at /var/build/jenkins/workspace/lcg_release_tar/BUILDTYPE/Release/COMPILER/gcc49/LABEL/slc6-physical/build/externals/xrootd-4.5.0/src/xrootd/4.5.0/src/XrdCl/XrdClJobManager.cc:33
#5 0x00007f83c915caa1 in start_thread () from /lib64/libpthread.so.0
#6 0x00007f83c8ea9bcd in clone () from /lib64/libc.so.6
Thread 2 (Thread 0x7f83ad90e700 (LWP 31860)):
#0 0x00007f83c8ea6419 in syscall () from /lib64/libc.so.6
#1 0x00007f83b0751e80 in XrdSys::LinuxSemaphore::Wait (this=0x451faf0) at /var/build/jenkins/workspace/lcg_release_tar/BUILDTYPE/Release/COMPILER/gcc49/LABEL/slc6-physical/build/externals/xrootd-4.5.0/src/xrootd/4.5.0/src/./XrdSys/XrdSysLinuxSemaphore.hh:161
#2 XrdCl::SyncQueue<XrdCl::JobManager::JobHelper>::Get (this=0x74444e8) at /var/build/jenkins/workspace/lcg_release_tar/BUILDTYPE/Release/COMPILER/gcc49/LABEL/slc6-physical/build/externals/xrootd-4.5.0/src/xrootd/4.5.0/src/./XrdCl/XrdClSyncQueue.hh:67
#3 XrdCl::JobManager::RunJobs (this=0x74444d0) at /var/build/jenkins/workspace/lcg_release_tar/BUILDTYPE/Release/COMPILER/gcc49/LABEL/slc6-physical/build/externals/xrootd-4.5.0/src/xrootd/4.5.0/src/XrdCl/XrdClJobManager.cc:146
#4 0x00007f83b0752009 in RunRunnerThread (arg=<optimized out>) at /var/build/jenkins/workspace/lcg_release_tar/BUILDTYPE/Release/COMPILER/gcc49/LABEL/slc6-physical/build/externals/xrootd-4.5.0/src/xrootd/4.5.0/src/XrdCl/XrdClJobManager.cc:33
#5 0x00007f83c915caa1 in start_thread () from /lib64/libpthread.so.0
#6 0x00007f83c8ea9bcd in clone () from /lib64/libc.so.6
Thread 1 (Thread 0x7f83ca557920 (LWP 20366)):
#0 0x00007f83c8e6d86d in waitpid () from /lib64/libc.so.6
#1 0x00007f83c8dff479 in do_system () from /lib64/libc.so.6
#2 0x00007f83c8dff7b0 in system () from /lib64/libc.so.6
#3 0x00007f83c9df05ba in TUnixSystem::StackTrace() () from /cvmfs/lhcb.cern.ch/lib/lcg/releases/ROOT/6.08.06-c8fb4/x86_64-slc6-gcc49-opt/lib/libCore.so
#4 0x00007f83c5748895 in cling::MultiplexInterpreterCallbacks::PrintStackTrace() () from /cvmfs/lhcb.cern.ch/lib/lcg/releases/ROOT/6.08.06-c8fb4/x86_64-slc6-gcc49-opt/lib/libCling.so
#5 0x00007f83c5748257 in cling_runtime_internal_throwIfInvalidPointer () from /cvmfs/lhcb.cern.ch/lib/lcg/releases/ROOT/6.08.06-c8fb4/x86_64-slc6-gcc49-opt/lib/libCling.so
#6 0x00007f83b11b66f2 in ?? ()
#7 0x000000000769af50 in ?? ()
#8 0x00007ffe683ca380 in ?? ()
#9 0x00007ffe683c0103 in ?? ()
#10 0x0000000007699c50 in ?? ()
#11 0x0000000000000020 in ?? ()
#12 0x00007ffe683ca4a8 in ?? ()
#13 0x632e72632e626368 in ?? ()
#14 0x00000000061392c0 in ?? ()
#15 0x0000000006f37440 in ?? ()
#16 0x00007ffe683ca7e0 in ?? ()
#17 0x00007ffe683ca7e0 in ?? ()
#18 0x00007ffe683ca7e0 in ?? ()
#19 0x4041e773409c87f3 in ?? ()
#20 0x00007ffe683ca4b1 in ?? ()
#21 0x00007ffe683ca4b1 in ?? ()
#22 0x00007ffe683ca4a8 in ?? ()
#23 0x00007ffe683ca7e0 in ?? ()
#24 0x00007ffe683ca7e0 in ?? ()
#25 0x00007ffe683ca7e0 in ?? ()
#26 0x0000000000000003 in ?? ()
#27 0x0000000000000000 in ?? ()
Error in <HandleInterpreterException>: Trying to access a pointer that points to an invalid memory address..
Execution of your code was aborted.
In file included from input_line_8:1:
/afs/cern.ch/user/m/mwilkins/bfraction13TeV/Bm2DsKmunu/Analysis/misc./get_binning.C:21:22: warning: invalid memory pointer passed to a callee:
TString ibname=ibvar->GetName();
^~~~~
I should note that if I simply cout<<ibname<<endl;
in the loop, there are no problems, leading me to believe there is some memory-handling issue. Is there a suggested workaround for this? Script is below.
#include "../job412.C"
void get_binning(){
ofstream myfile;
myfile.open ("myfile.txt");
TChain ch("Tuple_b2DsKMuX/DecayTree","");
for(const auto& nm : outdict) ch.Add((TString)nm.second.back());
TIterator * ibit = ch.GetListOfBranches()->MakeIterator();
TObject * ibvar = ibit->Next();
while(ibvar){
TString ibname=ibvar->GetName();
if(ibname.Contains("IP")||(ibname.Contains("PV")&&ibname.Contains("CHI2"))||(ibname.Contains("VX")&&ibname.Contains("CHI2"))){
myfile<<"{\""<<ibname<<"\","<<ch.GetMaximum(ibname)<<"}"<<endl;
}
ibvar = ibit->Next();}
myfile.close();
}