[ROOT-7015] ROOT6: Segmentation violation in TFile::Close() Created: 12/Jan/15  Updated: 13/May/15  Resolved: 13/May/15

Status: Closed
Project: ROOT
Component/s: I/O
Affects Version/s: 6.04.00
Fix Version/s: 6.04.00

Type: Bug Priority: High
Reporter: Noel Dawe (Inactive) Assignee: David Smith
Resolution: Fixed Votes: 0
Labels: None
Environment:

x86_64 GNU/Linux


Attachments: File test.root    
Development:

 Description   

With the head of ROOT6 there seems to be a problem with the dynamic_cast in TFile::Close() in the process of destructing certain TChains:

TFileCacheRead *cache = dynamic_cast<TFileCacheRead *>(fCacheReadMap->GetValue(key));

The relevant code doesn't seem to have changed recently. fCacheReadMap->GetValue(key) isn't returning NULL.

#7 <signal handler called>
#8 0x00007fa698fb05b3 in __dynamic_cast () from /cvmfs/atlas.cern.ch/repo/ATLASLocalRootBase/x86_64/Gcc/gcc481_x86_64_slc6/slc6/gcc48/lib64/libstdc++.so.6
#9 0x00007fa69bdb19ef in TFile::Close(char const*) () at /imports/home/edawe/software/root/src/io/io/src/TFile.cxx:905
#10 0x00007fa69bdaf454 in TFile::~TFile() () at /imports/home/edawe/software/root/src/io/io/src/TFile.cxx:527
#11 0x00007fa69bdaf980 in TFile::~TFile() () at /imports/home/edawe/software/root/src/io/io/src/TFile.cxx:553
#12 0x00007fa69a79df71 in TChain::~TChain() () at /imports/home/edawe/software/root/src/tree/tree/src/TChain.cxx:190
#13 0x00007fa69a79e072 in TChain::~TChain() () at /imports/home/edawe/software/root/src/tree/tree/src/TChain.cxx:204
#14 0x00007fa69a806509 in ROOT::delete_TChain(void*) () from /home/edawe/software/root/root-HEAD/lib/root/libTree.so

Full stacktrace below:

===========================================================
There was a crash (#5 0x00007fa69c5ea891 in SigHandler(ESignals) () at /imports/home/edawe/software/root/src/core/unix/src/TUnixSystem.cxx:395).
This is the entire stack trace of all threads:
===========================================================
#0 0x00000035254ac61e in waitpid () from /lib64/libc.so.6
#1 0x000000352543e609 in do_system () from /lib64/libc.so.6
#2 0x00007fa69c5ee212 in TUnixSystem::Exec(char const*) () at /imports/home/edawe/software/root/src/core/unix/src/TUnixSystem.cxx:2069
#3 0x00007fa69c5eea45 in TUnixSystem::StackTrace() () at /imports/home/edawe/software/root/src/core/unix/src/TUnixSystem.cxx:2297
#4 0x00007fa69c5f2309 in TUnixSystem::DispatchSignals(ESignals) () at /imports/home/edawe/software/root/src/core/unix/src/TUnixSystem.cxx:3533
#5 0x00007fa69c5ea891 in SigHandler(ESignals) () at /imports/home/edawe/software/root/src/core/unix/src/TUnixSystem.cxx:395
#6 0x00007fa69c5f2257 in sighandler(int) () at /imports/home/edawe/software/root/src/core/unix/src/TUnixSystem.cxx:3510
#7 <signal handler called>
#8 0x00007fa698fb05b3 in __dynamic_cast () from /cvmfs/atlas.cern.ch/repo/ATLASLocalRootBase/x86_64/Gcc/gcc481_x86_64_slc6/slc6/gcc48/lib64/libstdc++.so.6
#9 0x00007fa69bdb19ef in TFile::Close(char const*) () at /imports/home/edawe/software/root/src/io/io/src/TFile.cxx:905
#10 0x00007fa69bdaf454 in TFile::~TFile() () at /imports/home/edawe/software/root/src/io/io/src/TFile.cxx:527
#11 0x00007fa69bdaf980 in TFile::~TFile() () at /imports/home/edawe/software/root/src/io/io/src/TFile.cxx:553
#12 0x00007fa69a79df71 in TChain::~TChain() () at /imports/home/edawe/software/root/src/tree/tree/src/TChain.cxx:190
#13 0x00007fa69a79e072 in TChain::~TChain() () at /imports/home/edawe/software/root/src/tree/tree/src/TChain.cxx:204
#14 0x00007fa69a806509 in ROOT::delete_TChain(void*) () from /home/edawe/software/root/root-HEAD/lib/root/libTree.so
#15 0x00007fa69c5aae9e in TClass::Destructor(void*, bool) () at /imports/home/edawe/software/root/src/core/meta/src/TClass.cxx:4710
#16 0x00007fa697ffe0d9 in PyROOT::op_dealloc_nofree(PyROOT::ObjectProxy*) () at /imports/home/edawe/software/root/src/bindings/pyroot/src/ObjectProxy.cxx:30
#17 0x00007fa697ffe6f3 in PyROOT::(anonymous namespace)::op_dealloc(PyROOT::ObjectProxy*) () at /imports/home/edawe/software/root/src/bindings/pyroot/src/ObjectProxy.cxx:164
#18 0x00007fa6aa43536a in subtype_dealloc () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#19 0x00007fa6aa4009a2 in frame_dealloc () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#20 0x00007fa6aa486e6a in PyEval_EvalCodeEx () at Python/ceval.c:3276
#21 0x00007fa6aa401c00 in function_call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#22 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#23 0x00007fa6aa4823f6 in PyEval_EvalFrameEx () at Python/ceval.c:4346
#24 0x00007fa6aa4857fe in PyEval_EvalFrameEx () at Python/ceval.c:4119
#25 0x00007fa6aa4870ad in PyEval_EvalCodeEx () at Python/ceval.c:3265
#26 0x00007fa6aa401cd5 in function_call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#27 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#28 0x00007fa6aa4823f6 in PyEval_EvalFrameEx () at Python/ceval.c:4346
#29 0x00007fa6aa4870ad in PyEval_EvalCodeEx () at Python/ceval.c:3265
#30 0x00007fa6aa401c00 in function_call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#31 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#32 0x00007fa6aa3deb7d in instancemethod_call () at Objects/classobject.c:2602
#33 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#34 0x00007fa6aa43b475 in slot_tp_call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#35 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#36 0x00007fa6aa482d21 in PyEval_EvalFrameEx () at Python/ceval.c:4251
#37 0x00007fa6aa4857fe in PyEval_EvalFrameEx () at Python/ceval.c:4119
#38 0x00007fa6aa4870ad in PyEval_EvalCodeEx () at Python/ceval.c:3265
#39 0x00007fa6aa401cd5 in function_call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#40 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#41 0x00007fa6aa4823f6 in PyEval_EvalFrameEx () at Python/ceval.c:4346
#42 0x00007fa6aa4870ad in PyEval_EvalCodeEx () at Python/ceval.c:3265
#43 0x00007fa6aa401c00 in function_call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#44 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#45 0x00007fa6aa3deb7d in instancemethod_call () at Objects/classobject.c:2602
#46 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#47 0x00007fa6aa43b475 in slot_tp_call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#48 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#49 0x00007fa6aa482d21 in PyEval_EvalFrameEx () at Python/ceval.c:4251
#50 0x00007fa6aa4870ad in PyEval_EvalCodeEx () at Python/ceval.c:3265
#51 0x00007fa6aa401cd5 in function_call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#52 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#53 0x00007fa6aa4823f6 in PyEval_EvalFrameEx () at Python/ceval.c:4346
#54 0x00007fa6aa4870ad in PyEval_EvalCodeEx () at Python/ceval.c:3265
#55 0x00007fa6aa401c00 in function_call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#56 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#57 0x00007fa6aa3deb7d in instancemethod_call () at Objects/classobject.c:2602
#58 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#59 0x00007fa6aa43b475 in slot_tp_call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#60 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#61 0x00007fa6aa482d21 in PyEval_EvalFrameEx () at Python/ceval.c:4251
#62 0x00007fa6aa4870ad in PyEval_EvalCodeEx () at Python/ceval.c:3265
#63 0x00007fa6aa401cd5 in function_call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#64 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#65 0x00007fa6aa4823f6 in PyEval_EvalFrameEx () at Python/ceval.c:4346
#66 0x00007fa6aa4870ad in PyEval_EvalCodeEx () at Python/ceval.c:3265
#67 0x00007fa6aa401c00 in function_call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#68 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#69 0x00007fa6aa3deb7d in instancemethod_call () at Objects/classobject.c:2602
#70 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#71 0x00007fa6aa43b475 in slot_tp_call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#72 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#73 0x00007fa6aa482d21 in PyEval_EvalFrameEx () at Python/ceval.c:4251
#74 0x00007fa6aa4870ad in PyEval_EvalCodeEx () at Python/ceval.c:3265
#75 0x00007fa6aa401cd5 in function_call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#76 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#77 0x00007fa6aa4823f6 in PyEval_EvalFrameEx () at Python/ceval.c:4346
#78 0x00007fa6aa4870ad in PyEval_EvalCodeEx () at Python/ceval.c:3265
#79 0x00007fa6aa401c00 in function_call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#80 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#81 0x00007fa6aa3deb7d in instancemethod_call () at Objects/classobject.c:2602
#82 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#83 0x00007fa6aa43b475 in slot_tp_call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#84 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#85 0x00007fa6aa482d21 in PyEval_EvalFrameEx () at Python/ceval.c:4251
#86 0x00007fa6aa4857fe in PyEval_EvalFrameEx () at Python/ceval.c:4119
#87 0x00007fa6aa4857fe in PyEval_EvalFrameEx () at Python/ceval.c:4119
#88 0x00007fa6aa4870ad in PyEval_EvalCodeEx () at Python/ceval.c:3265
#89 0x00007fa6aa401cd5 in function_call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#90 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#91 0x00007fa6aa3deb7d in instancemethod_call () at Objects/classobject.c:2602
#92 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#93 0x00007fa6aa4823f6 in PyEval_EvalFrameEx () at Python/ceval.c:4346
#94 0x00007fa6aa4870ad in PyEval_EvalCodeEx () at Python/ceval.c:3265
#95 0x00007fa6aa401c00 in function_call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#96 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#97 0x00007fa6aa3deb7d in instancemethod_call () at Objects/classobject.c:2602
#98 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#99 0x00007fa6aa43b68f in slot_tp_init () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#100 0x00007fa6aa43a20f in type_call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#101 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#102 0x00007fa6aa482d21 in PyEval_EvalFrameEx () at Python/ceval.c:4251
#103 0x00007fa6aa4870ad in PyEval_EvalCodeEx () at Python/ceval.c:3265
#104 0x00007fa6aa4871e2 in PyEval_EvalCode () at Python/ceval.c:667
#105 0x00007fa6aa4b1e32 in PyRun_FileExFlags () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#106 0x00007fa6aa4b3379 in PyRun_SimpleFileExFlags () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#107 0x00007fa6aa4c8f5d in Py_Main () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#108 0x000000352541ed5d in __libc_start_main () from /lib64/libc.so.6
#109 0x00000000004006c9 in _start ()
===========================================================

The lines below might hint at the cause of the crash.
If they do not help you then please submit a bug report at
http://root.cern.ch/bugs. Please post the ENTIRE stack trace
from above as an attachment in addition to anything else
that might help us fixing this issue.
===========================================================
#8 0x00007fa698fb05b3 in __dynamic_cast () from /cvmfs/atlas.cern.ch/repo/ATLASLocalRootBase/x86_64/Gcc/gcc481_x86_64_slc6/slc6/gcc48/lib64/libstdc++.so.6
#9 0x00007fa69bdb19ef in TFile::Close(char const*) () at /imports/home/edawe/software/root/src/io/io/src/TFile.cxx:905
#10 0x00007fa69bdaf454 in TFile::~TFile() () at /imports/home/edawe/software/root/src/io/io/src/TFile.cxx:527
#11 0x00007fa69bdaf980 in TFile::~TFile() () at /imports/home/edawe/software/root/src/io/io/src/TFile.cxx:553
#12 0x00007fa69a79df71 in TChain::~TChain() () at /imports/home/edawe/software/root/src/tree/tree/src/TChain.cxx:190
#13 0x00007fa69a79e072 in TChain::~TChain() () at /imports/home/edawe/software/root/src/tree/tree/src/TChain.cxx:204
#14 0x00007fa69a806509 in ROOT::delete_TChain(void*) () from /home/edawe/software/root/root-HEAD/lib/root/libTree.so
#15 0x00007fa69c5aae9e in TClass::Destructor(void*, bool) () at /imports/home/edawe/software/root/src/core/meta/src/TClass.cxx:4710
#16 0x00007fa697ffe0d9 in PyROOT::op_dealloc_nofree(PyROOT::ObjectProxy*) () at /imports/home/edawe/software/root/src/bindings/pyroot/src/ObjectProxy.cxx:30
#17 0x00007fa697ffe6f3 in PyROOT::(anonymous namespace)::op_dealloc(PyROOT::ObjectProxy*) () at /imports/home/edawe/software/root/src/bindings/pyroot/src/ObjectProxy.cxx:164
#18 0x00007fa6aa43536a in subtype_dealloc () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#19 0x00007fa6aa4009a2 in frame_dealloc () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#20 0x00007fa6aa486e6a in PyEval_EvalCodeEx () at Python/ceval.c:3276
#21 0x00007fa6aa401c00 in function_call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#22 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#23 0x00007fa6aa4823f6 in PyEval_EvalFrameEx () at Python/ceval.c:4346
#24 0x00007fa6aa4857fe in PyEval_EvalFrameEx () at Python/ceval.c:4119
#25 0x00007fa6aa4870ad in PyEval_EvalCodeEx () at Python/ceval.c:3265
#26 0x00007fa6aa401cd5 in function_call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#27 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#28 0x00007fa6aa4823f6 in PyEval_EvalFrameEx () at Python/ceval.c:4346
#29 0x00007fa6aa4870ad in PyEval_EvalCodeEx () at Python/ceval.c:3265
#30 0x00007fa6aa401c00 in function_call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#31 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#32 0x00007fa6aa3deb7d in instancemethod_call () at Objects/classobject.c:2602
#33 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#34 0x00007fa6aa43b475 in slot_tp_call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#35 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#36 0x00007fa6aa482d21 in PyEval_EvalFrameEx () at Python/ceval.c:4251
#37 0x00007fa6aa4857fe in PyEval_EvalFrameEx () at Python/ceval.c:4119
#38 0x00007fa6aa4870ad in PyEval_EvalCodeEx () at Python/ceval.c:3265
#39 0x00007fa6aa401cd5 in function_call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#40 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#41 0x00007fa6aa4823f6 in PyEval_EvalFrameEx () at Python/ceval.c:4346
#42 0x00007fa6aa4870ad in PyEval_EvalCodeEx () at Python/ceval.c:3265
#43 0x00007fa6aa401c00 in function_call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#44 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#45 0x00007fa6aa3deb7d in instancemethod_call () at Objects/classobject.c:2602
#46 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#47 0x00007fa6aa43b475 in slot_tp_call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#48 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#49 0x00007fa6aa482d21 in PyEval_EvalFrameEx () at Python/ceval.c:4251
#50 0x00007fa6aa4870ad in PyEval_EvalCodeEx () at Python/ceval.c:3265
#51 0x00007fa6aa401cd5 in function_call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#52 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#53 0x00007fa6aa4823f6 in PyEval_EvalFrameEx () at Python/ceval.c:4346
#54 0x00007fa6aa4870ad in PyEval_EvalCodeEx () at Python/ceval.c:3265
#55 0x00007fa6aa401c00 in function_call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#56 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#57 0x00007fa6aa3deb7d in instancemethod_call () at Objects/classobject.c:2602
#58 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#59 0x00007fa6aa43b475 in slot_tp_call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#60 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#61 0x00007fa6aa482d21 in PyEval_EvalFrameEx () at Python/ceval.c:4251
#62 0x00007fa6aa4870ad in PyEval_EvalCodeEx () at Python/ceval.c:3265
#63 0x00007fa6aa401cd5 in function_call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#64 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#65 0x00007fa6aa4823f6 in PyEval_EvalFrameEx () at Python/ceval.c:4346
#66 0x00007fa6aa4870ad in PyEval_EvalCodeEx () at Python/ceval.c:3265
#67 0x00007fa6aa401c00 in function_call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#68 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#69 0x00007fa6aa3deb7d in instancemethod_call () at Objects/classobject.c:2602
#70 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#71 0x00007fa6aa43b475 in slot_tp_call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#72 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#73 0x00007fa6aa482d21 in PyEval_EvalFrameEx () at Python/ceval.c:4251
#74 0x00007fa6aa4870ad in PyEval_EvalCodeEx () at Python/ceval.c:3265
#75 0x00007fa6aa401cd5 in function_call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#76 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#77 0x00007fa6aa4823f6 in PyEval_EvalFrameEx () at Python/ceval.c:4346
#78 0x00007fa6aa4870ad in PyEval_EvalCodeEx () at Python/ceval.c:3265
#79 0x00007fa6aa401c00 in function_call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#80 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#81 0x00007fa6aa3deb7d in instancemethod_call () at Objects/classobject.c:2602
#82 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#83 0x00007fa6aa43b475 in slot_tp_call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#84 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#85 0x00007fa6aa482d21 in PyEval_EvalFrameEx () at Python/ceval.c:4251
#86 0x00007fa6aa4857fe in PyEval_EvalFrameEx () at Python/ceval.c:4119
#87 0x00007fa6aa4857fe in PyEval_EvalFrameEx () at Python/ceval.c:4119
#88 0x00007fa6aa4870ad in PyEval_EvalCodeEx () at Python/ceval.c:3265
#89 0x00007fa6aa401cd5 in function_call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#90 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#91 0x00007fa6aa3deb7d in instancemethod_call () at Objects/classobject.c:2602
#92 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#93 0x00007fa6aa4823f6 in PyEval_EvalFrameEx () at Python/ceval.c:4346
#94 0x00007fa6aa4870ad in PyEval_EvalCodeEx () at Python/ceval.c:3265
#95 0x00007fa6aa401c00 in function_call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#96 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#97 0x00007fa6aa3deb7d in instancemethod_call () at Objects/classobject.c:2602
#98 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#99 0x00007fa6aa43b68f in slot_tp_init () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#100 0x00007fa6aa43a20f in type_call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#101 0x00007fa6aa3d0193 in PyObject_Call () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#102 0x00007fa6aa482d21 in PyEval_EvalFrameEx () at Python/ceval.c:4251
#103 0x00007fa6aa4870ad in PyEval_EvalCodeEx () at Python/ceval.c:3265
#104 0x00007fa6aa4871e2 in PyEval_EvalCode () at Python/ceval.c:667
#105 0x00007fa6aa4b1e32 in PyRun_FileExFlags () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#106 0x00007fa6aa4b3379 in PyRun_SimpleFileExFlags () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#107 0x00007fa6aa4c8f5d in Py_Main () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#108 0x000000352541ed5d in __libc_start_main () from /lib64/libc.so.6
#109 0x00000000004006c9 in _start ()
===========================================================

make: *** [test-code] Segmentation fault



 Comments   
Comment by Noel Dawe (Inactive) [ 12/Jan/15 ]

In TFile::Close() why is fCacheRead->Close(); on the same line as the if-statement and followed by a scoped section:

 899    // Finish any concurrent I/O operations before we close the file handles.    
 900    if (fCacheRead) fCacheRead->Close();                                         
 901    {                                                                            
 902       TIter iter(fCacheReadMap);                                                
 903       TObject *key = 0;                                                         
 904       while ((key = iter()) != 0) {                                             
 905          TFileCacheRead *cache = dynamic_cast<TFileCacheRead *>(fCacheReadMap->GetValue(key));
 906          cache->Close();                                                        
 907       }                                                                         
 908    }

Is that intentional or was that once a single-line if-statement that was turned into a multi-line if-statement without absorbing the fCacheRead->Close();?

If I make the following change, then this segmentation violation does not occur:

diff --git a/io/io/src/TFile.cxx b/io/io/src/TFile.cxx
index 2e2a14d..bbdf725 100644
--- a/io/io/src/TFile.cxx
+++ b/io/io/src/TFile.cxx
@@ -897,8 +897,9 @@ void TFile::Close(Option_t *option)
    }
 
    // Finish any concurrent I/O operations before we close the file handles.
