ROOT Version: 6.24
Platform: CentOS7
Compiler: gcc 4.8.5
Hello,
our servers were recently updated from ROOT 6.22/08 to 6.24. I’ve been using RDataFrame in python for some time now and activated multithreading for faster computation. However, since the ROOT update without changing the Code, I now get multiple segmentation violations when saving filtered dataframes with the Snapshot option.
import ROOT
from ROOT import RDataFrame
cols = ROOT.std.vector('string')()
cols.push_back('some_cols_to_save')
ROOT.EnableImplicitMT(cores)
df_data = RDataFrame('myChannel', '/path/to/data.root')
df_mc = RDataFrame('myChannel', '/path/to/mc.root')
df_data = df_data.Filter('data_filter(x,y)')
df_mc = df_mc.Filter('mc_filter(x,y)')
df_data.Snapshot('myChannel', '/outpath/data.root', cols)
df_mc.Snapshot('myChannel', '/outpath/mc.root', cols)
When I run code like this I get the following error:
*** Break *** segmentation violation
===========================================================
There was a crash.
This is the entire stack trace of all threads:
===========================================================
Thread 2 (Thread 0x7fd524849700 (LWP 576922)):
#0 0x00007fd54728ade2 in pthread_cond_timedwait
GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1 0x000055bafeb81d74 in PyCOND_TIMEDWAIT (us=<optimized out>, mut=0x55bafee0d8a0<_PyRuntime+1232>, cond=0x55bafee0d870 <_PyRuntime+1184>) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Python/condvar.h:73
#2 take_gil (tstate=0x55bb04209160, ceval=0x55bafee0d618 <_PyRuntime+584>) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Python/ceval_gil.h:206
#3 PyEval_RestoreThread () at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Python/ceval.c:399
#4 0x000055bafecc49a8 in pysleep (secs=<optimized out>) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Modules/timemodule.c:1867
#5 time_sleep () at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Modules/timemodule.c:338
#6 0x000055bafeb8c9ab in cfunction_vectorcall_O () at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Objects/methodobject.c:482
#7 0x000055bafec3c3c3 in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7fd524867d20, callable=0x7fd54761be00) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Include/cpython/abstract.h:115
#8 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=0x55bb04209160) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Python/ceval.c:4963
#9 _PyEval_EvalFrameDefault () at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Python/ceval.c:3469
#10 0x000055bafec1e433 in PyEval_EvalFrameEx (throwflag=0, f=0x7fd524867ba0) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Python/ceval.c:4298 #11 _PyEval_EvalCodeWithName () at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Python/ceval.c:4298
#12 0x000055bafec1f818 in _PyFunction_Vectorcall () at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Objects/call.c:436
#13 0x000055bafeb89b6e in PyVectorcall_Call (kwargs=0x7fd5474e8070, tuple=0x55bafec1f4a0 <_PyFunction_Vectorcall>, callable=0x7fd53ff3ab80) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Objects/call.c:200
#14 PyObject_Call () at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Objects/call.c:228
#15 0x000055bafec3984f in do_call_core (kwdict=0x7fd5475de340, callargs=0x7fd5474e8070, func=0x7fd53ff3ab80, tstate=<optimized out>) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Python/ceval.c:5010
#16 _PyEval_EvalFrameDefault () at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Python/ceval.c:3559
#17 0x000055bafec1f646 in PyEval_EvalFrameEx (throwflag=0, f=0x7fd524883040) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Python/ceval.c:738
#18 function_code_fastcall (globals=<optimized out>, nargs=<optimized out>, args=<optimized out>, co=<optimized out>) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Objects/call.c:284
#19 _PyFunction_Vectorcall () at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Objects/call.c:411
#20 0x000055bafec380f3 in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7fd5248eebb8, callable=0x7fd525376280) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Include/cpython/abstract.h:115
#21 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=0x55bb04209160) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Python/ceval.c:4963
#22 _PyEval_EvalFrameDefault () at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Python/ceval.c:3486
#23 0x000055bafec1f646 in PyEval_EvalFrameEx (throwflag=0, f=0x7fd5248eea40) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Python/ceval.c:738
#24 function_code_fastcall (globals=<optimized out>, nargs=<optimized out>, args=<optimized out>, co=<optimized out>) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Objects/call.c:284
#25 _PyFunction_Vectorcall () at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Objects/call.c:411
#26 0x000055bafec380f3 in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7fd53fe46fb8, callable=0x7fd525376550) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Include/cpython/abstract.h:115
#27 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=0x55bb04209160) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Python/ceval.c:4963
#28 _PyEval_EvalFrameDefault () at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Python/ceval.c:3486
#29 0x000055bafec1f646 in PyEval_EvalFrameEx (throwflag=0, f=0x7fd53fe46e40) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Python/ceval.c:738
#30 function_code_fastcall (globals=<optimized out>, nargs=<optimized out>, args=<optimized out>, co=<optimized out>) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Objects/call.c:284
#31 _PyFunction_Vectorcall () at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Objects/call.c:411
#32 0x000055bafec1fed1 in _PyObject_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, args=<optimized out>, callable=<optimized out>) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Include/cpython/abstract.h:127
#33 method_vectorcall () at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Objects/classobject.c:89
#34 0x000055bafeb89b6e in PyVectorcall_Call (kwargs=<optimized out>, tuple=<optimized out>, callable=0x7fd53fe34680) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Objects/call.c:200
#35 PyObject_Call () at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Objects/call.c:228
#36 0x000055bafecbd639 in t_bootstrap () at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Modules/_threadmodule.c:1002
#37 0x000055bafec569c4 in pythread_wrapper (arg=<optimized out>) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Python/thread_pthread.h:232
#38 0x00007fd547286ea5 in start_thread () from /lib64/libpthread.so.0
#39 0x00007fd54669e9fd in clone () from /lib64/libc.so.6
Thread 1 (Thread 0x7fd5476a6740 (LWP 576892)):
#0 0x00007fd546665549 in waitpid () from /lib64/libc.so.6
#1 0x00007fd5465e2fb2 in do_system () from /lib64/libc.so.6
#2 0x00007fd5465e3361 in system () from /lib64/libc.so.6
#3 0x00007fd53fc7e707 in TUnixSystem::StackTrace() () from /opt/miniconda/envs/root_forge/bin/../lib/libCore.so.6.24
#4 0x00007fd53ff8360f in (anonymous namespace)::TExceptionHandlerImp::HandleException(int) () from /opt/miniconda/envs/root_forge/bin/../lib/libcppyy_backend3_8.so.6.24
#5 0x00007fd53fc7b881 in TUnixSystem::DispatchSignals(ESignals) () from /opt/miniconda/envs/root_forge/bin/../lib/libCore.so.6.24
#6 <signal handler called>
===========================================================
The lines below might hint at the cause of the crash.
You may get help by asking at the ROOT forum https://root.cern.ch/forum
Only if you are really convinced it is a bug in ROOT then please submit a
report at https://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.
===========================================================
Fatal in <TBufferMerger>: TBufferMergerFiles must be destroyed before the server aborting Thread 2 (Thread 0x7fd524849700 (LWP 576922)):
#0 0x00007fd54728ade2 in pthread_cond_timedwait GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1 0x000055bafeb81d74 in PyCOND_TIMEDWAIT (us=<optimized out>, mut=0x55bafee0d8a0 <_PyRuntime+1232>, cond=0x55bafee0d870 <_PyRuntime+1184>) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Python/condvar.h:73
#2 take_gil (tstate=0x55bb04209160, ceval=0x55bafee0d618 <_PyRuntime+584>) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Python/ceval_gil.h:206
#3 PyEval_RestoreThread () at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Python/ceval.c:399
#4 0x000055bafecc49a8 in pysleep (secs=<optimized out>) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Modules/timemodule.c:1867
#5 time_sleep () at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Modules/timemodule.c:338
#6 0x000055bafeb8c9ab in cfunction_vectorcall_O () at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Objects/methodobject.c:482
#7 0x000055bafec3c3c3 in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7fd524867d20, callable=0x7fd54761be00) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Include/cpython/abstract.h:115
#8 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=0x55bb04209160) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Python/ceval.c:4963
#9 _PyEval_EvalFrameDefault () at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Python/ceval.c:3469
#10 0x000055bafec1e433 in PyEval_EvalFrameEx (throwflag=0, f=0x7fd524867ba0) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Python/ceval.c:4298
#11 _PyEval_EvalCodeWithName () at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Python/ceval.c:4298
#12 0x000055bafec1f818 in _PyFunction_Vectorcall () at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Objects/call.c:436
#13 0x000055bafeb89b6e in PyVectorcall_Call (kwargs=0x7fd5474e8070, tuple=0x55bafec1f4a0 <_PyFunction_Vectorcall>, callable=0x7fd53ff3ab80) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Objects/call.c:200
#14 PyObject_Call () at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Objects/call.c:228
#15 0x000055bafec3984f in do_call_core (kwdict=0x7fd5475de340, callargs=0x7fd5474e8070, func=0x7fd53ff3ab80, tstate=<optimized out>) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Python/ceval.c:5010
#16 _PyEval_EvalFrameDefault () at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Python/ceval.c:3559
#17 0x000055bafec1f646 in PyEval_EvalFrameEx (throwflag=0, f=0x7fd524883040) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Python/ceval.c:738
#18 function_code_fastcall (globals=<optimized out>, nargs=<optimized out>, args=<optimized out>, co=<optimized out>) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Objects/call.c:284
#19 _PyFunction_Vectorcall () at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Objects/call.c:411
#20 0x000055bafec380f3 in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7fd5248eebb8, callable=0x7fd525376280) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Include/cpython/abstract.h:115
#21 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=0x55bb04209160) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Python/ceval.c:4963
#22 _PyEval_EvalFrameDefault () at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Python/ceval.c:3486
#23 0x000055bafec1f646 in PyEval_EvalFrameEx (throwflag=0, f=0x7fd5248eea40) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Python/ceval.c:738
#24 function_code_fastcall (globals=<optimized out>, nargs=<optimized out>, args=<optimized out>, co=<optimized out>) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Objects/call.c:284
#25 _PyFunction_Vectorcall () at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Objects/call.c:411
#26 0x000055bafec380f3 in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7fd53fe46fb8, callable=0x7fd525376550) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Include/cpython/abstract.h:115
#27 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=0x55bb04209160) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Python/ceval.c:4963
#28 _PyEval_EvalFrameDefault () at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Python/ceval.c:3486
#29 0x000055bafec1f646 in PyEval_EvalFrameEx (throwflag=0, f=0x7fd53fe46e40) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Python/ceval.c:738
#30 function_code_fastcall (globals=<optimized out>, nargs=<optimized out>, args=<optimized out>, co=<optimized out>) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Objects/call.c:284
#31 _PyFunction_Vectorcall () at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Objects/call.c:411
#32 0x000055bafec1fed1 in _PyObject_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, args=<optimized out>, callable=<optimized out>) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Include/cpython/abstract.h:127
#33 method_vectorcall () at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Objects/classobject.c:89
#34 0x000055bafeb89b6e in PyVectorcall_Call (kwargs=<optimized out>, tuple=<optimized out>, callable=0x7fd53fe34680) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Objects/call.c:200
#35 PyObject_Call () at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Objects/call.c:228
#36 0x000055bafecbd639 in t_bootstrap () at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Modules/_threadmodule.c:1002
#37 0x000055bafec569c4 in pythread_wrapper (arg=<optimized out>) at /home/conda/feedstock_root/build_artifacts/python-split_1620713755437/work/Python/thread_pthread.h:232
#38 0x00007fd547286ea5 in start_thread () from /lib64/libpthread.so.0
#39 0x00007fd54669e9fd in clone () from /lib64/libc.so.6
Thread 1 (Thread 0x7fd5476a6740 (LWP 576892)):
#0 0x00007fd546665549 in waitpid () from /lib64/libc.so.6
#1 0x00007fd5465e2fb2 in do_system () from /lib64/libc.so.6
#2 0x00007fd5465e3361 in system () from /lib64/libc.so.6
#3 0x00007fd53fc7e707 in TUnixSystem::StackTrace() () from /opt/miniconda/envs/root_forge/bin/../lib/libCore.so.6.24
#4 0x00007fd53fb5c383 in DefaultErrorHandler(int, bool, char const*, char const*) () from /opt/miniconda/envs/root_forge/bin/../lib/libCore.so.6.24
#5 0x00007fd53fc0ea28 in ErrorHandler () from /opt/miniconda/envs/root_forge/bin/../lib/libCore.so.6.24
#6 0x00007fd53fc0f2a6 in Fatal(char const*, char const*, ...) () from /opt/miniconda/envs/root_forge/bin/../lib/libCore.so.6.24
#7 0x00007fd53e85cc3f in ROOT::Experimental::TBufferMerger::~TBufferMerger() () from /opt/miniconda/envs/root_forge/lib/libRIO.so
#8 0x00007fd53e85cd2a in ROOT::Experimental::TBufferMerger::~TBufferMerger() () from /opt/miniconda/envs/root_forge/lib/libRIO.so
ROOT::Internal::RDF::JitBuildAction(std::vector<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > > > const&,
std::shared_ptr<ROOT::Detail::RDF::RNodeBase>*, std::type_info const&, std::type_info const&, void*,
TTree*, unsigned int, ROOT::Internal::RDF::RBookedDefines const&, ROOT::RDF::RDataSource*,
std::weak_ptr<ROOT::Internal::RDF::RJittedAction>*) () from
/opt/miniconda/envs/root_forge/lib/libROOTDataFrame.so.6.24.00
Aborted
When I leave out the EnableImplicitMT
the code finishes without any errors, but that would be a sad solution, which increases my computation time by a factor of ~5. Also when I replace the Snapshot
call with e.g. Count().GetValue()
it works just fine (with and without multithrading), so it seems to be Snapshot
specific. In the Release Notes for 6.24 I read that there was a change in Snapshot
behaviour. Might this be related?
Thanks!