-   if (fCacheRead) fCacheRead->Close();
+   if (fCacheRead)
    {
+      fCacheRead->Close();
       TIter iter(fCacheReadMap);
       TObject *key = 0;
       while ((key = iter()) != 0) {

Comment by Philippe Canal [ 12/Jan/15 ]

Hi,

The code is as intended. The extra scope is to keep the lifetime of the iterator smaller. I would have guess that if fCacheRead is null, then fCacheReadMap would be empty (no iteration).

What is the key when it is crashes (key->Dump()).

Can you run the example with valgrind --suppressions=$ROOTSYS/etc/valgrind-root.supp .... ?

Thanks,
Philippe.

Comment by Noel Dawe (Inactive) [ 13/Jan/15 ]

Hi Philippe,

OK thanks. I'm wondering if there is a threading race condition. Here is the key below. Running valgrind now.

==> Dumping object at: 0x00000000035a7720, name=tree, class=TChain
 
fTreeOffsetLen                100                 Current size of fTreeOffset array
fNtrees                       1                   Number of trees
fTreeNumber                   0                   ! Current Tree number in fTreeOffset table
*fTreeOffset                                      [fTreeOffsetLen] Array of variables
fCanDeleteRefs                false               ! If true, TProcessIDs are deleted when closing a file
*fTree                        ->36d5cd0           ! Pointer to current tree (Note: We do *not* own this tree.)
*fFile                        ->354fb30           ! Pointer to current file (We own the file).
*fFiles                       ->0                 -> List of file names containing the trees (TChainElement, owned)
*fStatus                      ->0                 -> List of active/inactive branches (TChainElement, owned)
*fProofChain                  ->0                 ! chain proxy when going to be processed by PROOF
fEntries                                          Number of entries
fTotBytes                                         Total number of bytes in all branches before compression
fZipBytes                                         Total number of bytes in all branches after compression
fSavedBytes                                       Number of autosaved bytes
fFlushedBytes                                     Number of autoflushed bytes
fWeight                       1                   Tree weight (see TTree::SetWeight)
fTimerInterval                0                   Timer interval in milliseconds
fScanField                    25                  Number of runs before prompting in Scan
fUpdate                       0                   Update frequency for EntryLoop
fDefaultEntryOffsetLen        1000                Initial Length of fEntryOffset table in the basket buffers
fNClusterRange                0                   Number of Cluster range in addition to the one defined by 'AutoFlush'
fMaxClusterRange              0                   ! Memory allocated for the cluster range.
fMaxEntries                                       Maximum number of entries in case of circular buffers
fMaxEntryLoop                                     Maximum number of entries to process
fMaxVirtualSize                                   Maximum total size of buffers kept in memory
fAutoSave                                         Autosave tree when fAutoSave bytes produced
fAutoFlush                                        Autoflush tree when fAutoFlush entries written
fEstimate                                         Number of entries to estimate histogram limits
*fClusterRangeEnd             ->0                 [fNClusterRange] Last entry of a cluster range.
*fClusterSize                 ->0                 [fNClusterRange] Number of entries in each cluster for a given range.
fCacheSize                                        ! Maximum size of file buffers
fChainOffset                                      ! Offset of 1st entry of this Tree in a TChain
fReadEntry                                        ! Number of the entry being processed
fTotalBuffers                                     ! Total number of bytes in branch buffers
fPacketSize                   100                 ! Number of entries in one packet for parallel root
fNfill                        0                   ! Local for EntryLoop
fDebug                        0                   ! Debug level
fDebugMin                                         ! First entry number to debug
fDebugMax                                         ! Last entry number to debug
fMakeClass                    0                   ! not zero when processing code generated by MakeClass
fFileNumber                   0                   ! current file number (if file extensions)
*fNotify                      ->0                 ! Object to be notified when loading a Tree
*fDirectory                   ->354fb30           ! Pointer to directory holding this tree
fBranches                     ->35a7870           List of Branches
fBranches.*fCont              ->3578970           !Array contents
fBranches.fLowerBound         0                   Lower bound of the array
fBranches.fLast               -1                  Last element in array containing an object
fBranches.fSorted             false               true if collection has been sorted
fBranches.fName                                   name of the collection
fBranches.fName.fRep          ->35a7888           ! String data
fBranches.fName.fRep.         ->35a7888           
fBranches.fSize               16                  number of elements in collection
fBranches.fUniqueID           0                   object unique identifier
fBranches.fBits               0x03004000          bit field status word
fLeaves                       ->35a78b0           Direct pointers to individual branch leaves
fLeaves.*fCont                ->3582160           !Array contents
fLeaves.fLowerBound           0                   Lower bound of the array
fLeaves.fLast                 -1                  Last element in array containing an object
fLeaves.fSorted               false               true if collection has been sorted
fLeaves.fName                                     name of the collection
fLeaves.fName.fRep            ->35a78c8           ! String data
fLeaves.fName.fRep.           ->35a78c8           
fLeaves.fSize                 16                  number of elements in collection
fLeaves.fUniqueID             0                   object unique identifier
fLeaves.fBits                 0x03000000          bit field status word
*fAliases                     ->0                 List of aliases for expressions based on the tree branches.
*fEventList                   ->0                 ! Pointer to event selection list (if one)
*fEntryList                   ->0                 ! Pointer to event selection list (if one)
fIndexValues                  ->35a7908           Sorted index values
fIndexValues.*fArray          ->0                 [fN] Array of fN doubles
fIndexValues.fN               0                   Number of array elements
fIndex                        ->35a7920           Index of sorted values
fIndex.*fArray                ->0                 [fN] Array of fN 32 bit integers
fIndex.fN                     0                   Number of array elements
*fTreeIndex                   ->0                 Pointer to the tree Index (if any)
*fFriends                     ->0                 pointer to list of friend elements
*fPerfStats                   ->0                 ! pointer to the current perf stats object
*fUserInfo                    ->0                 pointer to a list of user objects associated to this Tree
*fPlayer                      ->0                 ! Pointer to current Tree player
*fClones                      ->0                 ! List of cloned trees which share our addresses
*fBranchRef                   ->0                 Branch supporting the TRefTable (if any)
fFriendLockStatus             0                   ! Record which method is locking the friend recursion
*fTransientBuffer             ->0                 ! Pointer to the current transient buffer.
fCacheDoAutoInit              false               ! true if cache auto creation or resize check is needed
fCacheUserSet                 false               ! true if the cache setting was explicitly given by user
fName                         tree                object identifier
fName.fRep                    ->35a7738           ! String data
fName.fRep.                   ->35a7738           
fTitle                                            object title
fTitle.fRep                   ->35a7750           ! String data
fTitle.fRep.                  ->35a7750           
fUniqueID                     0                   object unique identifier
fBits                         0x03000008          bit field status word
fLineColor                    602                 line color
fLineStyle                    1                   line style
fLineWidth                    1                   line width
fFillColor                    0                   fill area color
fFillStyle                    1001                fill area style
fMarkerColor                  1                   Marker color index
fMarkerStyle                  1                   Marker style
fMarkerSize                   1                   Marker size
 
 *** Break *** segmentation violation
 
 
 
===========================================================
There was a crash (#5 0x00007ffa5b084891 in SigHandler(ESignals) () at /imports/home/edawe/software/root/src/core/unix/src/TUnixSystem.cxx:395).
This is the entire stack trace of all threads:
===========================================================
#0  0x00000035254ac61e in waitpid () from /lib64/libc.so.6
#1  0x000000352543e609 in do_system () from /lib64/libc.so.6
#2  0x00007ffa5b088212 in TUnixSystem::Exec(char const*) () at /imports/home/edawe/software/root/src/core/unix/src/TUnixSystem.cxx:2069
#3  0x00007ffa5b088a45 in TUnixSystem::StackTrace() () at /imports/home/edawe/software/root/src/core/unix/src/TUnixSystem.cxx:2297
#4  0x00007ffa5b08c309 in TUnixSystem::DispatchSignals(ESignals) () at /imports/home/edawe/software/root/src/core/unix/src/TUnixSystem.cxx:3533
#5  0x00007ffa5b084891 in SigHandler(ESignals) () at /imports/home/edawe/software/root/src/core/unix/src/TUnixSystem.cxx:395
#6  0x00007ffa5b08c257 in sighandler(int) () at /imports/home/edawe/software/root/src/core/unix/src/TUnixSystem.cxx:3510
#7  <signal handler called>
#8  0x00007ffa57a4a5b3 in __dynamic_cast () from /cvmfs/atlas.cern.ch/repo/ATLASLocalRootBase/x86_64/Gcc/gcc481_x86_64_slc6/slc6/gcc48/lib64/libstdc++.so.6
#9  0x00007ffa5a84ba06 in TFile::Close(char const*) () at /imports/home/edawe/software/root/src/io/io/src/TFile.cxx:906
#10 0x00007ffa5a849454 in TFile::~TFile() () at /imports/home/edawe/software/root/src/io/io/src/TFile.cxx:527
#11 0x00007ffa5a849980 in TFile::~TFile() () at /imports/home/edawe/software/root/src/io/io/src/TFile.cxx:553
#12 0x00007ffa59237f71 in TChain::~TChain() () at /imports/home/edawe/software/root/src/tree/tree/src/TChain.cxx:190
#13 0x00007ffa59238072 in TChain::~TChain() () at /imports/home/edawe/software/root/src/tree/tree/src/TChain.cxx:204
#14 0x00007ffa5b4870d4 in __pyx_pw_13_librootnumpy_7root2array_fromFname(_object*, _object*, _object*) () at root_numpy/src/tree.pyx:713
#15 0x00007ffa676bc879 in PyEval_EvalFrameEx () at Python/ceval.c:4033
#16 0x00007ffa676be0ad in PyEval_EvalCodeEx () at Python/ceval.c:3265
#17 0x00007ffa676bc371 in PyEval_EvalFrameEx () at Python/ceval.c:4129
#18 0x00007ffa676be0ad in PyEval_EvalCodeEx () at Python/ceval.c:3265
#19 0x00007ffa676be1e2 in PyEval_EvalCode () at Python/ceval.c:667
#20 0x00007ffa676e8e32 in PyRun_FileExFlags () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#21 0x00007ffa676ea379 in PyRun_SimpleFileExFlags () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#22 0x00007ffa676fff5d in Py_Main () from /home/edawe/software/python/Python-2.7.9/lib/libpython2.7.so.1.0
#23 0x000000352541ed5d in __libc_start_main () from /lib64/libc.so.6
#24 0x00000000004006c9 in _start ()

Comment by Noel Dawe (Inactive) [ 13/Jan/15 ]

Looking at the dump above, how is the fFiles NULL while fFile is not NULL?

*fTree                        ->36d5cd0           ! Pointer to current tree (Note: We do *not* own this tree.)
*fFile                        ->354fb30           ! Pointer to current file (We own the file).
*fFiles                       ->0                 -> List of file names containing the trees (TChainElement, owned)
*fStatus                      ->0                 -> List of active/inactive branches (TChainElement, owned)

Here is the output from a simple test:

from ROOT import TChain
c = TChain('tree')
c.Add('root_numpy/testdata/single1.root')
c.GetEntries()
c.Dump()

*fTree                        ->30d3a80           ! Pointer to current tree (Note: We do *not* own this tree.)
*fFile                        ->2fdd8e0           ! Pointer to current file (We own the file).
*fFiles                       ->2de38b0           -> List of file names containing the trees (TChainElement, owned)
*fStatus                      ->20de510           -> List of active/inactive branches (TChainElement, owned)

Comment by Noel Dawe (Inactive) [ 13/Jan/15 ]

Ah, this simple example crashes about 25% of the time:

from ROOT import TChain
 
c = TChain('tree')
c.Add('test.root')
c.GetEntries()
c.Delete()

(attaching test.root above)

Comment by Noel Dawe (Inactive) [ 13/Jan/15 ]

Looks like a race condition in the object deletion.

Comment by Noel Dawe (Inactive) [ 13/Jan/15 ]

The equivalent in C++ does not crash. Race condition with python's garbage collection and ROOT's object deletion?

Comment by Noel Dawe (Inactive) [ 13/Jan/15 ]

Not unique to TChain. This crashes 10% of the time:

from ROOT import TTree
 
c = TTree('tree', 'tree')
c.Delete()

Comment by Noel Dawe (Inactive) [ 13/Jan/15 ]

Valgrind+DRD reports no errors:

valgrind --tool=drd --suppressions=$ROOTSYS/etc/root/valgrind-root-python.supp python test.py 
==3142== drd, a thread error detector
==3142== Copyright (C) 2006-2012, and GNU GPL'd, by Bart Van Assche.
==3142== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info
==3142== Command: python test.py
==3142== 
==3142== 
==3142== For counts of detected and suppressed errors, rerun with: -v
==3142== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

Comment by Noel Dawe (Inactive) [ 13/Jan/15 ]

Helgrind output:

valgrind --tool=helgrind --suppressions=$ROOTSYS/etc/root/valgrind-root-python.supp python test.py 
==5685== Helgrind, a thread error detector
==5685== Copyright (C) 2007-2012, and GNU GPL'd, by OpenWorks LLP et al.
==5685== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info
==5685== Command: python test.py
==5685== 
==5685== ---Thread-Announcement------------------------------------------
==5685== 
==5685== Thread #1 is the program's root thread
==5685== 
==5685== ----------------------------------------------------------------
==5685== 
==5685== Thread #1: lock order "0x3524E20908 before 0x51EC900" violated
==5685== 
==5685== Observed (incorrect) order is: acquisition of lock at 0x51EC900
==5685==    at 0x4A0B069: pthread_mutex_lock (hg_intercepts.c:495)
==5685==    by 0x101BE7BB: llvm::sys::MutexImpl::acquire() (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0x101B5157: llvm::sys::DynamicLibrary::getPermanentLibrary(char const*, std::string*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xFBF273A: llvm::EngineBuilder::create(llvm::TargetMachine*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xEDE513C: llvm::EngineBuilder::create() (ExecutionEngine.h:685)
==5685==    by 0xEDE33EF: cling::IncrementalExecutor::IncrementalExecutor(llvm::Module*, clang::DiagnosticsEngine&) (IncrementalExecutor.cpp:113)
==5685==    by 0xEDF3AE0: cling::Interpreter::Interpreter(int, char const* const*, char const*, bool) (Interpreter.cpp:200)
==5685==    by 0xEB8A92F: TCling::TCling(char const*, char const*) (TCling.cxx:1034)
==5685==    by 0xEB87ADA: CreateInterpreter (TCling.cxx:527)
==5685==    by 0xBC4BD0E: TROOT::InitInterpreter() (TROOT.cxx:1712)
==5685==    by 0xBC45CA2: ROOT::GetROOT2() (TROOT.cxx:339)
==5685==    by 0xBC45CCD: ROOT::GetROOT() (TROOT.cxx:348)
==5685== 
==5685==  followed by a later acquisition of lock at 0x3524E20908
==5685==    at 0x4A0B069: pthread_mutex_lock (hg_intercepts.c:495)
==5685==    by 0x3524C124DA: _dl_open (in /lib64/ld-2.12.so)
==5685==    by 0x3526000F65: dlopen_doit (in /lib64/libdl-2.12.so)
==5685==    by 0x3524C0E205: _dl_catch_error (in /lib64/ld-2.12.so)
==5685==    by 0x352600129B: _dlerror_run (in /lib64/libdl-2.12.so)
==5685==    by 0x3526000EE0: dlopen@@GLIBC_2.2.5 (in /lib64/libdl-2.12.so)
==5685==    by 0x101B509B: llvm::sys::DynamicLibrary::getPermanentLibrary(char const*, std::string*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xFBF273A: llvm::EngineBuilder::create(llvm::TargetMachine*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xEDE513C: llvm::EngineBuilder::create() (ExecutionEngine.h:685)
==5685==    by 0xEDE33EF: cling::IncrementalExecutor::IncrementalExecutor(llvm::Module*, clang::DiagnosticsEngine&) (IncrementalExecutor.cpp:113)
==5685==    by 0xEDF3AE0: cling::Interpreter::Interpreter(int, char const* const*, char const*, bool) (Interpreter.cpp:200)
==5685==    by 0xEB8A92F: TCling::TCling(char const*, char const*) (TCling.cxx:1034)
==5685== 
==5685== Required order was established by acquisition of lock at 0x3524E20908
==5685==    at 0x4A0B069: pthread_mutex_lock (hg_intercepts.c:495)
==5685==    by 0x3524C124DA: _dl_open (in /lib64/ld-2.12.so)
==5685==    by 0x3526000F65: dlopen_doit (in /lib64/libdl-2.12.so)
==5685==    by 0x3524C0E205: _dl_catch_error (in /lib64/ld-2.12.so)
==5685==    by 0x352600129B: _dlerror_run (in /lib64/libdl-2.12.so)
==5685==    by 0x3526000EE0: dlopen@@GLIBC_2.2.5 (in /lib64/libdl-2.12.so)
==5685==    by 0xBC4BB74: TROOT::InitInterpreter() (TROOT.cxx:1684)
==5685==    by 0xBC45CA2: ROOT::GetROOT2() (TROOT.cxx:339)
==5685==    by 0xBC45CCD: ROOT::GetROOT() (TROOT.cxx:348)
==5685==    by 0xB703165: PyROOT::InitRoot() (RootWrapper.cxx:227)
==5685==    by 0xB7022BF: initlibPyROOT (RootModule.cxx:760)
==5685==    by 0x4D341D8: _PyImport_LoadDynamicModule (importdl.c:53)
==5685== 
==5685==  followed by a later acquisition of lock at 0x51EC900
==5685==    at 0x4A0B069: pthread_mutex_lock (hg_intercepts.c:495)
==5685==    by 0x101BE7BB: llvm::sys::MutexImpl::acquire() (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0x101B49E7: llvm::sys::DynamicLibrary::AddSymbol(llvm::StringRef, void*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xFBF18E3: _GLOBAL__sub_I_JITMemoryManager.cpp (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0x101FA695: ??? (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xEAEF5E2: ??? (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0x7FEFFF245: ???
==5685==    by 0x410079702E747364: ???
==5685==    by 0x7574655373616C73: ???
==5685==    by 0x632F3D657469536F: ???
==5685==    by 0x6C74612F73666D75: ???
==5685==    by 0x2E6E7265632E7360: ???
==5685== 
==5685== ----------------------------------------------------------------
==5685== 
==5685== Thread #1: lock order "0x3524E20908 before 0x51EC900" violated
==5685== 
==5685== Observed (incorrect) order is: acquisition of lock at 0x51EC900
==5685==    at 0x4A0B069: pthread_mutex_lock (hg_intercepts.c:495)
==5685==    by 0x101BE7BB: llvm::sys::MutexImpl::acquire() (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0x101B5157: llvm::sys::DynamicLibrary::getPermanentLibrary(char const*, std::string*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xFBE0DE5: llvm::JIT::createJIT(llvm::Module*, std::string*, llvm::JITMemoryManager*, bool, llvm::TargetMachine*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xFBF2846: llvm::EngineBuilder::create(llvm::TargetMachine*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xEDE513C: llvm::EngineBuilder::create() (ExecutionEngine.h:685)
==5685==    by 0xEDE33EF: cling::IncrementalExecutor::IncrementalExecutor(llvm::Module*, clang::DiagnosticsEngine&) (IncrementalExecutor.cpp:113)
==5685==    by 0xEDF3AE0: cling::Interpreter::Interpreter(int, char const* const*, char const*, bool) (Interpreter.cpp:200)
==5685==    by 0xEB8A92F: TCling::TCling(char const*, char const*) (TCling.cxx:1034)
==5685==    by 0xEB87ADA: CreateInterpreter (TCling.cxx:527)
==5685==    by 0xBC4BD0E: TROOT::InitInterpreter() (TROOT.cxx:1712)
==5685==    by 0xBC45CA2: ROOT::GetROOT2() (TROOT.cxx:339)
==5685== 
==5685==  followed by a later acquisition of lock at 0x3524E20908
==5685==    at 0x4A0B069: pthread_mutex_lock (hg_intercepts.c:495)
==5685==    by 0x3524C14795: _dl_close (in /lib64/ld-2.12.so)
==5685==    by 0x3524C0E205: _dl_catch_error (in /lib64/ld-2.12.so)
==5685==    by 0x352600129B: _dlerror_run (in /lib64/libdl-2.12.so)
==5685==    by 0x352600100E: dlclose (in /lib64/libdl-2.12.so)
==5685==    by 0x101B4A9F: llvm::sys::DynamicLibrary::addPermanentLibrary(void*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0x101B50A8: llvm::sys::DynamicLibrary::getPermanentLibrary(char const*, std::string*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xFBE0DE5: llvm::JIT::createJIT(llvm::Module*, std::string*, llvm::JITMemoryManager*, bool, llvm::TargetMachine*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xFBF2846: llvm::EngineBuilder::create(llvm::TargetMachine*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xEDE513C: llvm::EngineBuilder::create() (ExecutionEngine.h:685)
==5685==    by 0xEDE33EF: cling::IncrementalExecutor::IncrementalExecutor(llvm::Module*, clang::DiagnosticsEngine&) (IncrementalExecutor.cpp:113)
==5685==    by 0xEDF3AE0: cling::Interpreter::Interpreter(int, char const* const*, char const*, bool) (Interpreter.cpp:200)
==5685== 
==5685== Required order was established by acquisition of lock at 0x3524E20908
==5685==    at 0x4A0B069: pthread_mutex_lock (hg_intercepts.c:495)
==5685==    by 0x3524C124DA: _dl_open (in /lib64/ld-2.12.so)
==5685==    by 0x3526000F65: dlopen_doit (in /lib64/libdl-2.12.so)
==5685==    by 0x3524C0E205: _dl_catch_error (in /lib64/ld-2.12.so)
==5685==    by 0x352600129B: _dlerror_run (in /lib64/libdl-2.12.so)
==5685==    by 0x3526000EE0: dlopen@@GLIBC_2.2.5 (in /lib64/libdl-2.12.so)
==5685==    by 0xBC4BB74: TROOT::InitInterpreter() (TROOT.cxx:1684)
==5685==    by 0xBC45CA2: ROOT::GetROOT2() (TROOT.cxx:339)
==5685==    by 0xBC45CCD: ROOT::GetROOT() (TROOT.cxx:348)
==5685==    by 0xB703165: PyROOT::InitRoot() (RootWrapper.cxx:227)
==5685==    by 0xB7022BF: initlibPyROOT (RootModule.cxx:760)
==5685==    by 0x4D341D8: _PyImport_LoadDynamicModule (importdl.c:53)
==5685== 
==5685==  followed by a later acquisition of lock at 0x51EC900
==5685==    at 0x4A0B069: pthread_mutex_lock (hg_intercepts.c:495)
==5685==    by 0x101BE7BB: llvm::sys::MutexImpl::acquire() (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0x101B49E7: llvm::sys::DynamicLibrary::AddSymbol(llvm::StringRef, void*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xFBF18E3: _GLOBAL__sub_I_JITMemoryManager.cpp (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0x101FA695: ??? (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xEAEF5E2: ??? (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0x7FEFFF245: ???
==5685==    by 0x410079702E747364: ???
==5685==    by 0x7574655373616C73: ???
==5685==    by 0x632F3D657469536F: ???
==5685==    by 0x6C74612F73666D75: ???
==5685==    by 0x2E6E7265632E7360: ???
==5685== 
==5685== ----------------------------------------------------------------
==5685== 
==5685== Thread #1: lock order "0x3524E20908 before 0x51EC900" violated
==5685== 
==5685== Observed (incorrect) order is: acquisition of lock at 0x51EC900
==5685==    at 0x4A0B069: pthread_mutex_lock (hg_intercepts.c:495)
==5685==    by 0x101BE7BB: llvm::sys::MutexImpl::acquire() (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0x101B53C3: llvm::sys::DynamicLibrary::SearchForAddressOfSymbol(char const*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xFBEF95C: (anonymous namespace)::DefaultJITMemoryManager::getPointerToNamedFunction(std::string const&, bool) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xFBDE30E: llvm::JIT::getPointerToNamedFunction(std::string const&, bool) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xFBE17C6: llvm::JIT::getPointerToFunction(llvm::Function*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xFBEC2F7: (anonymous namespace)::JITEmitter::getPointerToGlobal(llvm::GlobalValue*, void*, bool) [clone .isra.334] [clone .part.335] (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xFBEE77B: (anonymous namespace)::JITEmitter::finishFunction(llvm::MachineFunction&) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xF900306: (anonymous namespace)::Emitter<llvm::JITCodeEmitter>::runOnMachineFunction(llvm::MachineFunction&) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0x101637AE: llvm::FPPassManager::runOnFunction(llvm::Function&) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0x1016577D: llvm::legacy::FunctionPassManagerImpl::run(llvm::Function&) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0x10165863: llvm::legacy::FunctionPassManager::run(llvm::Function&) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685== 
==5685==  followed by a later acquisition of lock at 0x3524E20908
==5685==    at 0x4A0B069: pthread_mutex_lock (hg_intercepts.c:495)
==5685==    by 0x352600106A: dlsym (in /lib64/libdl-2.12.so)
==5685==    by 0x101B52E7: llvm::sys::DynamicLibrary::SearchForAddressOfSymbol(char const*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xFBEF95C: (anonymous namespace)::DefaultJITMemoryManager::getPointerToNamedFunction(std::string const&, bool) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xFBDE30E: llvm::JIT::getPointerToNamedFunction(std::string const&, bool) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xFBE17C6: llvm::JIT::getPointerToFunction(llvm::Function*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xFBEC2F7: (anonymous namespace)::JITEmitter::getPointerToGlobal(llvm::GlobalValue*, void*, bool) [clone .isra.334] [clone .part.335] (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xFBEE77B: (anonymous namespace)::JITEmitter::finishFunction(llvm::MachineFunction&) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xF900306: (anonymous namespace)::Emitter<llvm::JITCodeEmitter>::runOnMachineFunction(llvm::MachineFunction&) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0x101637AE: llvm::FPPassManager::runOnFunction(llvm::Function&) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0x1016577D: llvm::legacy::FunctionPassManagerImpl::run(llvm::Function&) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0x10165863: llvm::legacy::FunctionPassManager::run(llvm::Function&) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685== 
==5685== Required order was established by acquisition of lock at 0x3524E20908
==5685==    at 0x4A0B069: pthread_mutex_lock (hg_intercepts.c:495)
==5685==    by 0x3524C124DA: _dl_open (in /lib64/ld-2.12.so)
==5685==    by 0x3526000F65: dlopen_doit (in /lib64/libdl-2.12.so)
==5685==    by 0x3524C0E205: _dl_catch_error (in /lib64/ld-2.12.so)
==5685==    by 0x352600129B: _dlerror_run (in /lib64/libdl-2.12.so)
==5685==    by 0x3526000EE0: dlopen@@GLIBC_2.2.5 (in /lib64/libdl-2.12.so)
==5685==    by 0xBC4BB74: TROOT::InitInterpreter() (TROOT.cxx:1684)
==5685==    by 0xBC45CA2: ROOT::GetROOT2() (TROOT.cxx:339)
==5685==    by 0xBC45CCD: ROOT::GetROOT() (TROOT.cxx:348)
==5685==    by 0xB703165: PyROOT::InitRoot() (RootWrapper.cxx:227)
==5685==    by 0xB7022BF: initlibPyROOT (RootModule.cxx:760)
==5685==    by 0x4D341D8: _PyImport_LoadDynamicModule (importdl.c:53)
==5685== 
==5685==  followed by a later acquisition of lock at 0x51EC900
==5685==    at 0x4A0B069: pthread_mutex_lock (hg_intercepts.c:495)
==5685==    by 0x101BE7BB: llvm::sys::MutexImpl::acquire() (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0x101B49E7: llvm::sys::DynamicLibrary::AddSymbol(llvm::StringRef, void*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xFBF18E3: _GLOBAL__sub_I_JITMemoryManager.cpp (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0x101FA695: ??? (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xEAEF5E2: ??? (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0x7FEFFF245: ???
==5685==    by 0x410079702E747364: ???
==5685==    by 0x7574655373616C73: ???
==5685==    by 0x632F3D657469536F: ???
==5685==    by 0x6C74612F73666D75: ???
==5685==    by 0x2E6E7265632E7360: ???
==5685== 
==5685== ----------------------------------------------------------------
==5685== 
==5685== Thread #1: lock order "0x3524E20908 before 0x51EC900" violated
==5685== 
==5685== Observed (incorrect) order is: acquisition of lock at 0x51EC900
==5685==    at 0x4A0B069: pthread_mutex_lock (hg_intercepts.c:495)
==5685==    by 0x101BE7BB: llvm::sys::MutexImpl::acquire() (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0x101B53C3: llvm::sys::DynamicLibrary::SearchForAddressOfSymbol(char const*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xFBDFB1E: llvm::JIT::getOrEmitGlobalVariable(llvm::GlobalVariable const*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xFBEEBD5: (anonymous namespace)::JITEmitter::finishFunction(llvm::MachineFunction&) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xF900306: (anonymous namespace)::Emitter<llvm::JITCodeEmitter>::runOnMachineFunction(llvm::MachineFunction&) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0x101637AE: llvm::FPPassManager::runOnFunction(llvm::Function&) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0x1016577D: llvm::legacy::FunctionPassManagerImpl::run(llvm::Function&) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0x10165863: llvm::legacy::FunctionPassManager::run(llvm::Function&) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xFBE0FA3: llvm::JIT::jitTheFunctionUnlocked(llvm::Function*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xFBE15C6: llvm::JIT::runJITOnFunctionUnlocked(llvm::Function*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xFBE1764: llvm::JIT::getPointerToFunction(llvm::Function*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685== 
==5685==  followed by a later acquisition of lock at 0x3524E20908
==5685==    at 0x4A0B069: pthread_mutex_lock (hg_intercepts.c:495)
==5685==    by 0x352600106A: dlsym (in /lib64/libdl-2.12.so)
==5685==    by 0x101B52E7: llvm::sys::DynamicLibrary::SearchForAddressOfSymbol(char const*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xFBDFB1E: llvm::JIT::getOrEmitGlobalVariable(llvm::GlobalVariable const*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xFBEEBD5: (anonymous namespace)::JITEmitter::finishFunction(llvm::MachineFunction&) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xF900306: (anonymous namespace)::Emitter<llvm::JITCodeEmitter>::runOnMachineFunction(llvm::MachineFunction&) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0x101637AE: llvm::FPPassManager::runOnFunction(llvm::Function&) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0x1016577D: llvm::legacy::FunctionPassManagerImpl::run(llvm::Function&) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0x10165863: llvm::legacy::FunctionPassManager::run(llvm::Function&) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xFBE0FA3: llvm::JIT::jitTheFunctionUnlocked(llvm::Function*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xFBE15C6: llvm::JIT::runJITOnFunctionUnlocked(llvm::Function*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xFBE1764: llvm::JIT::getPointerToFunction(llvm::Function*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685== 
==5685== Required order was established by acquisition of lock at 0x3524E20908
==5685==    at 0x4A0B069: pthread_mutex_lock (hg_intercepts.c:495)
==5685==    by 0x3524C124DA: _dl_open (in /lib64/ld-2.12.so)
==5685==    by 0x3526000F65: dlopen_doit (in /lib64/libdl-2.12.so)
==5685==    by 0x3524C0E205: _dl_catch_error (in /lib64/ld-2.12.so)
==5685==    by 0x352600129B: _dlerror_run (in /lib64/libdl-2.12.so)
==5685==    by 0x3526000EE0: dlopen@@GLIBC_2.2.5 (in /lib64/libdl-2.12.so)
==5685==    by 0xBC4BB74: TROOT::InitInterpreter() (TROOT.cxx:1684)
==5685==    by 0xBC45CA2: ROOT::GetROOT2() (TROOT.cxx:339)
==5685==    by 0xBC45CCD: ROOT::GetROOT() (TROOT.cxx:348)
==5685==    by 0xB703165: PyROOT::InitRoot() (RootWrapper.cxx:227)
==5685==    by 0xB7022BF: initlibPyROOT (RootModule.cxx:760)
==5685==    by 0x4D341D8: _PyImport_LoadDynamicModule (importdl.c:53)
==5685== 
==5685==  followed by a later acquisition of lock at 0x51EC900
==5685==    at 0x4A0B069: pthread_mutex_lock (hg_intercepts.c:495)
==5685==    by 0x101BE7BB: llvm::sys::MutexImpl::acquire() (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0x101B49E7: llvm::sys::DynamicLibrary::AddSymbol(llvm::StringRef, void*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xFBF18E3: _GLOBAL__sub_I_JITMemoryManager.cpp (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0x101FA695: ??? (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xEAEF5E2: ??? (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0x7FEFFF245: ???
==5685==    by 0x410079702E747364: ???
==5685==    by 0x7574655373616C73: ???
==5685==    by 0x632F3D657469536F: ???
==5685==    by 0x6C74612F73666D75: ???
==5685==    by 0x2E6E7265632E7360: ???
==5685== 
==5685== ----------------------------------------------------------------
==5685== 
==5685== Thread #1: lock order "0x3524E20908 before 0x51EC900" violated
==5685== 
==5685== Observed (incorrect) order is: acquisition of lock at 0x51EC900
==5685==    at 0x4A0B069: pthread_mutex_lock (hg_intercepts.c:495)
==5685==    by 0x101BE7BB: llvm::sys::MutexImpl::acquire() (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0x101B53C3: llvm::sys::DynamicLibrary::SearchForAddressOfSymbol(char const*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xEDE515F: llvm::sys::DynamicLibrary::SearchForAddressOfSymbol(std::string const&) (DynamicLibrary.h:93)
==5685==    by 0xEDE42A8: cling::IncrementalExecutor::getAddressOfGlobal(llvm::Module*, llvm::StringRef, bool*) (IncrementalExecutor.cpp:410)
==5685==    by 0xEDF7B6A: cling::Interpreter::getAddressOfGlobal(llvm::StringRef, bool*) const (Interpreter.cpp:1193)
==5685==    by 0xEDF7AC9: cling::Interpreter::getAddressOfGlobal(clang::GlobalDecl const&, bool*) const (Interpreter.cpp:1184)
==5685==    by 0xEC67191: TClingDataMemberInfo::Offset() const (TClingDataMemberInfo.cxx:326)
==5685==    by 0xEBA1F70: TCling::DataMemberInfo_Offset(DataMemberInfo_t*) const (TCling.cxx:6680)
==5685==    by 0xBCD1D60: TDataMember::GetOffsetCint() const (TDataMember.cxx:718)
==5685==    by 0xB6F333A: PyROOT::PropertyProxy::Set(TDataMember*) (PropertyProxy.cxx:193)
==5685==    by 0xB6F470E: PyROOT::PropertyProxy* PyROOT::PropertyProxy_New<TDataMember*>(TDataMember* const&) (PropertyProxy.h:75)
==5685== 
==5685==  followed by a later acquisition of lock at 0x3524E20908
==5685==    at 0x4A0B069: pthread_mutex_lock (hg_intercepts.c:495)
==5685==    by 0x352600106A: dlsym (in /lib64/libdl-2.12.so)
==5685==    by 0x101B52E7: llvm::sys::DynamicLibrary::SearchForAddressOfSymbol(char const*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xEDE515F: llvm::sys::DynamicLibrary::SearchForAddressOfSymbol(std::string const&) (DynamicLibrary.h:93)
==5685==    by 0xEDE42A8: cling::IncrementalExecutor::getAddressOfGlobal(llvm::Module*, llvm::StringRef, bool*) (IncrementalExecutor.cpp:410)
==5685==    by 0xEDF7B6A: cling::Interpreter::getAddressOfGlobal(llvm::StringRef, bool*) const (Interpreter.cpp:1193)
==5685==    by 0xEDF7AC9: cling::Interpreter::getAddressOfGlobal(clang::GlobalDecl const&, bool*) const (Interpreter.cpp:1184)
==5685==    by 0xEC67191: TClingDataMemberInfo::Offset() const (TClingDataMemberInfo.cxx:326)
==5685==    by 0xEBA1F70: TCling::DataMemberInfo_Offset(DataMemberInfo_t*) const (TCling.cxx:6680)
==5685==    by 0xBCD1D60: TDataMember::GetOffsetCint() const (TDataMember.cxx:718)
==5685==    by 0xB6F333A: PyROOT::PropertyProxy::Set(TDataMember*) (PropertyProxy.cxx:193)
==5685==    by 0xB6F470E: PyROOT::PropertyProxy* PyROOT::PropertyProxy_New<TDataMember*>(TDataMember* const&) (PropertyProxy.h:75)
==5685== 
==5685== Required order was established by acquisition of lock at 0x3524E20908
==5685==    at 0x4A0B069: pthread_mutex_lock (hg_intercepts.c:495)
==5685==    by 0x3524C124DA: _dl_open (in /lib64/ld-2.12.so)
==5685==    by 0x3526000F65: dlopen_doit (in /lib64/libdl-2.12.so)
==5685==    by 0x3524C0E205: _dl_catch_error (in /lib64/ld-2.12.so)
==5685==    by 0x352600129B: _dlerror_run (in /lib64/libdl-2.12.so)
==5685==    by 0x3526000EE0: dlopen@@GLIBC_2.2.5 (in /lib64/libdl-2.12.so)
==5685==    by 0xBC4BB74: TROOT::InitInterpreter() (TROOT.cxx:1684)
==5685==    by 0xBC45CA2: ROOT::GetROOT2() (TROOT.cxx:339)
==5685==    by 0xBC45CCD: ROOT::GetROOT() (TROOT.cxx:348)
==5685==    by 0xB703165: PyROOT::InitRoot() (RootWrapper.cxx:227)
==5685==    by 0xB7022BF: initlibPyROOT (RootModule.cxx:760)
==5685==    by 0x4D341D8: _PyImport_LoadDynamicModule (importdl.c:53)
==5685== 
==5685==  followed by a later acquisition of lock at 0x51EC900
==5685==    at 0x4A0B069: pthread_mutex_lock (hg_intercepts.c:495)
==5685==    by 0x101BE7BB: llvm::sys::MutexImpl::acquire() (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0x101B49E7: llvm::sys::DynamicLibrary::AddSymbol(llvm::StringRef, void*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xFBF18E3: _GLOBAL__sub_I_JITMemoryManager.cpp (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0x101FA695: ??? (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0xEAEF5E2: ??? (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==5685==    by 0x7FEFFF245: ???
==5685==    by 0x410079702E747364: ???
==5685==    by 0x7574655373616C73: ???
==5685==    by 0x632F3D657469536F: ???
==5685==    by 0x6C74612F73666D75: ???
==5685==    by 0x2E6E7265632E7360: ???
==5685== 
==5685== 
==5685== For counts of detected and suppressed errors, rerun with: -v
==5685== Use --history-level=approx or =none to gain increased speed, at
==5685== the cost of reduced accuracy of conflicting-access information
==5685== ERROR SUMMARY: 34 errors from 5 contexts (suppressed: 0 from 0)

Comment by Noel Dawe (Inactive) [ 13/Jan/15 ]

Valgrind output (no Helgrind or DRD)

valgrind --suppressions=$ROOTSYS/etc/root/valgrind-root-python.supp python test.py 
==2680== Memcheck, a memory error detector
==2680== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al.
==2680== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info
==2680== Command: python test.py
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xBBCF1EA: TCollection::TCollection() (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCore.so)
==2680==    by 0xBCA0AC8: TMap::TMap(int, int) (TMap.cxx:39)
==2680==    by 0xBC938BB: ROOT::TMapTypeToClassRec::TMapTypeToClassRec() (TClassTable.cxx:98)
==2680==    by 0xBC91A1E: TClassTable::TClassTable() (TClassTable.cxx:218)
==2680==    by 0xBC91F68: TClassTable::Add(char const*, short, std::type_info const&, TClass* (*)(), int) (TClassTable.cxx:312)
==2680==    by 0xBC9300E: ROOT::AddClass(char const*, short, std::type_info const&, TClass* (*)(), int) (TClassTable.cxx:710)
==2680==    by 0xB72C51F: ROOT::TDefaultInitBehavior::Register(char const*, short, std::type_info const&, TClass* (*)(), int) const (in /imports/home/edawe/software/root/root-HEAD/lib/root/libPyROOT.so)
==2680==    by 0xBCD7FD3: ROOT::TGenericClassInfo::Init(int) (TGenericClassInfo.cxx:162)
==2680==    by 0xBCD7D2C: ROOT::TGenericClassInfo::TGenericClassInfo(char const*, int, char const*, int, std::type_info const&, ROOT::TInitBehavior const*, TClass* (*)(), TVirtualIsAProxy*, int, int) (TGenericClassInfo.cxx:78)
==2680==    by 0xBB86410: ROOT::GenerateInitInstanceLocal(TUnixSystem const*) (G__Core.cxx:11110)
==2680==    by 0xBB86520: ROOT::GenerateInitInstance(TUnixSystem const*) (G__Core.cxx:11121)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xBC22366: TInetAddress::TInetAddress(char const*, unsigned int, int, int) (TInetAddress.cxx:37)
==2680==    by 0xBD05E25: TUnixSystem::GetHostByName(char const*) (TUnixSystem.cxx:2940)
==2680==    by 0xBC80AA9: TUUID::GetNodeIdentifier() (TUUID.cxx:418)
==2680==    by 0xBC807F7: TUUID::Format(unsigned short, TUUID::uuid_time_t) (TUUID.cxx:318)
==2680==    by 0xBC80207: TUUID::TUUID() (TUUID.cxx:174)
==2680==    by 0xBC360B2: TProcessID::AddProcessID() (TProcessID.cxx:121)
==2680==    by 0xBC45E0B: TROOT::TROOT(char const*, char const*, void (**)()) (TROOT.cxx:515)
==2680==    by 0xBC4DDDB: ROOT::TROOTAllocator::TROOTAllocator() (TROOT.cxx:292)
==2680==    by 0xBC44C1E: ROOT::GetROOT1() (TROOT.cxx:332)
==2680==    by 0xBC44CCD: ROOT::GetROOT() (TROOT.cxx:348)
==2680==    by 0xBC4D96E: __static_initialization_and_destruction_0(int, int) (TROOT.cxx:356)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B404: TObject::TObject(TObject const&) (TObject.cxx:86)
==2680==    by 0xBC224B9: TInetAddress::TInetAddress(TInetAddress const&) (TInetAddress.cxx:53)
==2680==    by 0xBD05F0A: TUnixSystem::GetHostByName(char const*) (TUnixSystem.cxx:2949)
==2680==    by 0xBC80AA9: TUUID::GetNodeIdentifier() (TUUID.cxx:418)
==2680==    by 0xBC807F7: TUUID::Format(unsigned short, TUUID::uuid_time_t) (TUUID.cxx:318)
==2680==    by 0xBC80207: TUUID::TUUID() (TUUID.cxx:174)
==2680==    by 0xBC360B2: TProcessID::AddProcessID() (TProcessID.cxx:121)
==2680==    by 0xBC45E0B: TROOT::TROOT(char const*, char const*, void (**)()) (TROOT.cxx:515)
==2680==    by 0xBC4DDDB: ROOT::TROOTAllocator::TROOTAllocator() (TROOT.cxx:292)
==2680==    by 0xBC44C1E: ROOT::GetROOT1() (TROOT.cxx:332)
==2680==    by 0xBC44CCD: ROOT::GetROOT() (TROOT.cxx:348)
==2680==    by 0xBC4D96E: __static_initialization_and_destruction_0(int, int) (TROOT.cxx:356)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xF35FE4D: clang::ASTDeclReader::VisitFriendDecl(clang::FriendDecl*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==2680==    by 0xF364A34: clang::ASTDeclReader::Visit(clang::Decl*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==2680==    by 0xF364E90: clang::ASTReader::ReadDeclRecord(unsigned int) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==2680==    by 0xF31B7F4: clang::ASTReader::GetDecl(unsigned int) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==2680==    by 0xF31C503: (anonymous namespace)::FindExternalLexicalDeclsVisitor::visit(clang::serialization::ModuleFile&, bool, void*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==2680==    by 0xF3BF335: clang::serialization::ModuleManager::visitDepthFirst(bool (*)(clang::serialization::ModuleFile&, bool, void*), void*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==2680==    by 0xF310670: clang::ASTReader::FindExternalLexicalDecls(clang::DeclContext const*, bool (*)(clang::Decl::Kind), llvm::SmallVectorImpl<clang::Decl*>&) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==2680==    by 0xFA38A82: clang::DeclContext::LoadLexicalDeclsFromExternalStorage() const (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==2680==    by 0xFA38B3E: clang::DeclContext::decls_begin() const (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==2680==    by 0xF262D3F: clang::CXXRecordDecl::method_begin() const (DeclCXX.h:756)
==2680==    by 0xFAE3C3D: clang::ASTContext::getCurrentKeyFunction(clang::CXXRecordDecl const*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==2680==    by 0xF63E742: clang::Sema::ActOnEndOfTranslationUnit() (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCling.so)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xBC7CAE5: TUrl::TUrl(char const*, bool) (TUrl.cxx:60)
==2680==    by 0xBC64D14: TSystem::FindHelper(char const*, void*) (TSystem.cxx:758)
==2680==    by 0xBD0204F: TUnixSystem::AccessPathName(char const*, EAccessMode) (TUnixSystem.cxx:1489)
==2680==    by 0xC1E4F26: TFile::TFile(char const*, char const*, char const*, int) (TFile.cxx:465)
==2680==    by 0xEF8A7A5: TCling::LoadPCM(TString, char const**, void (*)()) const (TCling.cxx:1224)
==2680==    by 0xEF8C6A0: TCling::RegisterModule(char const*, char const**, char const**, char const*, char const*, void (*)(), std::vector<std::pair<std::string, int>, std::allocator<std::pair<std::string, int> > > const&, char const**) (TCling.cxx:1615)
==2680==    by 0xBC4AED4: TROOT::InitInterpreter() (TROOT.cxx:1731)
==2680==    by 0xBC44CA2: ROOT::GetROOT2() (TROOT.cxx:339)
==2680==    by 0xBC44CCD: ROOT::GetROOT() (TROOT.cxx:348)
==2680==    by 0xB702165: PyROOT::InitRoot() (RootWrapper.cxx:227)
==2680==    by 0xB7012BF: initlibPyROOT (RootModule.cxx:760)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xBC7CAE5: TUrl::TUrl(char const*, bool) (TUrl.cxx:60)
==2680==    by 0xBC64D14: TSystem::FindHelper(char const*, void*) (TSystem.cxx:758)
==2680==    by 0xBD0237F: TUnixSystem::GetPathInfo(char const*, FileStat_t&) (TUnixSystem.cxx:1568)
==2680==    by 0xBC668EA: TSystem::GetPathInfo(char const*, long*, long long*, long*, long*) (TSystem.cxx:1344)
==2680==    by 0xC1F65CB: TFile::SysStat(int, long*, long long*, long*, long*) (TFile.cxx:4248)
==2680==    by 0xC1E8B54: TFile::GetSize() const (TFile.cxx:1253)
==2680==    by 0xC1E6BD5: TFile::Init(bool) (TFile.cxx:763)
==2680==    by 0xC1E5113: TFile::TFile(char const*, char const*, char const*, int) (TFile.cxx:500)
==2680==    by 0xEF8A7A5: TCling::LoadPCM(TString, char const**, void (*)()) const (TCling.cxx:1224)
==2680==    by 0xEF8C6A0: TCling::RegisterModule(char const*, char const**, char const**, char const*, char const*, void (*)(), std::vector<std::pair<std::string, int>, std::allocator<std::pair<std::string, int> > > const&, char const**) (TCling.cxx:1615)
==2680==    by 0xBC4AED4: TROOT::InitInterpreter() (TROOT.cxx:1731)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xBBCF1EA: TCollection::TCollection() (in /imports/home/edawe/software/root/root-HEAD/lib/root/libCore.so)
==2680==    by 0xBBCF489: TSeqCollection::TSeqCollection() (TSeqCollection.h:35)
==2680==    by 0xBBD05CB: TList::TList() (TList.h:72)
==2680==    by 0xBC9E5F6: TList::Delete(char const*) (TList.cxx:407)
==2680==    by 0xBC9B3F6: THashList::Delete(char const*) (THashList.cxx:197)
==2680==    by 0xC1D20AB: TDirectoryFile::Close(char const*) (TDirectoryFile.cxx:549)
==2680==    by 0xC1E7A82: TFile::Close(char const*) (TFile.cxx:915)
==2680==    by 0xC1E5453: TFile::~TFile() (TFile.cxx:527)
==2680==    by 0xC1E597F: TFile::~TFile() (TFile.cxx:553)
==2680==    by 0xEF8A850: TCling::LoadPCM(TString, char const**, void (*)()) const (TCling.cxx:1230)
==2680==    by 0xEF8C6A0: TCling::RegisterModule(char const*, char const**, char const**, char const*, char const*, void (*)(), std::vector<std::pair<std::string, int>, std::allocator<std::pair<std::string, int> > > const&, char const**) (TCling.cxx:1615)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xBBCF76A: TObjString::TObjString(char const*) (TObjString.h:38)
==2680==    by 0xBCEF9E6: ROOT::TSchemaRule::ProcessList(TObjArray*, TString const&) (TSchemaRule.cxx:925)
==2680==    by 0xBCEE47C: ROOT::TSchemaRule::SetTarget(TString const&) (TSchemaRule.cxx:497)
==2680==    by 0xBCED458: ROOT::TSchemaRule::SetFromRule(char const*) (TSchemaRule.cxx:350)
==2680==    by 0xBCB5C42: TClass::AddRule(char const*) (TClass.cxx:1654)
==2680==    by 0xBCB59B9: (anonymous namespace)::ReadRulesContent(_IO_FILE*) (TClass.cxx:1527)
==2680==    by 0xBCB5B1D: TClass::ReadRules() (TClass.cxx:1596)
==2680==    by 0xBC4AF43: TROOT::InitInterpreter() (TROOT.cxx:1740)
==2680==    by 0xBC44CA2: ROOT::GetROOT2() (TROOT.cxx:339)
==2680==    by 0xBC44CCD: ROOT::GetROOT() (TROOT.cxx:348)
==2680==    by 0xB702165: PyROOT::InitRoot() (RootWrapper.cxx:227)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xBC7CAE5: TUrl::TUrl(char const*, bool) (TUrl.cxx:60)
==2680==    by 0xBC64D14: TSystem::FindHelper(char const*, void*) (TSystem.cxx:758)
==2680==    by 0xBD019A1: TUnixSystem::OpenDirectory(char const*) (TUnixSystem.cxx:1337)
==2680==    by 0xEF987F6: TCling::LoadLibraryMap(char const*) (TCling.cxx:4445)
==2680==    by 0xEF8F712: TCling::EnableAutoLoading() (TCling.cxx:2285)
==2680==    by 0xBC4AF70: TROOT::InitInterpreter() (TROOT.cxx:1743)
==2680==    by 0xBC44CA2: ROOT::GetROOT2() (TROOT.cxx:339)
==2680==    by 0xBC44CCD: ROOT::GetROOT() (TROOT.cxx:348)
==2680==    by 0xB702165: PyROOT::InitRoot() (RootWrapper.cxx:227)
==2680==    by 0xB7012BF: initlibPyROOT (RootModule.cxx:760)
==2680==    by 0x4D331D8: _PyImport_LoadDynamicModule (importdl.c:53)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xBC7CAE5: TUrl::TUrl(char const*, bool) (TUrl.cxx:60)
==2680==    by 0xC1F4DFE: TFile::Open(char const*, char const*, char const*, int, int) (TFile.cxx:3919)
==2680==    by 0xC75B2CA: TChain::LoadTree(long long) (TChain.cxx:1522)
==2680==    by 0xC7598D1: TChain::GetEntries() const (TChain.cxx:988)
==2680==    by 0x10E4E6CA: ???
==2680==    by 0xF052285: TClingCallFunc::exec(void*, void*) const (TClingCallFunc.cxx:1873)
==2680==    by 0xF057596: void TClingCallFunc::execWithLL<long long>(void*, clang::QualType, cling::Value*) const (TClingCallFunc.cxx:1881)
==2680==    by 0xF052B7B: TClingCallFunc::exec_with_valref_return(void*, cling::Value*) const (TClingCallFunc.cxx:2037)
==2680==    by 0xF05783A: long long TClingCallFunc::ExecT<long long>(void*) (TClingCallFunc.cxx:2130)
==2680==    by 0xF053054: TClingCallFunc::ExecInt64(void*) (TClingCallFunc.cxx:2148)
==2680==    by 0xEF9F823: TCling::CallFunc_ExecInt64(CallFunc_t*, void*) const (TCling.cxx:6069)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xBC7CAE5: TUrl::TUrl(char const*, bool) (TUrl.cxx:60)
==2680==    by 0xC1BFBED: TArchiveFile::ParseUrl(char const*, TString&, TString&, TString&) (TArchiveFile.cxx:145)
==2680==    by 0xC1BFA68: TArchiveFile::Open(char const*, TFile*) (TArchiveFile.cxx:124)
==2680==    by 0xC1E4864: TFile::TFile(char const*, char const*, char const*, int) (TFile.cxx:377)
==2680==    by 0xC1F5423: TFile::Open(char const*, char const*, char const*, int, int) (TFile.cxx:3978)
==2680==    by 0xC75B2CA: TChain::LoadTree(long long) (TChain.cxx:1522)
==2680==    by 0xC7598D1: TChain::GetEntries() const (TChain.cxx:988)
==2680==    by 0x10E4E6CA: ???
==2680==    by 0xF052285: TClingCallFunc::exec(void*, void*) const (TClingCallFunc.cxx:1873)
==2680==    by 0xF057596: void TClingCallFunc::execWithLL<long long>(void*, clang::QualType, cling::Value*) const (TClingCallFunc.cxx:1881)
==2680==    by 0xF052B7B: TClingCallFunc::exec_with_valref_return(void*, cling::Value*) const (TClingCallFunc.cxx:2037)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xC25146D: TStreamerInfoActions::TConfiguredAction::TConfiguredAction(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:90)
==2680==    by 0xC256547: void TStreamerInfoActions::TActionSequence::AddAction<int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*)>(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:136)
==2680==    by 0xC2378E5: TStreamerInfo::AddReadAction(TStreamerInfoActions::TActionSequence*, int, TStreamerInfo::TCompInfo*) (TStreamerInfoActions.cxx:2526)
==2680==    by 0xC2370E4: TStreamerInfo::Compile() (TStreamerInfoActions.cxx:2460)
==2680==    by 0xC2F2474: TStreamerInfo::Build() (TStreamerInfo.cxx:601)
==2680==    by 0xBCBDD67: TClass::GetStreamerInfo(int) const (TClass.cxx:4048)
==2680==    by 0xBCF73AE: TStreamerBase::InitStreaming() (TStreamerElement.cxx:657)
==2680==    by 0xBCF7251: TStreamerBase::Init(TObject*) (TStreamerElement.cxx:639)
==2680==    by 0xBCF7084: TStreamerBase::TStreamerBase(char const*, char const*, int) (TStreamerElement.cxx:603)
==2680==    by 0xC2F085C: TStreamerInfo::Build() (TStreamerInfo.cxx:308)
==2680==    by 0xC1CA4E4: TBufferFile::ReadClassBuffer(TClass const*, void*, TClass const*) (TBufferFile.cxx:3798)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B404: TObject::TObject(TObject const&) (TObject.cxx:86)
==2680==    by 0xC25140C: TStreamerInfoActions::TConfiguredAction::TConfiguredAction(TStreamerInfoActions::TConfiguredAction const&) (TStreamerInfoActions.h:74)
==2680==    by 0xC2E786D: _ZN9__gnu_cxx13new_allocatorIN20TStreamerInfoActions17TConfiguredActionEE9constructIS2_IS2_EEEvPT_DpOT0_ (in /imports/home/edawe/software/root/root-HEAD/lib/root/libRIO.so)
==2680==    by 0xC2DCCBD: _ZNSt16allocator_traitsISaIN20TStreamerInfoActions17TConfiguredActionEEE12_S_constructIS1_IS1_EEENSt9enable_ifIXsrNS3_18__construct_helperIT_IDpT0_EEE5valueEvE4typeERS2_PS7_DpOS8_ (alloc_traits.h:254)
==2680==    by 0xC299201: _ZNSt16allocator_traitsISaIN20TStreamerInfoActions17TConfiguredActionEEE9constructIS1_IS1_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS2_PT_DpOS5_ (alloc_traits.h:393)
==2680==    by 0xC2629EA: void std::vector<TStreamerInfoActions::TConfiguredAction, std::allocator<TStreamerInfoActions::TConfiguredAction> >::emplace_back<TStreamerInfoActions::TConfiguredAction>(TStreamerInfoActions::TConfiguredAction&&) (vector.tcc:96)
==2680==    by 0xC258C31: std::vector<TStreamerInfoActions::TConfiguredAction, std::allocator<TStreamerInfoActions::TConfiguredAction> >::push_back(TStreamerInfoActions::TConfiguredAction&&) (stl_vector.h:920)
==2680==    by 0xC25655E: void TStreamerInfoActions::TActionSequence::AddAction<int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*)>(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:136)
==2680==    by 0xC2378E5: TStreamerInfo::AddReadAction(TStreamerInfoActions::TActionSequence*, int, TStreamerInfo::TCompInfo*) (TStreamerInfoActions.cxx:2526)
==2680==    by 0xC2370E4: TStreamerInfo::Compile() (TStreamerInfoActions.cxx:2460)
==2680==    by 0xC2F2474: TStreamerInfo::Build() (TStreamerInfo.cxx:601)
==2680==    by 0xBCBDD67: TClass::GetStreamerInfo(int) const (TClass.cxx:4048)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xC25146D: TStreamerInfoActions::TConfiguredAction::TConfiguredAction(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:90)
==2680==    by 0xC256547: void TStreamerInfoActions::TActionSequence::AddAction<int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*)>(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:136)
==2680==    by 0xC23A167: TStreamerInfo::AddWriteAction(TStreamerInfoActions::TActionSequence*, int, TStreamerInfo::TCompInfo*) (TStreamerInfoActions.cxx:2779)
==2680==    by 0xC23711F: TStreamerInfo::Compile() (TStreamerInfoActions.cxx:2461)
==2680==    by 0xC2F2474: TStreamerInfo::Build() (TStreamerInfo.cxx:601)
==2680==    by 0xBCBDD67: TClass::GetStreamerInfo(int) const (TClass.cxx:4048)
==2680==    by 0xBCF73AE: TStreamerBase::InitStreaming() (TStreamerElement.cxx:657)
==2680==    by 0xBCF7251: TStreamerBase::Init(TObject*) (TStreamerElement.cxx:639)
==2680==    by 0xBCF7084: TStreamerBase::TStreamerBase(char const*, char const*, int) (TStreamerElement.cxx:603)
==2680==    by 0xC2F085C: TStreamerInfo::Build() (TStreamerInfo.cxx:308)
==2680==    by 0xC1CA4E4: TBufferFile::ReadClassBuffer(TClass const*, void*, TClass const*) (TBufferFile.cxx:3798)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xC25146D: TStreamerInfoActions::TConfiguredAction::TConfiguredAction(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:90)
==2680==    by 0xC256547: void TStreamerInfoActions::TActionSequence::AddAction<int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*)>(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:136)
==2680==    by 0xC2379F3: TStreamerInfo::AddReadAction(TStreamerInfoActions::TActionSequence*, int, TStreamerInfo::TCompInfo*) (TStreamerInfoActions.cxx:2529)
==2680==    by 0xC2370E4: TStreamerInfo::Compile() (TStreamerInfoActions.cxx:2460)
==2680==    by 0xC2F2474: TStreamerInfo::Build() (TStreamerInfo.cxx:601)
==2680==    by 0xBCBDD67: TClass::GetStreamerInfo(int) const (TClass.cxx:4048)
==2680==    by 0xBCF73AE: TStreamerBase::InitStreaming() (TStreamerElement.cxx:657)
==2680==    by 0xBCF7251: TStreamerBase::Init(TObject*) (TStreamerElement.cxx:639)
==2680==    by 0xBCF7084: TStreamerBase::TStreamerBase(char const*, char const*, int) (TStreamerElement.cxx:603)
==2680==    by 0xC2F085C: TStreamerInfo::Build() (TStreamerInfo.cxx:308)
==2680==    by 0xC1CA4E4: TBufferFile::ReadClassBuffer(TClass const*, void*, TClass const*) (TBufferFile.cxx:3798)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xC25146D: TStreamerInfoActions::TConfiguredAction::TConfiguredAction(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:90)
==2680==    by 0xC256547: void TStreamerInfoActions::TActionSequence::AddAction<int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*)>(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:136)
==2680==    by 0xC23A241: TStreamerInfo::AddWriteAction(TStreamerInfoActions::TActionSequence*, int, TStreamerInfo::TCompInfo*) (TStreamerInfoActions.cxx:2848)
==2680==    by 0xC23711F: TStreamerInfo::Compile() (TStreamerInfoActions.cxx:2461)
==2680==    by 0xC2F2474: TStreamerInfo::Build() (TStreamerInfo.cxx:601)
==2680==    by 0xBCBDD67: TClass::GetStreamerInfo(int) const (TClass.cxx:4048)
==2680==    by 0xBCF73AE: TStreamerBase::InitStreaming() (TStreamerElement.cxx:657)
==2680==    by 0xBCF7251: TStreamerBase::Init(TObject*) (TStreamerElement.cxx:639)
==2680==    by 0xBCF7084: TStreamerBase::TStreamerBase(char const*, char const*, int) (TStreamerElement.cxx:603)
==2680==    by 0xC2F085C: TStreamerInfo::Build() (TStreamerInfo.cxx:308)
==2680==    by 0xC1CA4E4: TBufferFile::ReadClassBuffer(TClass const*, void*, TClass const*) (TBufferFile.cxx:3798)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xC2514B9: TStreamerInfoActions::TConfiguredAction::TConfiguredAction(int (*)(TBuffer&, void*, void const*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:94)
==2680==    by 0xC240290: TStreamerInfoActions::TConfiguredAction GetCollectionReadAction<TStreamerInfoActions::VectorPtrLooper>(TVirtualStreamerInfo*, TStreamerElement*, int, unsigned int, TStreamerInfo::TCompInfo*, int) (TStreamerInfoActions.cxx:2109)
==2680==    by 0xC239CEA: TStreamerInfo::AddReadMemberWiseVecPtrAction(TStreamerInfoActions::TActionSequence*, int, TStreamerInfo::TCompInfo*) (TStreamerInfoActions.cxx:2751)
==2680==    by 0xC237257: TStreamerInfo::Compile() (TStreamerInfoActions.cxx:2469)
==2680==    by 0xC2F2474: TStreamerInfo::Build() (TStreamerInfo.cxx:601)
==2680==    by 0xBCBDD67: TClass::GetStreamerInfo(int) const (TClass.cxx:4048)
==2680==    by 0xBCF73AE: TStreamerBase::InitStreaming() (TStreamerElement.cxx:657)
==2680==    by 0xBCF7251: TStreamerBase::Init(TObject*) (TStreamerElement.cxx:639)
==2680==    by 0xBCF7084: TStreamerBase::TStreamerBase(char const*, char const*, int) (TStreamerElement.cxx:603)
==2680==    by 0xC2F085C: TStreamerInfo::Build() (TStreamerInfo.cxx:308)
==2680==    by 0xC1CA4E4: TBufferFile::ReadClassBuffer(TClass const*, void*, TClass const*) (TBufferFile.cxx:3798)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B404: TObject::TObject(TObject const&) (TObject.cxx:86)
==2680==    by 0xC25140C: TStreamerInfoActions::TConfiguredAction::TConfiguredAction(TStreamerInfoActions::TConfiguredAction const&) (TStreamerInfoActions.h:74)
==2680==    by 0xC298BC7: _ZN9__gnu_cxx13new_allocatorIN20TStreamerInfoActions17TConfiguredActionEE9constructIS2_IRKS2_EEEvPT_DpOT0_ (in /imports/home/edawe/software/root/root-HEAD/lib/root/libRIO.so)
==2680==    by 0xC261ED5: _ZNSt16allocator_traitsISaIN20TStreamerInfoActions17TConfiguredActionEEE12_S_constructIS1_IRKS1_EEENSt9enable_ifIXsrNS3_18__construct_helperIT_IDpT0_EEE5valueEvE4typeERS2_PS9_DpOSA_ (alloc_traits.h:254)
==2680==    by 0xC25810B: _ZNSt16allocator_traitsISaIN20TStreamerInfoActions17TConfiguredActionEEE9constructIS1_IRKS1_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS2_PT_DpOS7_ (alloc_traits.h:393)
==2680==    by 0xC255579: std::vector<TStreamerInfoActions::TConfiguredAction, std::allocator<TStreamerInfoActions::TConfiguredAction> >::push_back(TStreamerInfoActions::TConfiguredAction const&) (stl_vector.h:905)
==2680==    by 0xC251738: TStreamerInfoActions::TActionSequence::AddAction(TStreamerInfoActions::TConfiguredAction const&) (TStreamerInfoActions.h:139)
==2680==    by 0xC239CFD: TStreamerInfo::AddReadMemberWiseVecPtrAction(TStreamerInfoActions::TActionSequence*, int, TStreamerInfo::TCompInfo*) (TStreamerInfoActions.cxx:2751)
==2680==    by 0xC237257: TStreamerInfo::Compile() (TStreamerInfoActions.cxx:2469)
==2680==    by 0xC2F2474: TStreamerInfo::Build() (TStreamerInfo.cxx:601)
==2680==    by 0xBCBDD67: TClass::GetStreamerInfo(int) const (TClass.cxx:4048)
==2680==    by 0xBCF73AE: TStreamerBase::InitStreaming() (TStreamerElement.cxx:657)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xC2514B9: TStreamerInfoActions::TConfiguredAction::TConfiguredAction(int (*)(TBuffer&, void*, void const*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:94)
==2680==    by 0xC257913: void TStreamerInfoActions::TActionSequence::AddAction<int (*)(TBuffer&, void*, void const*, TStreamerInfoActions::TConfiguration const*)>(int (*)(TBuffer&, void*, void const*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:136)
==2680==    by 0xC23A32B: TStreamerInfo::AddWriteMemberWiseVecPtrAction(TStreamerInfoActions::TActionSequence*, int, TStreamerInfo::TCompInfo*) (TStreamerInfoActions.cxx:2883)
==2680==    by 0xC237292: TStreamerInfo::Compile() (TStreamerInfoActions.cxx:2470)
==2680==    by 0xC2F2474: TStreamerInfo::Build() (TStreamerInfo.cxx:601)
==2680==    by 0xBCBDD67: TClass::GetStreamerInfo(int) const (TClass.cxx:4048)
==2680==    by 0xBCF73AE: TStreamerBase::InitStreaming() (TStreamerElement.cxx:657)
==2680==    by 0xBCF7251: TStreamerBase::Init(TObject*) (TStreamerElement.cxx:639)
==2680==    by 0xBCF7084: TStreamerBase::TStreamerBase(char const*, char const*, int) (TStreamerElement.cxx:603)
==2680==    by 0xC2F085C: TStreamerInfo::Build() (TStreamerInfo.cxx:308)
==2680==    by 0xC1CA4E4: TBufferFile::ReadClassBuffer(TClass const*, void*, TClass const*) (TBufferFile.cxx:3798)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xC2514B9: TStreamerInfoActions::TConfiguredAction::TConfiguredAction(int (*)(TBuffer&, void*, void const*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:94)
==2680==    by 0xC24035F: TStreamerInfoActions::TConfiguredAction GetCollectionReadAction<TStreamerInfoActions::VectorPtrLooper>(TVirtualStreamerInfo*, TStreamerElement*, int, unsigned int, TStreamerInfo::TCompInfo*, int) (TStreamerInfoActions.cxx:2112)
==2680==    by 0xC239CEA: TStreamerInfo::AddReadMemberWiseVecPtrAction(TStreamerInfoActions::TActionSequence*, int, TStreamerInfo::TCompInfo*) (TStreamerInfoActions.cxx:2751)
==2680==    by 0xC237257: TStreamerInfo::Compile() (TStreamerInfoActions.cxx:2469)
==2680==    by 0xC2F2474: TStreamerInfo::Build() (TStreamerInfo.cxx:601)
==2680==    by 0xBCBDD67: TClass::GetStreamerInfo(int) const (TClass.cxx:4048)
==2680==    by 0xBCF73AE: TStreamerBase::InitStreaming() (TStreamerElement.cxx:657)
==2680==    by 0xBCF7251: TStreamerBase::Init(TObject*) (TStreamerElement.cxx:639)
==2680==    by 0xBCF7084: TStreamerBase::TStreamerBase(char const*, char const*, int) (TStreamerElement.cxx:603)
==2680==    by 0xC2F085C: TStreamerInfo::Build() (TStreamerInfo.cxx:308)
==2680==    by 0xC1CA4E4: TBufferFile::ReadClassBuffer(TClass const*, void*, TClass const*) (TBufferFile.cxx:3798)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xC25146D: TStreamerInfoActions::TConfiguredAction::TConfiguredAction(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:90)
==2680==    by 0xC256547: void TStreamerInfoActions::TActionSequence::AddAction<int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*)>(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:136)
==2680==    by 0xC237DB6: TStreamerInfo::AddReadAction(TStreamerInfoActions::TActionSequence*, int, TStreamerInfo::TCompInfo*) (TStreamerInfoActions.cxx:2556)
==2680==    by 0xC2370E4: TStreamerInfo::Compile() (TStreamerInfoActions.cxx:2460)
==2680==    by 0xC2F2474: TStreamerInfo::Build() (TStreamerInfo.cxx:601)
==2680==    by 0xC1CA4E4: TBufferFile::ReadClassBuffer(TClass const*, void*, TClass const*) (TBufferFile.cxx:3798)
==2680==    by 0xBBA6A62: TNamed::Streamer(TBuffer&) (G__Core.cxx:19959)
==2680==    by 0xC3063D2: TStreamerInfo::Streamer(TBuffer&) (TStreamerInfo.cxx:4854)
==2680==    by 0xBCC39E9: TClass::StreamerTObject(void*, TBuffer&, TClass const*) const (TClass.cxx:5934)
==2680==    by 0xBCC3C89: TClass::StreamerDefault(void*, TBuffer&, TClass const*) const (TClass.cxx:5997)
==2680==    by 0xC1CC9E8: TClass::Streamer(void*, TBuffer&, TClass const*) const (TClass.h:495)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xC25146D: TStreamerInfoActions::TConfiguredAction::TConfiguredAction(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:90)
==2680==    by 0xC256547: void TStreamerInfoActions::TActionSequence::AddAction<int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*)>(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:136)
==2680==    by 0xC237E10: TStreamerInfo::AddReadAction(TStreamerInfoActions::TActionSequence*, int, TStreamerInfo::TCompInfo*) (TStreamerInfoActions.cxx:2557)
==2680==    by 0xC2370E4: TStreamerInfo::Compile() (TStreamerInfoActions.cxx:2460)
==2680==    by 0xC2F2474: TStreamerInfo::Build() (TStreamerInfo.cxx:601)
==2680==    by 0xC1CA4E4: TBufferFile::ReadClassBuffer(TClass const*, void*, TClass const*) (TBufferFile.cxx:3798)
==2680==    by 0xBBA6A62: TNamed::Streamer(TBuffer&) (G__Core.cxx:19959)
==2680==    by 0xC3063D2: TStreamerInfo::Streamer(TBuffer&) (TStreamerInfo.cxx:4854)
==2680==    by 0xBCC39E9: TClass::StreamerTObject(void*, TBuffer&, TClass const*) const (TClass.cxx:5934)
==2680==    by 0xBCC3C89: TClass::StreamerDefault(void*, TBuffer&, TClass const*) const (TClass.cxx:5997)
==2680==    by 0xC1CC9E8: TClass::Streamer(void*, TBuffer&, TClass const*) const (TClass.h:495)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xC2514B9: TStreamerInfoActions::TConfiguredAction::TConfiguredAction(int (*)(TBuffer&, void*, void const*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:94)
==2680==    by 0xC24065D: TStreamerInfoActions::TConfiguredAction GetCollectionReadAction<TStreamerInfoActions::VectorPtrLooper>(TVirtualStreamerInfo*, TStreamerElement*, int, unsigned int, TStreamerInfo::TCompInfo*, int) (TStreamerInfoActions.cxx:2139)
==2680==    by 0xC239CEA: TStreamerInfo::AddReadMemberWiseVecPtrAction(TStreamerInfoActions::TActionSequence*, int, TStreamerInfo::TCompInfo*) (TStreamerInfoActions.cxx:2751)
==2680==    by 0xC237257: TStreamerInfo::Compile() (TStreamerInfoActions.cxx:2469)
==2680==    by 0xC2F2474: TStreamerInfo::Build() (TStreamerInfo.cxx:601)
==2680==    by 0xC1CA4E4: TBufferFile::ReadClassBuffer(TClass const*, void*, TClass const*) (TBufferFile.cxx:3798)
==2680==    by 0xBBA6A62: TNamed::Streamer(TBuffer&) (G__Core.cxx:19959)
==2680==    by 0xC3063D2: TStreamerInfo::Streamer(TBuffer&) (TStreamerInfo.cxx:4854)
==2680==    by 0xBCC39E9: TClass::StreamerTObject(void*, TBuffer&, TClass const*) const (TClass.cxx:5934)
==2680==    by 0xBCC3C89: TClass::StreamerDefault(void*, TBuffer&, TClass const*) const (TClass.cxx:5997)
==2680==    by 0xC1CC9E8: TClass::Streamer(void*, TBuffer&, TClass const*) const (TClass.h:495)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xC2514B9: TStreamerInfoActions::TConfiguredAction::TConfiguredAction(int (*)(TBuffer&, void*, void const*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:94)
==2680==    by 0xC2406A2: TStreamerInfoActions::TConfiguredAction GetCollectionReadAction<TStreamerInfoActions::VectorPtrLooper>(TVirtualStreamerInfo*, TStreamerElement*, int, unsigned int, TStreamerInfo::TCompInfo*, int) (TStreamerInfoActions.cxx:2140)
==2680==    by 0xC239CEA: TStreamerInfo::AddReadMemberWiseVecPtrAction(TStreamerInfoActions::TActionSequence*, int, TStreamerInfo::TCompInfo*) (TStreamerInfoActions.cxx:2751)
==2680==    by 0xC237257: TStreamerInfo::Compile() (TStreamerInfoActions.cxx:2469)
==2680==    by 0xC2F2474: TStreamerInfo::Build() (TStreamerInfo.cxx:601)
==2680==    by 0xC1CA4E4: TBufferFile::ReadClassBuffer(TClass const*, void*, TClass const*) (TBufferFile.cxx:3798)
==2680==    by 0xBBA6A62: TNamed::Streamer(TBuffer&) (G__Core.cxx:19959)
==2680==    by 0xC3063D2: TStreamerInfo::Streamer(TBuffer&) (TStreamerInfo.cxx:4854)
==2680==    by 0xBCC39E9: TClass::StreamerTObject(void*, TBuffer&, TClass const*) const (TClass.cxx:5934)
==2680==    by 0xBCC3C89: TClass::StreamerDefault(void*, TBuffer&, TClass const*) const (TClass.cxx:5997)
==2680==    by 0xC1CC9E8: TClass::Streamer(void*, TBuffer&, TClass const*) const (TClass.h:495)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xC25146D: TStreamerInfoActions::TConfiguredAction::TConfiguredAction(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:90)
==2680==    by 0xC256547: void TStreamerInfoActions::TActionSequence::AddAction<int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*)>(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:136)
==2680==    by 0xC237D5C: TStreamerInfo::AddReadAction(TStreamerInfoActions::TActionSequence*, int, TStreamerInfo::TCompInfo*) (TStreamerInfoActions.cxx:2553)
==2680==    by 0xC2370E4: TStreamerInfo::Compile() (TStreamerInfoActions.cxx:2460)
==2680==    by 0xC2F2474: TStreamerInfo::Build() (TStreamerInfo.cxx:601)
==2680==    by 0xBCBDD67: TClass::GetStreamerInfo(int) const (TClass.cxx:4048)
==2680==    by 0xBCF73AE: TStreamerBase::InitStreaming() (TStreamerElement.cxx:657)
==2680==    by 0xBCF7251: TStreamerBase::Init(TObject*) (TStreamerElement.cxx:639)
==2680==    by 0xBCF7084: TStreamerBase::TStreamerBase(char const*, char const*, int) (TStreamerElement.cxx:603)
==2680==    by 0xC2F085C: TStreamerInfo::Build() (TStreamerInfo.cxx:308)
==2680==    by 0xC1C9D26: TBufferFile::ReadClassBuffer(TClass const*, void*, int, unsigned int, unsigned int, TClass const*) (TBufferFile.cxx:3669)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xC25146D: TStreamerInfoActions::TConfiguredAction::TConfiguredAction(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:90)
==2680==    by 0xC256547: void TStreamerInfoActions::TActionSequence::AddAction<int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*)>(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:136)
==2680==    by 0xC239844: TStreamerInfo::AddReadAction(TStreamerInfoActions::TActionSequence*, int, TStreamerInfo::TCompInfo*) (TStreamerInfoActions.cxx:2727)
==2680==    by 0xC2370E4: TStreamerInfo::Compile() (TStreamerInfoActions.cxx:2460)
==2680==    by 0xC2F2474: TStreamerInfo::Build() (TStreamerInfo.cxx:601)
==2680==    by 0xBCBDD67: TClass::GetStreamerInfo(int) const (TClass.cxx:4048)
==2680==    by 0xBCF73AE: TStreamerBase::InitStreaming() (TStreamerElement.cxx:657)
==2680==    by 0xBCF7251: TStreamerBase::Init(TObject*) (TStreamerElement.cxx:639)
==2680==    by 0xBCF7084: TStreamerBase::TStreamerBase(char const*, char const*, int) (TStreamerElement.cxx:603)
==2680==    by 0xC2F085C: TStreamerInfo::Build() (TStreamerInfo.cxx:308)
==2680==    by 0xC1C9D26: TBufferFile::ReadClassBuffer(TClass const*, void*, int, unsigned int, unsigned int, TClass const*) (TBufferFile.cxx:3669)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xC2514B9: TStreamerInfoActions::TConfiguredAction::TConfiguredAction(int (*)(TBuffer&, void*, void const*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:94)
==2680==    by 0xC240618: TStreamerInfoActions::TConfiguredAction GetCollectionReadAction<TStreamerInfoActions::VectorPtrLooper>(TVirtualStreamerInfo*, TStreamerElement*, int, unsigned int, TStreamerInfo::TCompInfo*, int) (TStreamerInfoActions.cxx:2136)
==2680==    by 0xC239CEA: TStreamerInfo::AddReadMemberWiseVecPtrAction(TStreamerInfoActions::TActionSequence*, int, TStreamerInfo::TCompInfo*) (TStreamerInfoActions.cxx:2751)
==2680==    by 0xC237257: TStreamerInfo::Compile() (TStreamerInfoActions.cxx:2469)
==2680==    by 0xC2F2474: TStreamerInfo::Build() (TStreamerInfo.cxx:601)
==2680==    by 0xBCBDD67: TClass::GetStreamerInfo(int) const (TClass.cxx:4048)
==2680==    by 0xBCF73AE: TStreamerBase::InitStreaming() (TStreamerElement.cxx:657)
==2680==    by 0xBCF7251: TStreamerBase::Init(TObject*) (TStreamerElement.cxx:639)
==2680==    by 0xBCF7084: TStreamerBase::TStreamerBase(char const*, char const*, int) (TStreamerElement.cxx:603)
==2680==    by 0xC2F085C: TStreamerInfo::Build() (TStreamerInfo.cxx:308)
==2680==    by 0xC1C9D26: TBufferFile::ReadClassBuffer(TClass const*, void*, int, unsigned int, unsigned int, TClass const*) (TBufferFile.cxx:3669)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xC25146D: TStreamerInfoActions::TConfiguredAction::TConfiguredAction(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:90)
==2680==    by 0xC256547: void TStreamerInfoActions::TActionSequence::AddAction<int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*)>(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:136)
==2680==    by 0xC23766F: TStreamerInfo::AddReadAction(TStreamerInfoActions::TActionSequence*, int, TStreamerInfo::TCompInfo*) (TStreamerInfoActions.cxx:2519)
==2680==    by 0xC2371E1: TStreamerInfo::Compile() (TStreamerInfoActions.cxx:2467)
==2680==    by 0xC2F2474: TStreamerInfo::Build() (TStreamerInfo.cxx:601)
==2680==    by 0xBCBDD67: TClass::GetStreamerInfo(int) const (TClass.cxx:4048)
==2680==    by 0xBCF73AE: TStreamerBase::InitStreaming() (TStreamerElement.cxx:657)
==2680==    by 0xBCF7251: TStreamerBase::Init(TObject*) (TStreamerElement.cxx:639)
==2680==    by 0xBCF7084: TStreamerBase::TStreamerBase(char const*, char const*, int) (TStreamerElement.cxx:603)
==2680==    by 0xC2F085C: TStreamerInfo::Build() (TStreamerInfo.cxx:308)
==2680==    by 0xC1C9D26: TBufferFile::ReadClassBuffer(TClass const*, void*, int, unsigned int, unsigned int, TClass const*) (TBufferFile.cxx:3669)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xC25146D: TStreamerInfoActions::TConfiguredAction::TConfiguredAction(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:90)
==2680==    by 0xC256547: void TStreamerInfoActions::TActionSequence::AddAction<int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*)>(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:136)
==2680==    by 0xC239F5A: TStreamerInfo::AddWriteAction(TStreamerInfoActions::TActionSequence*, int, TStreamerInfo::TCompInfo*) (TStreamerInfoActions.cxx:2772)
==2680==    by 0xC23721C: TStreamerInfo::Compile() (TStreamerInfoActions.cxx:2468)
==2680==    by 0xC2F2474: TStreamerInfo::Build() (TStreamerInfo.cxx:601)
==2680==    by 0xBCBDD67: TClass::GetStreamerInfo(int) const (TClass.cxx:4048)
==2680==    by 0xBCF73AE: TStreamerBase::InitStreaming() (TStreamerElement.cxx:657)
==2680==    by 0xBCF7251: TStreamerBase::Init(TObject*) (TStreamerElement.cxx:639)
==2680==    by 0xBCF7084: TStreamerBase::TStreamerBase(char const*, char const*, int) (TStreamerElement.cxx:603)
==2680==    by 0xC2F085C: TStreamerInfo::Build() (TStreamerInfo.cxx:308)
==2680==    by 0xC1C9D26: TBufferFile::ReadClassBuffer(TClass const*, void*, int, unsigned int, unsigned int, TClass const*) (TBufferFile.cxx:3669)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xC2514B9: TStreamerInfoActions::TConfiguredAction::TConfiguredAction(int (*)(TBuffer&, void*, void const*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:94)
==2680==    by 0xC2400AD: TStreamerInfoActions::TConfiguredAction GetCollectionReadAction<TStreamerInfoActions::VectorPtrLooper>(TVirtualStreamerInfo*, TStreamerElement*, int, unsigned int, TStreamerInfo::TCompInfo*, int) (TStreamerInfoActions.cxx:2102)
==2680==    by 0xC239CEA: TStreamerInfo::AddReadMemberWiseVecPtrAction(TStreamerInfoActions::TActionSequence*, int, TStreamerInfo::TCompInfo*) (TStreamerInfoActions.cxx:2751)
==2680==    by 0xC237257: TStreamerInfo::Compile() (TStreamerInfoActions.cxx:2469)
==2680==    by 0xC2F2474: TStreamerInfo::Build() (TStreamerInfo.cxx:601)
==2680==    by 0xBCBDD67: TClass::GetStreamerInfo(int) const (TClass.cxx:4048)
==2680==    by 0xBCF73AE: TStreamerBase::InitStreaming() (TStreamerElement.cxx:657)
==2680==    by 0xBCF7251: TStreamerBase::Init(TObject*) (TStreamerElement.cxx:639)
==2680==    by 0xBCF7084: TStreamerBase::TStreamerBase(char const*, char const*, int) (TStreamerElement.cxx:603)
==2680==    by 0xC2F085C: TStreamerInfo::Build() (TStreamerInfo.cxx:308)
==2680==    by 0xC1C9D26: TBufferFile::ReadClassBuffer(TClass const*, void*, int, unsigned int, unsigned int, TClass const*) (TBufferFile.cxx:3669)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xC2514B9: TStreamerInfoActions::TConfiguredAction::TConfiguredAction(int (*)(TBuffer&, void*, void const*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:94)
==2680==    by 0xC240E20: TStreamerInfoActions::TConfiguredAction GetCollectionReadAction<TStreamerInfoActions::VectorPtrLooper>(TVirtualStreamerInfo*, TStreamerElement*, int, unsigned int, TStreamerInfo::TCompInfo*, int) (TStreamerInfoActions.cxx:2214)
==2680==    by 0xC239CEA: TStreamerInfo::AddReadMemberWiseVecPtrAction(TStreamerInfoActions::TActionSequence*, int, TStreamerInfo::TCompInfo*) (TStreamerInfoActions.cxx:2751)
==2680==    by 0xC237257: TStreamerInfo::Compile() (TStreamerInfoActions.cxx:2469)
==2680==    by 0xC2F2474: TStreamerInfo::Build() (TStreamerInfo.cxx:601)
==2680==    by 0xBCBDD67: TClass::GetStreamerInfo(int) const (TClass.cxx:4048)
==2680==    by 0xBCF73AE: TStreamerBase::InitStreaming() (TStreamerElement.cxx:657)
==2680==    by 0xBCF7251: TStreamerBase::Init(TObject*) (TStreamerElement.cxx:639)
==2680==    by 0xBCF7084: TStreamerBase::TStreamerBase(char const*, char const*, int) (TStreamerElement.cxx:603)
==2680==    by 0xC2F085C: TStreamerInfo::Build() (TStreamerInfo.cxx:308)
==2680==    by 0xC1C9D26: TBufferFile::ReadClassBuffer(TClass const*, void*, int, unsigned int, unsigned int, TClass const*) (TBufferFile.cxx:3669)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xC2514B9: TStreamerInfoActions::TConfiguredAction::TConfiguredAction(int (*)(TBuffer&, void*, void const*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:94)
==2680==    by 0xC240730: TStreamerInfoActions::TConfiguredAction GetCollectionReadAction<TStreamerInfoActions::VectorPtrLooper>(TVirtualStreamerInfo*, TStreamerElement*, int, unsigned int, TStreamerInfo::TCompInfo*, int) (TStreamerInfoActions.cxx:2145)
==2680==    by 0xC239CEA: TStreamerInfo::AddReadMemberWiseVecPtrAction(TStreamerInfoActions::TActionSequence*, int, TStreamerInfo::TCompInfo*) (TStreamerInfoActions.cxx:2751)
==2680==    by 0xC237257: TStreamerInfo::Compile() (TStreamerInfoActions.cxx:2469)
==2680==    by 0xC2F2474: TStreamerInfo::Build() (TStreamerInfo.cxx:601)
==2680==    by 0xC1C9D26: TBufferFile::ReadClassBuffer(TClass const*, void*, int, unsigned int, unsigned int, TClass const*) (TBufferFile.cxx:3669)
==2680==    by 0xBCF9D59: TStreamerString::Streamer(TBuffer&) (TStreamerElement.cxx:1587)
==2680==    by 0xBCC39E9: TClass::StreamerTObject(void*, TBuffer&, TClass const*) const (TClass.cxx:5934)
==2680==    by 0xC1CC9E8: TClass::Streamer(void*, TBuffer&, TClass const*) const (TClass.h:495)
==2680==    by 0xC1C6ADF: TBufferFile::ReadObjectAny(TClass const*) (TBufferFile.cxx:2446)
==2680==    by 0xBCA3A96: TObjArray::Streamer(TBuffer&) (TObjArray.cxx:443)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xC25146D: TStreamerInfoActions::TConfiguredAction::TConfiguredAction(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:90)
==2680==    by 0xC256547: void TStreamerInfoActions::TActionSequence::AddAction<int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*)>(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:136)
==2680==    by 0xC237615: TStreamerInfo::AddReadAction(TStreamerInfoActions::TActionSequence*, int, TStreamerInfo::TCompInfo*) (TStreamerInfoActions.cxx:2518)
==2680==    by 0xC2371E1: TStreamerInfo::Compile() (TStreamerInfoActions.cxx:2467)
==2680==    by 0xC2FABFE: TStreamerInfo::BuildOld() (TStreamerInfo.cxx:2374)
==2680==    by 0xBCBDDA1: TClass::GetStreamerInfo(int) const (TClass.cxx:4055)
==2680==    by 0xBCF73AE: TStreamerBase::InitStreaming() (TStreamerElement.cxx:657)
==2680==    by 0xBCF7251: TStreamerBase::Init(TObject*) (TStreamerElement.cxx:639)
==2680==    by 0xC2F6E18: TStreamerInfo::BuildOld() (TStreamerInfo.cxx:1673)
==2680==    by 0xC1C9E3A: TBufferFile::ReadClassBuffer(TClass const*, void*, int, unsigned int, unsigned int, TClass const*) (TBufferFile.cxx:3686)
==2680==    by 0xC7A8BAE: TTree::Streamer(TBuffer&) (TTree.cxx:8209)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xC25146D: TStreamerInfoActions::TConfiguredAction::TConfiguredAction(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:90)
==2680==    by 0xC256547: void TStreamerInfoActions::TActionSequence::AddAction<int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*)>(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:136)
==2680==    by 0xC239F0F: TStreamerInfo::AddWriteAction(TStreamerInfoActions::TActionSequence*, int, TStreamerInfo::TCompInfo*) (TStreamerInfoActions.cxx:2771)
==2680==    by 0xC23721C: TStreamerInfo::Compile() (TStreamerInfoActions.cxx:2468)
==2680==    by 0xC2FABFE: TStreamerInfo::BuildOld() (TStreamerInfo.cxx:2374)
==2680==    by 0xBCBDDA1: TClass::GetStreamerInfo(int) const (TClass.cxx:4055)
==2680==    by 0xBCF73AE: TStreamerBase::InitStreaming() (TStreamerElement.cxx:657)
==2680==    by 0xBCF7251: TStreamerBase::Init(TObject*) (TStreamerElement.cxx:639)
==2680==    by 0xC2F6E18: TStreamerInfo::BuildOld() (TStreamerInfo.cxx:1673)
==2680==    by 0xC1C9E3A: TBufferFile::ReadClassBuffer(TClass const*, void*, int, unsigned int, unsigned int, TClass const*) (TBufferFile.cxx:3686)
==2680==    by 0xC7A8BAE: TTree::Streamer(TBuffer&) (TTree.cxx:8209)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xC2514B9: TStreamerInfoActions::TConfiguredAction::TConfiguredAction(int (*)(TBuffer&, void*, void const*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:94)
==2680==    by 0xC240068: TStreamerInfoActions::TConfiguredAction GetCollectionReadAction<TStreamerInfoActions::VectorPtrLooper>(TVirtualStreamerInfo*, TStreamerElement*, int, unsigned int, TStreamerInfo::TCompInfo*, int) (TStreamerInfoActions.cxx:2101)
==2680==    by 0xC239CEA: TStreamerInfo::AddReadMemberWiseVecPtrAction(TStreamerInfoActions::TActionSequence*, int, TStreamerInfo::TCompInfo*) (TStreamerInfoActions.cxx:2751)
==2680==    by 0xC237257: TStreamerInfo::Compile() (TStreamerInfoActions.cxx:2469)
==2680==    by 0xC2FABFE: TStreamerInfo::BuildOld() (TStreamerInfo.cxx:2374)
==2680==    by 0xBCBDDA1: TClass::GetStreamerInfo(int) const (TClass.cxx:4055)
==2680==    by 0xBCF73AE: TStreamerBase::InitStreaming() (TStreamerElement.cxx:657)
==2680==    by 0xBCF7251: TStreamerBase::Init(TObject*) (TStreamerElement.cxx:639)
==2680==    by 0xC2F6E18: TStreamerInfo::BuildOld() (TStreamerInfo.cxx:1673)
==2680==    by 0xC1C9E3A: TBufferFile::ReadClassBuffer(TClass const*, void*, int, unsigned int, unsigned int, TClass const*) (TBufferFile.cxx:3686)
==2680==    by 0xC7A8BAE: TTree::Streamer(TBuffer&) (TTree.cxx:8209)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xC25146D: TStreamerInfoActions::TConfiguredAction::TConfiguredAction(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:90)
==2680==    by 0xC256547: void TStreamerInfoActions::TActionSequence::AddAction<int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*)>(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:136)
==2680==    by 0xC23777D: TStreamerInfo::AddReadAction(TStreamerInfoActions::TActionSequence*, int, TStreamerInfo::TCompInfo*) (TStreamerInfoActions.cxx:2522)
==2680==    by 0xC2370E4: TStreamerInfo::Compile() (TStreamerInfoActions.cxx:2460)
==2680==    by 0xC2FABFE: TStreamerInfo::BuildOld() (TStreamerInfo.cxx:2374)
==2680==    by 0xBCBDDA1: TClass::GetStreamerInfo(int) const (TClass.cxx:4055)
==2680==    by 0xBCF73AE: TStreamerBase::InitStreaming() (TStreamerElement.cxx:657)
==2680==    by 0xBCF7251: TStreamerBase::Init(TObject*) (TStreamerElement.cxx:639)
==2680==    by 0xC2F6E18: TStreamerInfo::BuildOld() (TStreamerInfo.cxx:1673)
==2680==    by 0xC1C9E3A: TBufferFile::ReadClassBuffer(TClass const*, void*, int, unsigned int, unsigned int, TClass const*) (TBufferFile.cxx:3686)
==2680==    by 0xC7A8BAE: TTree::Streamer(TBuffer&) (TTree.cxx:8209)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xC25146D: TStreamerInfoActions::TConfiguredAction::TConfiguredAction(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:90)
==2680==    by 0xC256547: void TStreamerInfoActions::TActionSequence::AddAction<int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*)>(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:136)
==2680==    by 0xC23A03B: TStreamerInfo::AddWriteAction(TStreamerInfoActions::TActionSequence*, int, TStreamerInfo::TCompInfo*) (TStreamerInfoActions.cxx:2775)
==2680==    by 0xC23711F: TStreamerInfo::Compile() (TStreamerInfoActions.cxx:2461)
==2680==    by 0xC2FABFE: TStreamerInfo::BuildOld() (TStreamerInfo.cxx:2374)
==2680==    by 0xBCBDDA1: TClass::GetStreamerInfo(int) const (TClass.cxx:4055)
==2680==    by 0xBCF73AE: TStreamerBase::InitStreaming() (TStreamerElement.cxx:657)
==2680==    by 0xBCF7251: TStreamerBase::Init(TObject*) (TStreamerElement.cxx:639)
==2680==    by 0xC2F6E18: TStreamerInfo::BuildOld() (TStreamerInfo.cxx:1673)
==2680==    by 0xC1C9E3A: TBufferFile::ReadClassBuffer(TClass const*, void*, int, unsigned int, unsigned int, TClass const*) (TBufferFile.cxx:3686)
==2680==    by 0xC7A8BAE: TTree::Streamer(TBuffer&) (TTree.cxx:8209)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xC2514B9: TStreamerInfoActions::TConfiguredAction::TConfiguredAction(int (*)(TBuffer&, void*, void const*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:94)
==2680==    by 0xC24017C: TStreamerInfoActions::TConfiguredAction GetCollectionReadAction<TStreamerInfoActions::VectorPtrLooper>(TVirtualStreamerInfo*, TStreamerElement*, int, unsigned int, TStreamerInfo::TCompInfo*, int) (TStreamerInfoActions.cxx:2105)
==2680==    by 0xC239CEA: TStreamerInfo::AddReadMemberWiseVecPtrAction(TStreamerInfoActions::TActionSequence*, int, TStreamerInfo::TCompInfo*) (TStreamerInfoActions.cxx:2751)
==2680==    by 0xC237257: TStreamerInfo::Compile() (TStreamerInfoActions.cxx:2469)
==2680==    by 0xC2FABFE: TStreamerInfo::BuildOld() (TStreamerInfo.cxx:2374)
==2680==    by 0xBCBDDA1: TClass::GetStreamerInfo(int) const (TClass.cxx:4055)
==2680==    by 0xBCF73AE: TStreamerBase::InitStreaming() (TStreamerElement.cxx:657)
==2680==    by 0xBCF7251: TStreamerBase::Init(TObject*) (TStreamerElement.cxx:639)
==2680==    by 0xC2F6E18: TStreamerInfo::BuildOld() (TStreamerInfo.cxx:1673)
==2680==    by 0xC1C9E3A: TBufferFile::ReadClassBuffer(TClass const*, void*, int, unsigned int, unsigned int, TClass const*) (TBufferFile.cxx:3686)
==2680==    by 0xC7A8BAE: TTree::Streamer(TBuffer&) (TTree.cxx:8209)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xC25146D: TStreamerInfoActions::TConfiguredAction::TConfiguredAction(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:90)
==2680==    by 0xC256547: void TStreamerInfoActions::TActionSequence::AddAction<int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*)>(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:136)
==2680==    by 0xC237723: TStreamerInfo::AddReadAction(TStreamerInfoActions::TActionSequence*, int, TStreamerInfo::TCompInfo*) (TStreamerInfoActions.cxx:2521)
==2680==    by 0xC2370E4: TStreamerInfo::Compile() (TStreamerInfoActions.cxx:2460)
==2680==    by 0xC2FABFE: TStreamerInfo::BuildOld() (TStreamerInfo.cxx:2374)
==2680==    by 0xC1C9E3A: TBufferFile::ReadClassBuffer(TClass const*, void*, int, unsigned int, unsigned int, TClass const*) (TBufferFile.cxx:3686)
==2680==    by 0xC7A8BAE: TTree::Streamer(TBuffer&) (TTree.cxx:8209)
==2680==    by 0xC227E02: TKey::ReadObj() (TKey.cxx:800)
==2680==    by 0xC1D33CB: TDirectoryFile::Get(char const*) (TDirectoryFile.cxx:893)
==2680==    by 0xC75B42A: TChain::LoadTree(long long) (TChain.cxx:1538)
==2680==    by 0xC7598D1: TChain::GetEntries() const (TChain.cxx:988)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xC25146D: TStreamerInfoActions::TConfiguredAction::TConfiguredAction(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:90)
==2680==    by 0xC256547: void TStreamerInfoActions::TActionSequence::AddAction<int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*)>(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:136)
==2680==    by 0xC239FF0: TStreamerInfo::AddWriteAction(TStreamerInfoActions::TActionSequence*, int, TStreamerInfo::TCompInfo*) (TStreamerInfoActions.cxx:2774)
==2680==    by 0xC23711F: TStreamerInfo::Compile() (TStreamerInfoActions.cxx:2461)
==2680==    by 0xC2FABFE: TStreamerInfo::BuildOld() (TStreamerInfo.cxx:2374)
==2680==    by 0xC1C9E3A: TBufferFile::ReadClassBuffer(TClass const*, void*, int, unsigned int, unsigned int, TClass const*) (TBufferFile.cxx:3686)
==2680==    by 0xC7A8BAE: TTree::Streamer(TBuffer&) (TTree.cxx:8209)
==2680==    by 0xC227E02: TKey::ReadObj() (TKey.cxx:800)
==2680==    by 0xC1D33CB: TDirectoryFile::Get(char const*) (TDirectoryFile.cxx:893)
==2680==    by 0xC75B42A: TChain::LoadTree(long long) (TChain.cxx:1538)
==2680==    by 0xC7598D1: TChain::GetEntries() const (TChain.cxx:988)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xC25146D: TStreamerInfoActions::TConfiguredAction::TConfiguredAction(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:90)
==2680==    by 0xC256547: void TStreamerInfoActions::TActionSequence::AddAction<int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*)>(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:136)
==2680==    by 0xC2377D7: TStreamerInfo::AddReadAction(TStreamerInfoActions::TActionSequence*, int, TStreamerInfo::TCompInfo*) (TStreamerInfoActions.cxx:2523)
==2680==    by 0xC2370E4: TStreamerInfo::Compile() (TStreamerInfoActions.cxx:2460)
==2680==    by 0xC2FABFE: TStreamerInfo::BuildOld() (TStreamerInfo.cxx:2374)
==2680==    by 0xC1C9E3A: TBufferFile::ReadClassBuffer(TClass const*, void*, int, unsigned int, unsigned int, TClass const*) (TBufferFile.cxx:3686)
==2680==    by 0xC7A8BAE: TTree::Streamer(TBuffer&) (TTree.cxx:8209)
==2680==    by 0xC227E02: TKey::ReadObj() (TKey.cxx:800)
==2680==    by 0xC1D33CB: TDirectoryFile::Get(char const*) (TDirectoryFile.cxx:893)
==2680==    by 0xC75B42A: TChain::LoadTree(long long) (TChain.cxx:1538)
==2680==    by 0xC7598D1: TChain::GetEntries() const (TChain.cxx:988)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xC25146D: TStreamerInfoActions::TConfiguredAction::TConfiguredAction(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:90)
==2680==    by 0xC256547: void TStreamerInfoActions::TActionSequence::AddAction<int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*)>(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:136)
==2680==    by 0xC23A086: TStreamerInfo::AddWriteAction(TStreamerInfoActions::TActionSequence*, int, TStreamerInfo::TCompInfo*) (TStreamerInfoActions.cxx:2776)
==2680==    by 0xC23711F: TStreamerInfo::Compile() (TStreamerInfoActions.cxx:2461)
==2680==    by 0xC2FABFE: TStreamerInfo::BuildOld() (TStreamerInfo.cxx:2374)
==2680==    by 0xC1C9E3A: TBufferFile::ReadClassBuffer(TClass const*, void*, int, unsigned int, unsigned int, TClass const*) (TBufferFile.cxx:3686)
==2680==    by 0xC7A8BAE: TTree::Streamer(TBuffer&) (TTree.cxx:8209)
==2680==    by 0xC227E02: TKey::ReadObj() (TKey.cxx:800)
==2680==    by 0xC1D33CB: TDirectoryFile::Get(char const*) (TDirectoryFile.cxx:893)
==2680==    by 0xC75B42A: TChain::LoadTree(long long) (TChain.cxx:1538)
==2680==    by 0xC7598D1: TChain::GetEntries() const (TChain.cxx:988)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xC2514B9: TStreamerInfoActions::TConfiguredAction::TConfiguredAction(int (*)(TBuffer&, void*, void const*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:94)
==2680==    by 0xC240137: TStreamerInfoActions::TConfiguredAction GetCollectionReadAction<TStreamerInfoActions::VectorPtrLooper>(TVirtualStreamerInfo*, TStreamerElement*, int, unsigned int, TStreamerInfo::TCompInfo*, int) (TStreamerInfoActions.cxx:2104)
==2680==    by 0xC239CEA: TStreamerInfo::AddReadMemberWiseVecPtrAction(TStreamerInfoActions::TActionSequence*, int, TStreamerInfo::TCompInfo*) (TStreamerInfoActions.cxx:2751)
==2680==    by 0xC237257: TStreamerInfo::Compile() (TStreamerInfoActions.cxx:2469)
==2680==    by 0xC2FABFE: TStreamerInfo::BuildOld() (TStreamerInfo.cxx:2374)
==2680==    by 0xC1C9E3A: TBufferFile::ReadClassBuffer(TClass const*, void*, int, unsigned int, unsigned int, TClass const*) (TBufferFile.cxx:3686)
==2680==    by 0xC7A8BAE: TTree::Streamer(TBuffer&) (TTree.cxx:8209)
==2680==    by 0xC227E02: TKey::ReadObj() (TKey.cxx:800)
==2680==    by 0xC1D33CB: TDirectoryFile::Get(char const*) (TDirectoryFile.cxx:893)
==2680==    by 0xC75B42A: TChain::LoadTree(long long) (TChain.cxx:1538)
==2680==    by 0xC7598D1: TChain::GetEntries() const (TChain.cxx:988)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xC2514B9: TStreamerInfoActions::TConfiguredAction::TConfiguredAction(int (*)(TBuffer&, void*, void const*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:94)
==2680==    by 0xC2401C1: TStreamerInfoActions::TConfiguredAction GetCollectionReadAction<TStreamerInfoActions::VectorPtrLooper>(TVirtualStreamerInfo*, TStreamerElement*, int, unsigned int, TStreamerInfo::TCompInfo*, int) (TStreamerInfoActions.cxx:2106)
==2680==    by 0xC239CEA: TStreamerInfo::AddReadMemberWiseVecPtrAction(TStreamerInfoActions::TActionSequence*, int, TStreamerInfo::TCompInfo*) (TStreamerInfoActions.cxx:2751)
==2680==    by 0xC237257: TStreamerInfo::Compile() (TStreamerInfoActions.cxx:2469)
==2680==    by 0xC2FABFE: TStreamerInfo::BuildOld() (TStreamerInfo.cxx:2374)
==2680==    by 0xC1C9E3A: TBufferFile::ReadClassBuffer(TClass const*, void*, int, unsigned int, unsigned int, TClass const*) (TBufferFile.cxx:3686)
==2680==    by 0xC7A8BAE: TTree::Streamer(TBuffer&) (TTree.cxx:8209)
==2680==    by 0xC227E02: TKey::ReadObj() (TKey.cxx:800)
==2680==    by 0xC1D33CB: TDirectoryFile::Get(char const*) (TDirectoryFile.cxx:893)
==2680==    by 0xC75B42A: TChain::LoadTree(long long) (TChain.cxx:1538)
==2680==    by 0xC7598D1: TChain::GetEntries() const (TChain.cxx:988)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xC25146D: TStreamerInfoActions::TConfiguredAction::TConfiguredAction(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:90)
==2680==    by 0xC256547: void TStreamerInfoActions::TActionSequence::AddAction<int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*)>(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:136)
==2680==    by 0xC237561: TStreamerInfo::AddReadAction(TStreamerInfoActions::TActionSequence*, int, TStreamerInfo::TCompInfo*) (TStreamerInfoActions.cxx:2516)
==2680==    by 0xC2370E4: TStreamerInfo::Compile() (TStreamerInfoActions.cxx:2460)
==2680==    by 0xC2FABFE: TStreamerInfo::BuildOld() (TStreamerInfo.cxx:2374)
==2680==    by 0xBCBDDA1: TClass::GetStreamerInfo(int) const (TClass.cxx:4055)
==2680==    by 0xBCF73AE: TStreamerBase::InitStreaming() (TStreamerElement.cxx:657)
==2680==    by 0xBCF7251: TStreamerBase::Init(TObject*) (TStreamerElement.cxx:639)
==2680==    by 0xC2F6E18: TStreamerInfo::BuildOld() (TStreamerInfo.cxx:1673)
==2680==    by 0xC1CA304: TBufferFile::ReadClassBuffer(TClass const*, void*, TClass const*) (TBufferFile.cxx:3769)
==2680==    by 0xC7C2F12: TLeafI::Streamer(TBuffer&) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libTree.so)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xC25146D: TStreamerInfoActions::TConfiguredAction::TConfiguredAction(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:90)
==2680==    by 0xC256547: void TStreamerInfoActions::TActionSequence::AddAction<int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*)>(int (*)(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:136)
==2680==    by 0xC239E79: TStreamerInfo::AddWriteAction(TStreamerInfoActions::TActionSequence*, int, TStreamerInfo::TCompInfo*) (TStreamerInfoActions.cxx:2769)
==2680==    by 0xC23711F: TStreamerInfo::Compile() (TStreamerInfoActions.cxx:2461)
==2680==    by 0xC2FABFE: TStreamerInfo::BuildOld() (TStreamerInfo.cxx:2374)
==2680==    by 0xBCBDDA1: TClass::GetStreamerInfo(int) const (TClass.cxx:4055)
==2680==    by 0xBCF73AE: TStreamerBase::InitStreaming() (TStreamerElement.cxx:657)
==2680==    by 0xBCF7251: TStreamerBase::Init(TObject*) (TStreamerElement.cxx:639)
==2680==    by 0xC2F6E18: TStreamerInfo::BuildOld() (TStreamerInfo.cxx:1673)
==2680==    by 0xC1CA304: TBufferFile::ReadClassBuffer(TClass const*, void*, TClass const*) (TBufferFile.cxx:3769)
==2680==    by 0xC7C2F12: TLeafI::Streamer(TBuffer&) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libTree.so)
==2680== 
==2680== Conditional jump or move depends on uninitialised value(s)
==2680==    at 0xBC2B383: TObject::TObject() (TObject.cxx:69)
==2680==    by 0xC2514B9: TStreamerInfoActions::TConfiguredAction::TConfiguredAction(int (*)(TBuffer&, void*, void const*, TStreamerInfoActions::TConfiguration const*), TStreamerInfoActions::TConfiguration*) (TStreamerInfoActions.h:94)
==2680==    by 0xC23FFDE: TStreamerInfoActions::TConfiguredAction GetCollectionReadAction<TStreamerInfoActions::VectorPtrLooper>(TVirtualStreamerInfo*, TStreamerElement*, int, unsigned int, TStreamerInfo::TCompInfo*, int) (TStreamerInfoActions.cxx:2099)
==2680==    by 0xC239CEA: TStreamerInfo::AddReadMemberWiseVecPtrAction(TStreamerInfoActions::TActionSequence*, int, TStreamerInfo::TCompInfo*) (TStreamerInfoActions.cxx:2751)
==2680==    by 0xC237257: TStreamerInfo::Compile() (TStreamerInfoActions.cxx:2469)
==2680==    by 0xC2FABFE: TStreamerInfo::BuildOld() (TStreamerInfo.cxx:2374)
==2680==    by 0xBCBDDA1: TClass::GetStreamerInfo(int) const (TClass.cxx:4055)
==2680==    by 0xBCF73AE: TStreamerBase::InitStreaming() (TStreamerElement.cxx:657)
==2680==    by 0xBCF7251: TStreamerBase::Init(TObject*) (TStreamerElement.cxx:639)
==2680==    by 0xC2F6E18: TStreamerInfo::BuildOld() (TStreamerInfo.cxx:1673)
==2680==    by 0xC1CA304: TBufferFile::ReadClassBuffer(TClass const*, void*, TClass const*) (TBufferFile.cxx:3769)
==2680==    by 0xC7C2F12: TLeafI::Streamer(TBuffer&) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libTree.so)
==2680== 
==2680== Invalid read of size 8
==2680==    at 0xC7BF4F6: ROOT::delete_TChain(void*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libTree.so)
==2680==    by 0xBCBFE9D: TClass::Destructor(void*, bool) (TClass.cxx:4710)
==2680==    by 0xB6F10D8: PyROOT::op_dealloc_nofree(PyROOT::ObjectProxy*) (ObjectProxy.cxx:30)
==2680==    by 0xB6F16F2: PyROOT::(anonymous namespace)::op_dealloc(PyROOT::ObjectProxy*) (ObjectProxy.cxx:164)
==2680==    by 0x4CC6369: subtype_dealloc (typeobject.c:1030)
==2680==    by 0x4CA502E: insertdict_by_entry (dictobject.c:519)
==2680==    by 0x4CA7DBA: PyDict_SetItem (dictobject.c:556)
==2680==    by 0x4CAC08B: _PyModule_Clear (moduleobject.c:139)
==2680==    by 0x4D2F55C: PyImport_Cleanup (import.c:473)
==2680==    by 0x4D43BAD: Py_Finalize (pythonrun.c:459)
==2680==    by 0x4D59984: Py_Main (main.c:665)
==2680==    by 0x352541ED5C: (below main) (in /lib64/libc-2.12.so)
==2680==  Address 0x17eb52a0 is 0 bytes inside a block of size 680 free'd
==2680==    at 0x4A06016: operator delete(void*) (vg_replace_malloc.c:480)
==2680==    by 0xBC4F637: TStorage::ObjectDealloc(void*) (TStorage.cxx:347)
==2680==    by 0xBC2D952: TObject::operator delete(void*) (TObject.cxx:1036)
==2680==    by 0xC75707D: TChain::~TChain() (TChain.cxx:204)
==2680==    by 0xC79C996: TTree::Delete(char const*) (TTree.cxx:3436)
==2680==    by 0x10E4F8A4: ???
==2680==    by 0xF052285: TClingCallFunc::exec(void*, void*) const (TClingCallFunc.cxx:1873)
==2680==    by 0xF052FCD: TClingCallFunc::Exec(void*, TInterpreterValue*) (TClingCallFunc.cxx:2113)
==2680==    by 0xEF9F6E2: TCling::CallFunc_Exec(CallFunc_t*, void*) const (TCling.cxx:6031)
==2680==    by 0xB6E101F: PRCallFuncExec(CallFunc_t*, void*, bool) (Executors.cxx:40)
==2680==    by 0xB6E23A5: PyROOT::TVoidExecutor::Execute(CallFunc_t*, void*, bool) (Executors.cxx:265)
==2680==    by 0xB71324B: PyROOT::TMethodHolder::CallFast(void*, bool) (TMethodHolder.cxx:80)
==2680== 
==2680== Invalid write of size 8
==2680==    at 0xBC2B5EB: TObject::~TObject() (TObject.cxx:138)
==2680==    by 0xBC2B6D5: TObject::~TObject() (TObject.cxx:159)
==2680==    by 0xC7BF508: ROOT::delete_TChain(void*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libTree.so)
==2680==    by 0xBCBFE9D: TClass::Destructor(void*, bool) (TClass.cxx:4710)
==2680==    by 0xB6F10D8: PyROOT::op_dealloc_nofree(PyROOT::ObjectProxy*) (ObjectProxy.cxx:30)
==2680==    by 0xB6F16F2: PyROOT::(anonymous namespace)::op_dealloc(PyROOT::ObjectProxy*) (ObjectProxy.cxx:164)
==2680==    by 0x4CC6369: subtype_dealloc (typeobject.c:1030)
==2680==    by 0x4CA502E: insertdict_by_entry (dictobject.c:519)
==2680==    by 0x4CA7DBA: PyDict_SetItem (dictobject.c:556)
==2680==    by 0x4CAC08B: _PyModule_Clear (moduleobject.c:139)
==2680==    by 0x4D2F55C: PyImport_Cleanup (import.c:473)
==2680==    by 0x4D43BAD: Py_Finalize (pythonrun.c:459)
==2680==  Address 0x17eb52a0 is 0 bytes inside a block of size 680 free'd
==2680==    at 0x4A06016: operator delete(void*) (vg_replace_malloc.c:480)
==2680==    by 0xBC4F637: TStorage::ObjectDealloc(void*) (TStorage.cxx:347)
==2680==    by 0xBC2D952: TObject::operator delete(void*) (TObject.cxx:1036)
==2680==    by 0xC75707D: TChain::~TChain() (TChain.cxx:204)
==2680==    by 0xC79C996: TTree::Delete(char const*) (TTree.cxx:3436)
==2680==    by 0x10E4F8A4: ???
==2680==    by 0xF052285: TClingCallFunc::exec(void*, void*) const (TClingCallFunc.cxx:1873)
==2680==    by 0xF052FCD: TClingCallFunc::Exec(void*, TInterpreterValue*) (TClingCallFunc.cxx:2113)
==2680==    by 0xEF9F6E2: TCling::CallFunc_Exec(CallFunc_t*, void*) const (TCling.cxx:6031)
==2680==    by 0xB6E101F: PRCallFuncExec(CallFunc_t*, void*, bool) (Executors.cxx:40)
==2680==    by 0xB6E23A5: PyROOT::TVoidExecutor::Execute(CallFunc_t*, void*, bool) (Executors.cxx:265)
==2680==    by 0xB71324B: PyROOT::TMethodHolder::CallFast(void*, bool) (TMethodHolder.cxx:80)
==2680== 
==2680== Invalid read of size 4
==2680==    at 0xB6F1E0F: TObject::TestBit(unsigned int) const (TObject.h:171)
==2680==    by 0xBC2B632: TObject::~TObject() (TObject.cxx:150)
==2680==    by 0xBC2B6D5: TObject::~TObject() (TObject.cxx:159)
==2680==    by 0xC7BF508: ROOT::delete_TChain(void*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libTree.so)
==2680==    by 0xBCBFE9D: TClass::Destructor(void*, bool) (TClass.cxx:4710)
==2680==    by 0xB6F10D8: PyROOT::op_dealloc_nofree(PyROOT::ObjectProxy*) (ObjectProxy.cxx:30)
==2680==    by 0xB6F16F2: PyROOT::(anonymous namespace)::op_dealloc(PyROOT::ObjectProxy*) (ObjectProxy.cxx:164)
==2680==    by 0x4CC6369: subtype_dealloc (typeobject.c:1030)
==2680==    by 0x4CA502E: insertdict_by_entry (dictobject.c:519)
==2680==    by 0x4CA7DBA: PyDict_SetItem (dictobject.c:556)
==2680==    by 0x4CAC08B: _PyModule_Clear (moduleobject.c:139)
==2680==    by 0x4D2F55C: PyImport_Cleanup (import.c:473)
==2680==  Address 0x17eb52ac is 12 bytes inside a block of size 680 free'd
==2680==    at 0x4A06016: operator delete(void*) (vg_replace_malloc.c:480)
==2680==    by 0xBC4F637: TStorage::ObjectDealloc(void*) (TStorage.cxx:347)
==2680==    by 0xBC2D952: TObject::operator delete(void*) (TObject.cxx:1036)
==2680==    by 0xC75707D: TChain::~TChain() (TChain.cxx:204)
==2680==    by 0xC79C996: TTree::Delete(char const*) (TTree.cxx:3436)
==2680==    by 0x10E4F8A4: ???
==2680==    by 0xF052285: TClingCallFunc::exec(void*, void*) const (TClingCallFunc.cxx:1873)
==2680==    by 0xF052FCD: TClingCallFunc::Exec(void*, TInterpreterValue*) (TClingCallFunc.cxx:2113)
==2680==    by 0xEF9F6E2: TCling::CallFunc_Exec(CallFunc_t*, void*) const (TCling.cxx:6031)
==2680==    by 0xB6E101F: PRCallFuncExec(CallFunc_t*, void*, bool) (Executors.cxx:40)
==2680==    by 0xB6E23A5: PyROOT::TVoidExecutor::Execute(CallFunc_t*, void*, bool) (Executors.cxx:265)
==2680==    by 0xB71324B: PyROOT::TMethodHolder::CallFast(void*, bool) (TMethodHolder.cxx:80)
==2680== 
==2680== Invalid read of size 4
==2680==    at 0xBC2B660: TObject::~TObject() (TObject.cxx:156)
==2680==    by 0xBC2B6D5: TObject::~TObject() (TObject.cxx:159)
==2680==    by 0xC7BF508: ROOT::delete_TChain(void*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libTree.so)
==2680==    by 0xBCBFE9D: TClass::Destructor(void*, bool) (TClass.cxx:4710)
==2680==    by 0xB6F10D8: PyROOT::op_dealloc_nofree(PyROOT::ObjectProxy*) (ObjectProxy.cxx:30)
==2680==    by 0xB6F16F2: PyROOT::(anonymous namespace)::op_dealloc(PyROOT::ObjectProxy*) (ObjectProxy.cxx:164)
==2680==    by 0x4CC6369: subtype_dealloc (typeobject.c:1030)
==2680==    by 0x4CA502E: insertdict_by_entry (dictobject.c:519)
==2680==    by 0x4CA7DBA: PyDict_SetItem (dictobject.c:556)
==2680==    by 0x4CAC08B: _PyModule_Clear (moduleobject.c:139)
==2680==    by 0x4D2F55C: PyImport_Cleanup (import.c:473)
==2680==    by 0x4D43BAD: Py_Finalize (pythonrun.c:459)
==2680==  Address 0x17eb52ac is 12 bytes inside a block of size 680 free'd
==2680==    at 0x4A06016: operator delete(void*) (vg_replace_malloc.c:480)
==2680==    by 0xBC4F637: TStorage::ObjectDealloc(void*) (TStorage.cxx:347)
==2680==    by 0xBC2D952: TObject::operator delete(void*) (TObject.cxx:1036)
==2680==    by 0xC75707D: TChain::~TChain() (TChain.cxx:204)
==2680==    by 0xC79C996: TTree::Delete(char const*) (TTree.cxx:3436)
==2680==    by 0x10E4F8A4: ???
==2680==    by 0xF052285: TClingCallFunc::exec(void*, void*) const (TClingCallFunc.cxx:1873)
==2680==    by 0xF052FCD: TClingCallFunc::Exec(void*, TInterpreterValue*) (TClingCallFunc.cxx:2113)
==2680==    by 0xEF9F6E2: TCling::CallFunc_Exec(CallFunc_t*, void*) const (TCling.cxx:6031)
==2680==    by 0xB6E101F: PRCallFuncExec(CallFunc_t*, void*, bool) (Executors.cxx:40)
==2680==    by 0xB6E23A5: PyROOT::TVoidExecutor::Execute(CallFunc_t*, void*, bool) (Executors.cxx:265)
==2680==    by 0xB71324B: PyROOT::TMethodHolder::CallFast(void*, bool) (TMethodHolder.cxx:80)
==2680== 
==2680== Invalid write of size 4
==2680==    at 0xBC2B66E: TObject::~TObject() (TObject.cxx:156)
==2680==    by 0xBC2B6D5: TObject::~TObject() (TObject.cxx:159)
==2680==    by 0xC7BF508: ROOT::delete_TChain(void*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libTree.so)
==2680==    by 0xBCBFE9D: TClass::Destructor(void*, bool) (TClass.cxx:4710)
==2680==    by 0xB6F10D8: PyROOT::op_dealloc_nofree(PyROOT::ObjectProxy*) (ObjectProxy.cxx:30)
==2680==    by 0xB6F16F2: PyROOT::(anonymous namespace)::op_dealloc(PyROOT::ObjectProxy*) (ObjectProxy.cxx:164)
==2680==    by 0x4CC6369: subtype_dealloc (typeobject.c:1030)
==2680==    by 0x4CA502E: insertdict_by_entry (dictobject.c:519)
==2680==    by 0x4CA7DBA: PyDict_SetItem (dictobject.c:556)
==2680==    by 0x4CAC08B: _PyModule_Clear (moduleobject.c:139)
==2680==    by 0x4D2F55C: PyImport_Cleanup (import.c:473)
==2680==    by 0x4D43BAD: Py_Finalize (pythonrun.c:459)
==2680==  Address 0x17eb52ac is 12 bytes inside a block of size 680 free'd
==2680==    at 0x4A06016: operator delete(void*) (vg_replace_malloc.c:480)
==2680==    by 0xBC4F637: TStorage::ObjectDealloc(void*) (TStorage.cxx:347)
==2680==    by 0xBC2D952: TObject::operator delete(void*) (TObject.cxx:1036)
==2680==    by 0xC75707D: TChain::~TChain() (TChain.cxx:204)
==2680==    by 0xC79C996: TTree::Delete(char const*) (TTree.cxx:3436)
==2680==    by 0x10E4F8A4: ???
==2680==    by 0xF052285: TClingCallFunc::exec(void*, void*) const (TClingCallFunc.cxx:1873)
==2680==    by 0xF052FCD: TClingCallFunc::Exec(void*, TInterpreterValue*) (TClingCallFunc.cxx:2113)
==2680==    by 0xEF9F6E2: TCling::CallFunc_Exec(CallFunc_t*, void*) const (TCling.cxx:6031)
==2680==    by 0xB6E101F: PRCallFuncExec(CallFunc_t*, void*, bool) (Executors.cxx:40)
==2680==    by 0xB6E23A5: PyROOT::TVoidExecutor::Execute(CallFunc_t*, void*, bool) (Executors.cxx:265)
==2680==    by 0xB71324B: PyROOT::TMethodHolder::CallFast(void*, bool) (TMethodHolder.cxx:80)
==2680== 
==2680== Invalid free() / delete / delete[] / realloc()
==2680==    at 0x4A06016: operator delete(void*) (vg_replace_malloc.c:480)
==2680==    by 0xBC4F637: TStorage::ObjectDealloc(void*) (TStorage.cxx:347)
==2680==    by 0xBC2D952: TObject::operator delete(void*) (TObject.cxx:1036)
==2680==    by 0xBC2B6E1: TObject::~TObject() (TObject.cxx:159)
==2680==    by 0xC7BF508: ROOT::delete_TChain(void*) (in /imports/home/edawe/software/root/root-HEAD/lib/root/libTree.so)
==2680==    by 0xBCBFE9D: TClass::Destructor(void*, bool) (TClass.cxx:4710)
==2680==    by 0xB6F10D8: PyROOT::op_dealloc_nofree(PyROOT::ObjectProxy*) (ObjectProxy.cxx:30)
==2680==    by 0xB6F16F2: PyROOT::(anonymous namespace)::op_dealloc(PyROOT::ObjectProxy*) (ObjectProxy.cxx:164)
==2680==    by 0x4CC6369: subtype_dealloc (typeobject.c:1030)
==2680==    by 0x4CA502E: insertdict_by_entry (dictobject.c:519)
==2680==    by 0x4CA7DBA: PyDict_SetItem (dictobject.c:556)
==2680==    by 0x4CAC08B: _PyModule_Clear (moduleobject.c:139)
==2680==  Address 0x17eb52a0 is 0 bytes inside a block of size 680 free'd
==2680==    at 0x4A06016: operator delete(void*) (vg_replace_malloc.c:480)
==2680==    by 0xBC4F637: TStorage::ObjectDealloc(void*) (TStorage.cxx:347)
==2680==    by 0xBC2D952: TObject::operator delete(void*) (TObject.cxx:1036)
==2680==    by 0xC75707D: TChain::~TChain() (TChain.cxx:204)
==2680==    by 0xC79C996: TTree::Delete(char const*) (TTree.cxx:3436)
==2680==    by 0x10E4F8A4: ???
==2680==    by 0xF052285: TClingCallFunc::exec(void*, void*) const (TClingCallFunc.cxx:1873)
==2680==    by 0xF052FCD: TClingCallFunc::Exec(void*, TInterpreterValue*) (TClingCallFunc.cxx:2113)
==2680==    by 0xEF9F6E2: TCling::CallFunc_Exec(CallFunc_t*, void*) const (TCling.cxx:6031)
==2680==    by 0xB6E101F: PRCallFuncExec(CallFunc_t*, void*, bool) (Executors.cxx:40)
==2680==    by 0xB6E23A5: PyROOT::TVoidExecutor::Execute(CallFunc_t*, void*, bool) (Executors.cxx:265)
==2680==    by 0xB71324B: PyROOT::TMethodHolder::CallFast(void*, bool) (TMethodHolder.cxx:80)
==2680== 
==2680== 
==2680== HEAP SUMMARY:
==2680==     in use at exit: 39,017,280 bytes in 93,471 blocks
==2680==   total heap usage: 310,011 allocs, 216,541 frees, 255,176,246 bytes allocated
==2680== 
==2680== LEAK SUMMARY:
==2680==    definitely lost: 753 bytes in 4 blocks
==2680==    indirectly lost: 0 bytes in 0 blocks
==2680==      possibly lost: 739,116 bytes in 8,549 blocks
==2680==    still reachable: 38,277,411 bytes in 84,918 blocks
==2680==         suppressed: 0 bytes in 0 blocks
==2680== Rerun with --leak-check=full to see details of leaked memory
==2680== 
==2680== For counts of detected and suppressed errors, rerun with: -v
==2680== Use --track-origins=yes to see where uninitialised values come from
==2680== ERROR SUMMARY: 1412 errors from 53 contexts (suppressed: 609 from 68)

Comment by Philippe Canal [ 13/Jan/15 ]

Hi Noel, Wim,

from ROOT import TTree
 
c = TTree('tree', 'tree')
c.Delete()

So this is indeed a lifetime issue involving pyroot. Pyroot (must) consider that the object are semantically created on a stack and must be deleted. The call 'c.Delete()' does not inform pyroot that the object has been deleted and thus there is a double deletion. (This example fails the same way in v5.34).

Cheers,
Philippe.

Comment by Noel Dawe (Inactive) [ 14/Jan/15 ]

Interesting. I didn't realise this was also a problem in 5.34. I then think that this might not be exactly the same problem now in 6.04 since the original segmentation fault related to TFile::Close() does not happen in 5.X. Looks like more than one issue at play here.

I've been trying to reproduce the TFile::Close() / TChain destructor issue in a minimal example without any luck yet. I'll keep poking. But maybe the output from valgrind above shows some clues.

Comment by Noel Dawe (Inactive) [ 14/Jan/15 ]

Philippe:

Is this a valid TChain state?

*fTree                        ->31e8a60           ! Pointer to current tree (Note: We do *not* own this tree.)
*fFile                        ->30e44c0           ! Pointer to current file (We own the file).
*fFiles                       ->0                 -> List of file names containing the trees (TChainElement, owned)
*fStatus                      ->0                 -> List of active/inactive branches (TChainElement, owned)

Comment by Philippe Canal [ 14/Jan/15 ]

Hi Noel,

This is unlikely (no content fFiles but still some pointers to a file or a TTree).

Cheers,
Philippe.

PS. Valgrind was accurate in the run you made and so you can likely rely on it to track down the problem. Note that you can use:

valgrind --suppressions=$ROOTSYS/etc/root/valgrind-root-python.supp --suppressions=$ROOTSYS/etc/root/valgrind-root.supp python test.py 

to significant reduce the noise (in particular the TObject reports).

Comment by Noel Dawe (Inactive) [ 14/Jan/15 ]

There seems to be a problem with that suppression file:

valgrind --suppressions=$ROOTSYS/etc/root/valgrind-root-python.supp --suppressions=$ROOTSYS/etc/root/valgrind-root.supp python test3.py ==796== Memcheck, a memory error detector
==796== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al.
==796== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info
==796== Command: python test3.py
==796== 
location should be "...", or should start with "fun:" or "obj:"
==796== FATAL: in suppressions file "/home/edawe/software/root/root-HEAD/etc/root/valgrind-root.supp" near line 310:
==796==    location should be "...", or should start with "fun:" or "obj:"
==796== exiting now.

Comment by Noel Dawe (Inactive) [ 14/Jan/15 ]

Doesn't seem to accept: "match-leak-kinds: definite"

What's up?

Comment by Noel Dawe (Inactive) [ 14/Jan/15 ]

==2103== Invalid read of size 8
==2103==    at 0x12D1AA0E: TFile::Close(char const*) (TFile.cxx:907)
==2103==    by 0x12D18453: TFile::~TFile() (TFile.cxx:527)
==2103==    by 0x12D1897F: TFile::~TFile() (TFile.cxx:553)
==2103==    by 0x1449AF70: TChain::~TChain() (TChain.cxx:190)
==2103==    by 0x1449B071: TChain::~TChain() (TChain.cxx:204)
==2103==    by 0x1227A0D3: __pyx_pw_13_librootnumpy_7root2array_fromFname(_object*, _object*, _object*) (tree.pyx:713)
==2103==    by 0x4D16878: PyEval_EvalFrameEx (ceval.c:4033)
==2103==    by 0x4D180AC: PyEval_EvalCodeEx (ceval.c:3265)
==2103==    by 0x4D16370: PyEval_EvalFrameEx (ceval.c:4129)
==2103==    by 0x4D180AC: PyEval_EvalCodeEx (ceval.c:3265)
==2103==    by 0x4D181E1: PyEval_EvalCode (ceval.c:667)
==2103==    by 0x4D42E31: PyRun_FileExFlags (pythonrun.c:1371)
==2103==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
==2103== 
 
 *** Break *** segmentation violation
#0  vgModuleLocal_do_syscall_for_client_WRK () at m_syswrap/syscall-amd64-linux.S:147
#1  0x0000000000000008 in ?? ()
#2  0x0000000402f04dd0 in ?? ()
#3  0x0000000402f04e40 in ?? ()
#4  0x000000003aaeec40 in vgPlain_threads ()
#5  0x000000000000003d in ?? ()
#6  0x0000000402f04e40 in ?? ()
#7  0x000000003aed6848 in syscallInfo ()
#8  0x000000000000003d in ?? ()
#9  0x0000000000000001 in ?? ()
#10 0x000000003aaeec30 in vgPlain_threads ()
#11 0x000000003aed67b8 in syscallInfo ()
#12 0x000000003807c19e in do_syscall_for_client (tid=1, trc=<value optimized out>) at m_syswrap/syswrap-main.c:310
#13 vgPlain_client_syscall (tid=1, trc=<value optimized out>) at m_syswrap/syswrap-main.c:1560
#14 0x0000000038078a40 in handle_syscall (tid=1, trc=73) at m_scheduler/scheduler.c:1057
#15 0x0000000038079bd7 in vgPlain_scheduler (tid=1) at m_scheduler/scheduler.c:1335
#16 0x00000000380a5a2a in thread_wrapper (tidW=1) at m_syswrap/syswrap-linux.c:103
#17 run_a_thread_NORETURN (tidW=1) at m_syswrap/syswrap-linux.c:156
#18 0x0000000000000000 in ?? ()
==> Dumping object at: 0x0000000020434190, name=tree, class=TChain
 
fTreeOffsetLen                100                 Current size of fTreeOffset array
fNtrees                       1                   Number of trees
fTreeNumber                   0                   ! Current Tree number in fTreeOffset table
*fTreeOffset                                      [fTreeOffsetLen] Array of variables
fCanDeleteRefs                false               ! If true, TProcessIDs are deleted when closing a file
*fTree                        ->116dd350          ! Pointer to current tree (Note: We do *not* own this tree.)
*fFile                        ->21c92c00          ! Pointer to current file (We own the file).
*fFiles                       ->0                 -> List of file names containing the trees (TChainElement, owned)
*fStatus                      ->0                 -> List of active/inactive branches (TChainElement, owned)
*fProofChain                  ->0                 ! chain proxy when going to be processed by PROOF
fEntries                                          Number of entries
fTotBytes                                         Total number of bytes in all branches before compression
fZipBytes                                         Total number of bytes in all branches after compression
fSavedBytes                                       Number of autosaved bytes
fFlushedBytes                                     Number of autoflushed bytes
fWeight                       1                   Tree weight (see TTree::SetWeight)
fTimerInterval                0                   Timer interval in milliseconds
fScanField                    25                  Number of runs before prompting in Scan
fUpdate                       0                   Update frequency for EntryLoop
fDefaultEntryOffsetLen        1000                Initial Length of fEntryOffset table in the basket buffers
fNClusterRange                0                   Number of Cluster range in addition to the one defined by 'AutoFlush'
fMaxClusterRange              0                   ! Memory allocated for the cluster range.
fMaxEntries                                       Maximum number of entries in case of circular buffers
fMaxEntryLoop                                     Maximum number of entries to process
fMaxVirtualSize                                   Maximum total size of buffers kept in memory
fAutoSave                                         Autosave tree when fAutoSave bytes produced
fAutoFlush                                        Autoflush tree when fAutoFlush entries written
fEstimate                                         Number of entries to estimate histogram limits
*fClusterRangeEnd             ->0                 [fNClusterRange] Last entry of a cluster range.
*fClusterSize                 ->0                 [fNClusterRange] Number of entries in each cluster for a given range.
fCacheSize                                        ! Maximum size of file buffers
fChainOffset                                      ! Offset of 1st entry of this Tree in a TChain
fReadEntry                                        ! Number of the entry being processed
fTotalBuffers                                     ! Total number of bytes in branch buffers
fPacketSize                   100                 ! Number of entries in one packet for parallel root
fNfill                        0                   ! Local for EntryLoop
fDebug                        0                   ! Debug level
fDebugMin                                         ! First entry number to debug
fDebugMax                                         ! Last entry number to debug
fMakeClass                    0                   ! not zero when processing code generated by MakeClass
fFileNumber                   0                   ! current file number (if file extensions)
*fNotify                      ->0                 ! Object to be notified when loading a Tree
*fDirectory                   ->21c92c00          ! Pointer to directory holding this tree
fBranches                     ->204342e0          List of Branches
fBranches.*fCont              ->1195d420          !Array contents
fBranches.fLowerBound         0                   Lower bound of the array
fBranches.fLast               -1                  Last element in array containing an object
fBranches.fSorted             false               true if collection has been sorted
fBranches.fName                                   name of the collection
fBranches.fName.fRep          ->204342f8          ! String data
fBranches.fName.fRep.         ->204342f8          
fBranches.fSize               16                  number of elements in collection
fBranches.fUniqueID           0                   object unique identifier
fBranches.fBits               0x03004000          bit field status word
fLeaves                       ->20434320          Direct pointers to individual branch leaves
fLeaves.*fCont                ->11855000          !Array contents
fLeaves.fLowerBound           0                   Lower bound of the array
fLeaves.fLast                 -1                  Last element in array containing an object
fLeaves.fSorted               false               true if collection has been sorted
fLeaves.fName                                     name of the collection
fLeaves.fName.fRep            ->20434338          ! String data
fLeaves.fName.fRep.           ->20434338          
fLeaves.fSize                 16                  number of elements in collection
fLeaves.fUniqueID             0                   object unique identifier
fLeaves.fBits                 0x03000000          bit field status word
*fAliases                     ->0                 List of aliases for expressions based on the tree branches.
*fEventList                   ->0                 ! Pointer to event selection list (if one)
*fEntryList                   ->0                 ! Pointer to event selection list (if one)
fIndexValues                  ->20434378          Sorted index values
fIndexValues.*fArray          ->0                 [fN] Array of fN doubles
fIndexValues.fN               0                   Number of array elements
fIndex                        ->20434390          Index of sorted values
fIndex.*fArray                ->0                 [fN] Array of fN 32 bit integers
fIndex.fN                     0                   Number of array elements
*fTreeIndex                   ->0                 Pointer to the tree Index (if any)
*fFriends                     ->0                 pointer to list of friend elements
*fPerfStats                   ->0                 ! pointer to the current perf stats object
*fUserInfo                    ->0                 pointer to a list of user objects associated to this Tree
*fPlayer                      ->0                 ! Pointer to current Tree player
*fClones                      ->0                 ! List of cloned trees which share our addresses
*fBranchRef                   ->0                 Branch supporting the TRefTable (if any)
fFriendLockStatus             0                   ! Record which method is locking the friend recursion
*fTransientBuffer             ->0                 ! Pointer to the current transient buffer.
fCacheDoAutoInit              false               ! true if cache auto creation or resize check is needed
fCacheUserSet                 false               ! true if the cache setting was explicitly given by user
fName                         tree                object identifier
fName.fRep                    ->204341a8          ! String data
fName.fRep.                   ->204341a8          
fTitle                                            object title
fTitle.fRep                   ->204341c0          ! String data
fTitle.fRep.                  ->204341c0          
fUniqueID                     0                   object unique identifier
fBits                         0x03000008          bit field status word
fLineColor                    602                 line color
fLineStyle                    1                   line style
fLineWidth                    1                   line width
fFillColor                    0                   fill area color
fFillStyle                    1001                fill area style
fMarkerColor                  1                   Marker color index
fMarkerStyle                  1                   Marker style
fMarkerSize                   1                   Marker size
==2103== Invalid read of size 8
==2103==    at 0x15C2D582: __dynamic_cast (in /cvmfs/atlas.cern.ch/repo/ATLASLocalRootBase/x86_64/Gcc/gcc481_x86_64_slc6/slc6/x86_64-slc6-gcc48-opt/lib64/libstdc++.so.6.0.18)
==2103==    by 0x12D1AA05: TFile::Close(char const*) (TFile.cxx:906)
==2103==    by 0x1277A4C3: (anonymous namespace)::R__ListSlowClose(TList*) (TROOT.cxx:804)
==2103==    by 0x1277A5B5: TROOT::CloseFiles() (TROOT.cxx:825)
==2103==    by 0x1277ABD7: TROOT::EndOfProcessCleanups() (TROOT.cxx:899)
==2103==    by 0x1283629F: TUnixSystem::Exit(int, bool) (TUnixSystem.cxx:2104)
==2103==    by 0x1283A381: TUnixSystem::DispatchSignals(ESignals) (TUnixSystem.cxx:3540)
==2103==    by 0x12832890: SigHandler(ESignals) (TUnixSystem.cxx:395)
==2103==    by 0x1283A256: sighandler(int) (TUnixSystem.cxx:3510)
==2103==    by 0x3525C0F70F: ??? (in /lib64/libpthread-2.12.so)
==2103==    by 0x12D1AA0D: TFile::Close(char const*) (TFile.cxx:907)
==2103==    by 0x12D18453: TFile::~TFile() (TFile.cxx:527)
==2103==  Address 0x218a0700 is 0 bytes inside a block of size 392 free'd
==2103==    at 0x4A06016: operator delete(void*) (vg_replace_malloc.c:480)
==2103==    by 0x12782637: TStorage::ObjectDealloc(void*) (TStorage.cxx:347)
==2103==    by 0x12760952: TObject::operator delete(void*) (TObject.cxx:1036)
==2103==    by 0x144C8FD5: TTreeCache::~TTreeCache() (TTreeCache.cxx:328)
==2103==    by 0x1449AF02: TChain::~TChain() (TChain.cxx:186)
==2103==    by 0x1449B071: TChain::~TChain() (TChain.cxx:204)
==2103==    by 0x1227A0D3: __pyx_pw_13_librootnumpy_7root2array_fromFname(_object*, _object*, _object*) (tree.pyx:713)
==2103==    by 0x4D16878: PyEval_EvalFrameEx (ceval.c:4033)
==2103==    by 0x4D180AC: PyEval_EvalCodeEx (ceval.c:3265)
==2103==    by 0x4D16370: PyEval_EvalFrameEx (ceval.c:4129)
==2103==    by 0x4D180AC: PyEval_EvalCodeEx (ceval.c:3265)
==2103==    by 0x4D181E1: PyEval_EvalCode (ceval.c:667)
==2103== 
==2103== Invalid read of size 8
==2103==    at 0x12D1AA0E: TFile::Close(char const*) (TFile.cxx:907)
==2103==    by 0x1277A4C3: (anonymous namespace)::R__ListSlowClose(TList*) (TROOT.cxx:804)
==2103==    by 0x1277A5B5: TROOT::CloseFiles() (TROOT.cxx:825)
==2103==    by 0x1277ABD7: TROOT::EndOfProcessCleanups() (TROOT.cxx:899)
==2103==    by 0x1283629F: TUnixSystem::Exit(int, bool) (TUnixSystem.cxx:2104)
==2103==    by 0x1283A381: TUnixSystem::DispatchSignals(ESignals) (TUnixSystem.cxx:3540)
==2103==    by 0x12832890: SigHandler(ESignals) (TUnixSystem.cxx:395)
==2103==    by 0x1283A256: sighandler(int) (TUnixSystem.cxx:3510)
==2103==    by 0x3525C0F70F: ??? (in /lib64/libpthread-2.12.so)
==2103==    by 0x12D1AA0D: TFile::Close(char const*) (TFile.cxx:907)
==2103==    by 0x12D18453: TFile::~TFile() (TFile.cxx:527)
==2103==    by 0x12D1897F: TFile::~TFile() (TFile.cxx:553)
==2103==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
==2103== 
==2103== 
==2103== Process terminating with default action of signal 11 (SIGSEGV)
==2103==  Access not within mapped region at address 0x0
==2103==    at 0x12D1AA0E: TFile::Close(char const*) (TFile.cxx:907)
==2103==    by 0x1277A4C3: (anonymous namespace)::R__ListSlowClose(TList*) (TROOT.cxx:804)
==2103==    by 0x1277A5B5: TROOT::CloseFiles() (TROOT.cxx:825)
==2103==    by 0x1277ABD7: TROOT::EndOfProcessCleanups() (TROOT.cxx:899)
==2103==    by 0x1283629F: TUnixSystem::Exit(int, bool) (TUnixSystem.cxx:2104)
==2103==    by 0x1283A381: TUnixSystem::DispatchSignals(ESignals) (TUnixSystem.cxx:3540)
==2103==    by 0x12832890: SigHandler(ESignals) (TUnixSystem.cxx:395)
==2103==    by 0x1283A256: sighandler(int) (TUnixSystem.cxx:3510)
==2103==    by 0x3525C0F70F: ??? (in /lib64/libpthread-2.12.so)
==2103==    by 0x12D1AA0D: TFile::Close(char const*) (TFile.cxx:907)
==2103==    by 0x12D18453: TFile::~TFile() (TFile.cxx:527)
==2103==    by 0x12D1897F: TFile::~TFile() (TFile.cxx:553)
==2103==  If you believe this happened as a result of a stack
==2103==  overflow in your program's main thread (unlikely but
==2103==  possible), you can try to increase the size of the
==2103==  main thread stack using the --main-stacksize= flag.
==2103==  The main thread stack size used in this run was 10485760.
==2103== 
==2103== HEAP SUMMARY:
==2103==     in use at exit: 36,868,494 bytes in 72,510 blocks
==2103==   total heap usage: 237,575 allocs, 165,065 frees, 200,734,724 bytes allocated
==2103== 
==2103== LEAK SUMMARY:
==2103==    definitely lost: 2,353 bytes in 12 blocks
==2103==    indirectly lost: 0 bytes in 0 blocks
==2103==      possibly lost: 639,433 bytes in 4,296 blocks
==2103==    still reachable: 36,133,199 bytes in 66,715 blocks
==2103==         suppressed: 93,509 bytes in 1,487 blocks
==2103== Rerun with --leak-check=full to see details of leaked memory
==2103== 
==2103== For counts of detected and suppressed errors, rerun with: -v
==2103== Use --track-origins=yes to see where uninitialised values come from
==2103== ERROR SUMMARY: 48 errors from 5 contexts (suppressed: 3337 from 119)
Segmentation fault

Line numbers correspond to the modified TFile.cxx:

 899    // Finish any concurrent I/O operations before we close the file handles.
 900    if (fCacheRead) fCacheRead->Close();
 901    {
 902       TIter iter(fCacheReadMap);
 903       TObject *key = 0;
 904       while ((key = iter()) != 0) {
 905          key->Dump();
 906          TFileCacheRead *cache = dynamic_cast<TFileCacheRead *>(fCacheReadMap->GetValue(key));
 907          cache->Close();
 908       }
 909    }

Comment by Noel Dawe (Inactive) [ 14/Jan/15 ]

Philippe:

Any ideas from you on what changes between ROOT 5 and 6 that could be related to this would be very helpful.

Comment by Noel Dawe (Inactive) [ 14/Jan/15 ]

If I protect against cache being NULL, then the issue is fixed:

diff --git a/io/io/src/TFile.cxx b/io/io/src/TFile.cxx
index 2e2a14d..466adcd 100644
--- a/io/io/src/TFile.cxx
+++ b/io/io/src/TFile.cxx
@@ -903,7 +903,7 @@ void TFile::Close(Option_t *option)
       TObject *key = 0;
       while ((key = iter()) != 0) {
          TFileCacheRead *cache = dynamic_cast<TFileCacheRead *>(fCacheReadMap->GetValue(key));
-         cache->Close();
+         if (cache) cache->Close();
       }
    }

Comment by Noel Dawe (Inactive) [ 14/Jan/15 ]

Bah. With that protection, the crash doesn't occur every run. But the dynamic_cast still fails sometimes.

Comment by Noel Dawe (Inactive) [ 15/Jan/15 ]

OK guys, I made some progress.

Here is minimal code in Python and C++ that reproduces the crash (use the attached test.root):

Python:

from ROOT import TChain
 
c = TChain('tree')
c.Add('test.root')
c.LoadTree(0) # <=== trigger dynamic_cast bug in TFile::Close(), or ~TChain() if c.Delete() is present below
c.AddBranchToCache('f_float')
c.SetCacheSize(1000000)
c.Delete() # <=== trigger PyROOT double-deletion bug

C++:

#include "TChain.h"
 
int main() {
    TChain* c = new TChain("tree");
    c->Add("test.root");
    c->LoadTree(0);
    c->AddBranchToCache("f_float");
    c->SetCacheSize(1000000);
    delete c;
}

You get one of three possible crashes depending on if c.Delete() is present (for Python). Only the dynamic_cast crash in C++.

TChain caching in ROOT 6 appears to be broken. Do you get the same crashes on your end? Philippe?

Comment by Philippe Canal [ 15/Jan/15 ]

Hi Noel,

Yes, I do ... the random behavior is expected when dealing with double deletes.

Note that this new example also behaves the exact same way in ROOT v5 (as confirmed by valgrind)

The issue is that c.Delete() does not inform python of the object deletion.

What you meant to use is:

del c # <=== does *not* trigger PyROOT double-deletion bug

Cheers,
Philippe.

Comment by Noel Dawe (Inactive) [ 15/Jan/15 ]

I actually meant to use c.Delete() in order to trigger that double-deletion in Python.

But that isn't the full story. Did you try the C++ code I included? No python issues there, but it crashes for me. Enabling the TChain cache in that way triggers a bad dynamic_cast in TFile::Close() called by TChain's destructor. That really must be a separate issue!

The lines below might hint at the cause of the crash.
If they do not help you then please submit a bug report at
http://root.cern.ch/bugs. Please post the ENTIRE stack trace
from above as an attachment in addition to anything else
that might help us fixing this issue.
===========================================================
#8  0x00007f2819528378 in main_arena () from /lib64/libc.so.6
#9  0x00007f2819a2c5cf in __dynamic_cast () from /cvmfs/atlas.cern.ch/repo/ATLASLocalRootBase/x86_64/Gcc/gcc481_x86_64_slc6/slc6/gcc48/lib64/libstdc++.so.6
#10 0x00007f28182d69ef in TFile::Close(char const*) () at /imports/home/edawe/software/root/src/io/io/src/TFile.cxx:905
#11 0x00007f28182d4454 in TFile::~TFile() () at /imports/home/edawe/software/root/src/io/io/src/TFile.cxx:527
#12 0x00007f28182d4980 in TFile::~TFile() () at /imports/home/edawe/software/root/src/io/io/src/TFile.cxx:553
#13 0x00007f2819daef71 in TChain::~TChain() () at /imports/home/edawe/software/root/src/tree/tree/src/TChain.cxx:190
#14 0x00007f2819daf072 in TChain::~TChain() () at /imports/home/edawe/software/root/src/tree/tree/src/TChain.cxx:204
#15 0x0000000000400a1e in main ()
===========================================================

Comment by Noel Dawe (Inactive) [ 15/Jan/15 ]

And that does not crash in ROOT 5.

Comment by Philippe Canal [ 15/Jan/15 ]

Hi Noel,

So far I can not reproduce the crash (and valgrind is silent) using the C++ code ...

Cheers,
Philippe.

Comment by Noel Dawe (Inactive) [ 15/Jan/15 ]

That's strange since I've reproduced it on two machines. One with SL6 and another with Ubuntu. Using the HEAD (as of 09d1ffa42ccf27 on Jan 8).

Comment by Noel Dawe (Inactive) [ 15/Jan/15 ]

Compiled with gcc 4.8.1 (gcc481_x86_64_slc6) in SL6 and gcc 4.9.1 in Ubuntu.

Comment by Philippe Canal [ 16/Jan/15 ]

there is a (small) possibility that it is linked to the file itself. Could you upload it?

Thanks,
Philippe.

Comment by Noel Dawe (Inactive) [ 16/Jan/15 ]

The file test.root is already attached to this issue report.

Comment by Philippe Canal [ 16/Jan/15 ]

Hi Noel,

Indeed I can reproduce the problem with the test.root attach to the report.

The issues appears in v6 since we switch on the TTreeCache by default, this triggered a problem in the ownership/association of the TTreeCache when a TChain is involved and an existing TTreeCache is replaced.

David,

Can you take a look?

Thanks,
Philippe.

Comment by Noel Dawe (Inactive) [ 16/Jan/15 ]

Ah, this is such a relief that you can also reproduce the crash. Thanks a lot for checking.

Comment by Noel Dawe (Inactive) [ 16/Jan/15 ]

I see that Axel made valgrind-root.supp compatible with older valgrind versions in 4f4ef993f9764. Thank you!

Comment by Noel Dawe (Inactive) [ 27/Jan/15 ]

It's pretty quiet here. Any progress? Hopefully the fix is simple?

Comment by Philippe Canal [ 27/Jan/15 ]

Hi Noel,

We are making progress (and per se have a solution) but discovered a related problem that ought to be solved at the same time.

Thanks,
Philippe.

Comment by Noel Dawe (Inactive) [ 16/Mar/15 ]

Is this fixed now?

Comment by David Smith [ 16/Mar/15 ]

Hi Noel,

Sorry, it is not fixed yet. I'll add the change to fix the problem to the head of ROOT 6 as soon as I can; some related issues were still being checked. I expect the fix will be there this week.

Yours,
David

Comment by David Smith [ 20/Mar/15 ]

Hi Noel,

The fix is available now on ROOT6 master; if you have chance to try it you could confirm that it does avoid the problem you found during TFile::Close.

Thanks,
David

Comment by Noel Dawe (Inactive) [ 20/Mar/15 ]

Thanks David!

I see lots of work went into fixing this and related issues. I'll test it out. I originally hit these problems when trying to get the unit tests in root_numpy to pass against ROOT6.

Including your commit message here for reference:

commit 5fc68e7a161370008aa97cac9c5cdda6ad326ea5
Author: David Smith <David.Smith@cern.ch>
Date:   Thu Mar 19 09:30:24 2015 +0100
 
    ROOT-7015 including some related changes:
    
    Fix the reported crash by ensuring AddBranchToCache, DropBranchFromCache, SetCacheEntryRange,
    StopCacheLearningPhase (from the TTree base) apply to the current tree of a TChain, not the
    TChain itself. Also create a cache if necessary if one has not already been created; this avoids
    the situation where the user could ask for a branch to be added to a TTree's cache and have the
    call silently have no effect.
    
    Changing the size of an existing TTreeCache, by called SetCacheSize with a different, non zero
    size, is changed to avoid entirely recreating the cache and thereby restarting the learning phase.
    It may still trigger the current cluster to be recached if the allowed size increases since more
    baskets may fit in the cache.
    
    Changed the return type of AddBranch, AddBranchToCache, SetCacheSize, SetCacheSizeAux, DropBranch,
    DropBranchFromCache, SetCacheEntryRange, StopCacheLearningPhase in TFileCacheRead, TChain, TTree,
    TTreeCache, TTreeCacheUnzip from void to Int_t to allow these methods to return an error indicator.
    A number of Error() and one Warning() messages were also added to these methods.

Comment by Axel Naumann [ 20/Mar/15 ]

Hi Noel,

FYI - there is a "Git Commits" tab next to the comments tab which shows you the git commits mentioning this report number. This link might do it for this ticket: https://sft.its.cern.ch/jira/browse/ROOT-7015?page=com.xiplink.jira.git.jira_git_plugin:git-commits-tabpanel

Cheers, Axel.

Comment by Noel Dawe (Inactive) [ 23/Mar/15 ]

Tight integration with the actual Git repository is what I love about Github, but I'm not aware of how advanced this is in JIRA. That link isn't working for me.

Comment by Noel Dawe (Inactive) [ 23/Mar/15 ]

TChain caching seems to be fixed. The previously failing tests in root_numpy are now passing. Thanks again.

Comment by David Smith [ 25/Mar/15 ]

Thanks for re-running the root_numpy tests.

Comment by David Smith [ 13/May/15 ]

The problem can also appear in the 5.34 and 6.02 branches, although I'm not aware of it having been there so far; in 5.34 and 6.02 the auto creation of the cache is not the default, which is required to trigger the bug. I've back ported the fix to those branches, not including some aspects of the patch (no change for method return type, for example).

Comment by David Smith [ 13/May/15 ]

closing.

Generated at Tue Sep 24 10:56:53 CEST 2019 using Jira 7.13.1#713001-sha1:5e06076c2d215a6f699b7e5c90ab2fae7ba5a1ce.