Segmentation violation when importing RooNDKeysPdf to RooWorkspace

Dear all.
I am having troubles saving a RooNDKeysPdf to a RooWorkspace. When I try to do it, I get a segmentation violation preceded by the message

Warning in TBufferFile::WriteObjectAny: since RooNDKeysPdf has no public constructor
which can be called without argument, objects of this class
can not be read with the current library. You will need to
add a default constructor before attempting to read it.
“Warning in TStreamerInfo::Build: RooNDKeysPdf: RooNDKeysPdf::BoxInfo has no streamer or dictionary, data member “_fullBoxInfo” will not be saved”

The full trace is appended below.
I also attach a revised version of the rf707 tutorial macro in which the problem can be reproduced in the root v6* versions.
rf707_kernelestimation.C (4.14 KB)

Alessio

*** Break *** segmentation violation
[]
[]
[/Users/Shared/Packages/root/lib/libRIO.so] TBufferFile::WriteFastArray(void*, TClass const*, int, TMemberStreamer*) /Users/Shared/Packages/root-6.06.94/io/io/src/TBufferFile.cxx:2282
[/Users/Shared/Packages/root/lib/libRIO.so] int TStreamerInfo::WriteBufferAux<char**>(TBuffer&, char** const&, TStreamerInfo::TCompInfo* const*, int, int, int, int, int) /Users/Shared/Packages/root-6.06.94/io/io/src/TStreamerInfoWriteBuffer.cxx:607
[/Users/Shared/Packages/root/lib/libRIO.so] TStreamerInfoActions::GenericWriteAction(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*) /Users/Shared/Packages/root-6.06.94/io/io/src/TStreamerInfoActions.cxx:174
[/Users/Shared/Packages/root/lib/libRIO.so] TBufferFile::ApplySequence(TStreamerInfoActions::TActionSequence const&, void*) /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/…/include/c++/v1/iterator:1190
[/Users/Shared/Packages/root/lib/libRIO.so] TBufferFile::WriteClassBuffer(TClass const*, void*) /Users/Shared/Packages/root-6.06.94/io/io/src/TBufferFile.cxx:3946
[/Users/Shared/Packages/root/lib/libRIO.so] TBufferFile::WriteObjectClass(void const*, TClass const*) /Users/Shared/Packages/root-6.06.94/io/io/src/TBufferFile.cxx:2583
[/Users/Shared/Packages/root/lib/libRIO.so] TBufferFile::WriteObjectAny(void const*, TClass const*) /Users/Shared/Packages/root-6.06.94/io/io/src/TBufferFile.cxx:2641
[/Users/Shared/Packages/root/lib/libRooFitCore.so] RooLinkedList::Streamer(TBuffer&) /Users/Shared/Packages/root-6.06.94/roofit/roofitcore/src/RooLinkedList.cxx:889
[/Users/Shared/Packages/root/lib/libRIO.so] TBufferFile::WriteFastArray(void*, TClass const*, int, TMemberStreamer*) /Users/Shared/Packages/root-6.06.94/io/io/src/TBufferFile.cxx:2282
[/Users/Shared/Packages/root/lib/libRIO.so] int TStreamerInfo::WriteBufferAux<char**>(TBuffer&, char** const&, TStreamerInfo::TCompInfo* const*, int, int, int, int, int) /Users/Shared/Packages/root-6.06.94/io/io/src/TStreamerInfoWriteBuffer.cxx:607
[/Users/Shared/Packages/root/lib/libRIO.so] TStreamerInfoActions::GenericWriteAction(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*) /Users/Shared/Packages/root-6.06.94/io/io/src/TStreamerInfoActions.cxx:174
[/Users/Shared/Packages/root/lib/libRIO.so] TBufferFile::ApplySequence(TStreamerInfoActions::TActionSequence const&, void*) /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/…/include/c++/v1/iterator:1190
[/Users/Shared/Packages/root/lib/libRIO.so] TBufferFile::WriteClassBuffer(TClass const*, void*) /Users/Shared/Packages/root-6.06.94/io/io/src/TBufferFile.cxx:3946
[/Users/Shared/Packages/root/lib/libCore.so] TClass::WriteBuffer(TBuffer&, void*, char const*) /Users/Shared/Packages/root-6.06.94/core/meta/src/TClass.cxx:6289
[/Users/Shared/Packages/root/lib/libCore.so] TStreamerBase::WriteBuffer(TBuffer&, char*) /Users/Shared/Packages/root-6.06.94/core/meta/src/TStreamerElement.cxx:873
[/Users/Shared/Packages/root/lib/libRIO.so] int TStreamerInfo::WriteBufferAux<char**>(TBuffer&, char** const&, TStreamerInfo::TCompInfo* const*, int, int, int, int, int) /Users/Shared/Packages/root-6.06.94/io/io/src/TStreamerInfoWriteBuffer.cxx:634
[/Users/Shared/Packages/root/lib/libRIO.so] TStreamerInfoActions::GenericWriteAction(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*) /Users/Shared/Packages/root-6.06.94/io/io/src/TStreamerInfoActions.cxx:174
[/Users/Shared/Packages/root/lib/libRIO.so] TBufferFile::ApplySequence(TStreamerInfoActions::TActionSequence const&, void*) /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/…/include/c++/v1/iterator:1190
[/Users/Shared/Packages/root/lib/libRIO.so] TBufferFile::WriteClassBuffer(TClass const*, void*) /Users/Shared/Packages/root-6.06.94/io/io/src/TBufferFile.cxx:3946
[/Users/Shared/Packages/root/lib/libRIO.so] TBufferFile::WriteFastArray(void*, TClass const*, int, TMemberStreamer*) /Users/Shared/Packages/root-6.06.94/io/io/src/TBufferFile.cxx:2282
[/Users/Shared/Packages/root/lib/libRIO.so] int TStreamerInfo::WriteBufferAux<char**>(TBuffer&, char** const&, TStreamerInfo::TCompInfo* const*, int, int, int, int, int) /Users/Shared/Packages/root-6.06.94/io/io/src/TStreamerInfoWriteBuffer.cxx:607
[/Users/Shared/Packages/root/lib/libRIO.so] TStreamerInfoActions::GenericWriteAction(TBuffer&, void*, TStreamerInfoActions::TConfiguration const*) /Users/Shared/Packages/root-6.06.94/io/io/src/TStreamerInfoActions.cxx:174
[/Users/Shared/Packages/root/lib/libRIO.so] TBufferFile::ApplySequence(TStreamerInfoActions::TActionSequence const&, void*) /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/…/include/c++/v1/iterator:1190
[/Users/Shared/Packages/root/lib/libRIO.so] TBufferFile::WriteClassBuffer(TClass const*, void*) /Users/Shared/Packages/root-6.06.94/io/io/src/TBufferFile.cxx:3946
[/Users/Shared/Packages/root/lib/libRooFitCore.so] RooWorkspace::Streamer(TBuffer&) /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/…/include/c++/v1/__tree:913
[/Users/Shared/Packages/root/lib/libRIO.so] TKey::TKey(TObject const*, char const*, int, TDirectory*) /Users/Shared/Packages/root-6.06.94/io/io/src/TKey.cxx:252
[/Users/Shared/Packages/root/lib/libRIO.so] TFile::CreateKey(TDirectory*, TObject const*, char const*, int) /Users/Shared/Packages/root-6.06.94/io/io/src/TFile.cxx:996
[/Users/Shared/Packages/root/lib/libRIO.so] TDirectoryFile::WriteTObject(TObject const*, char const*, char const*, int) /Users/Shared/Packages/root-6.06.94/io/io/src/TDirectoryFile.cxx:1859
[/Users/Shared/Packages/root/lib/libCore.so] TObject::Write(char const*, int, int) const /Users/Shared/Packages/root-6.06.94/core/base/src/TObject.cxx:809
[/Users/Shared/Packages/root/lib/libRooFitCore.so] RooWorkspace::writeToFile(char const*, bool) /Users/Shared/Packages/root-6.06.94/roofit/roofitcore/src/RooWorkspace.cxx:2187
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[/Users/Shared/Packages/root/lib/libCling.so] HandleInterpreterException(cling::MetaProcessor*, char const*, cling::Interpreter::CompilationResult&, cling::Value*) /Users/Shared/Packages/root-6.06.94/core/meta/src/TCling.cxx:1862
[/Users/Shared/Packages/root/lib/libCling.so] TCling::ProcessLine(char const*, TInterpreter::EErrorCode*) /Users/Shared/Packages/root-6.06.94/core/meta/src/TCling.cxx:2003
[/Users/Shared/Packages/root/lib/libCling.so] TCling::ProcessLineSynch(char const*, TInterpreter::EErrorCode*) /Users/Shared/Packages/root-6.06.94/core/meta/src/TCling.cxx:2840
[/Users/Shared/Packages/root/lib/libCore.so] TApplication::ExecuteFile(char const*, int*, bool) /Users/Shared/Packages/root-6.06.94/core/base/src/TApplication.cxx:1129
[/Users/Shared/Packages/root/lib/libRint.so] TRint::ProcessLineNr(char const*, char const*, int*) /Users/Shared/Packages/root-6.06.94/core/rint/src/TRint.cxx:756
[/Users/Shared/Packages/root/lib/libRint.so] TRint::HandleTermInput() /Users/Shared/Packages/root-6.06.94/core/rint/src/TRint.cxx:607
[/Users/Shared/Packages/root/lib/libCore.so] TUnixSystem::CheckDescriptors() /Users/Shared/Packages/root-6.06.94/core/unix/src/TUnixSystem.cxx:1316
[/Users/Shared/Packages/root/lib/libCore.so] TMacOSXSystem::DispatchOneEvent(bool) /Users/Shared/Packages/root-6.06.94/core/macosx/src/TMacOSXSystem.mm:361
[/Users/Shared/Packages/root/lib/libCore.so] TSystem::InnerLoop() /Users/Shared/Packages/root-6.06.94/core/base/src/TSystem.cxx:408
[/Users/Shared/Packages/root/lib/libCore.so] TSystem::Run() /Users/Shared/Packages/root-6.06.94/core/base/src/TSystem.cxx:358
[/Users/Shared/Packages/root/lib/libCore.so] TApplication::Run(bool) /Users/Shared/Packages/root-6.06.94/core/base/src/TApplication.cxx:1146
[/Users/Shared/Packages/root/lib/libRint.so] TRint::Run(bool) /Users/Shared/Packages/root-6.06.94/core/rint/src/TRint.cxx:463
[/Users/Shared/Packages/root/bin/root.exe] main /Users/Shared/Packages/root-6.06.94/main/src/rmain.cxx:32
[]
[]
Root >
*** Break *** segmentation violation
[]
[]
[/Users/Shared/Packages/root/lib/libCling.so] TCling::LoadPCM(TString, char const**, void ()()) const /Users/Shared/Packages/root-6.06.94/builddir/include/TObject.h:158
[/Users/Shared/Packages/root/lib/libCling.so] TCling::RegisterModule(char const
, char const**, char const**, char const*, char const*, void ()(), std::__1::vector<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >, int>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >, int> > > const&, char const**) /Users/Shared/Packages/root-6.06.94/core/meta/src/TCling.cxx:1718
[/Users/Shared/Packages/root/lib/libCore.so] TROOT::RegisterModule(char const
, char const**, char const**, char const*, char const*, void ()(), std::__1::vector<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >, int>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator >, int> > > const&, char const**) /Users/Shared/Packages/root-6.06.94/core/base/src/TROOT.cxx:2311
[/Users/Shared/Packages/root/lib/libGuiHtml.so] (anonymous namespace)::TriggerDictionaryInitialization_libGuiHtml_Impl() /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/…/include/c++/v1/vector:449
[]
[]
[]
[]
[]
[]
[]
[]
[]
[/Users/Shared/Packages/root/lib/libCling.so] TCling::Load(char const
, bool) /Users/Shared/Packages/root-6.06.94/core/meta/src/TCling.cxx:2792
[/Users/Shared/Packages/root/lib/libCore.so] TSystem::Load(char const*, char const*, bool) /Users/Shared/Packages/root-6.06.94/core/base/src/TSystem.cxx:1880
[/Users/Shared/Packages/root/lib/libCore.so] TROOT::LoadClass(char const*, char const*, bool) /Users/Shared/Packages/root-6.06.94/core/base/src/TROOT.cxx:1894
[/Users/Shared/Packages/root/lib/libCling.so] TCling::AutoLoad(char const*, bool) /Users/Shared/Packages/root-6.06.94/core/meta/src/TCling.cxx:5137
[/Users/Shared/Packages/root/lib/libCore.so] TClass::GetClass(char const*, bool, bool) /Users/Shared/Packages/root-6.06.94/core/meta/src/TClass.cxx:2971
[/Users/Shared/Packages/root/lib/libCore.so] TClass::InheritsFrom(char const*) const /Users/Shared/Packages/root-6.06.94/core/meta/src/TClass.cxx:4570
[/Users/Shared/Packages/root/lib/libGCocoa.so] -[QuartzView drawRect:] /Users/Shared/Packages/root-6.06.94/graf2d/cocoa/src/QuartzWindow.mm:2724
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[/Users/Shared/Packages/root/lib/libCore.so] TMacOSXSystem::DispatchOneEvent(bool) /Users/Shared/Packages/root-6.06.94/core/macosx/src/TMacOSXSystem.mm:456
[/Users/Shared/Packages/root/lib/libCore.so] TSystem::InnerLoop() /Users/Shared/Packages/root-6.06.94/core/base/src/TSystem.cxx:408
[/Users/Shared/Packages/root/lib/libCore.so] TSystem::Run() /Users/Shared/Packages/root-6.06.94/core/base/src/TSystem.cxx:358
[/Users/Shared/Packages/root/lib/libCore.so] TApplication::Run(bool) /Users/Shared/Packages/root-6.06.94/core/base/src/TApplication.cxx:1146
[/Users/Shared/Packages/root/lib/libRint.so] TRint::Run(bool) /Users/Shared/Packages/root-6.06.94/core/rint/src/TRint.cxx:463
[/Users/Shared/Packages/root/bin/root.exe] main /Users/Shared/Packages/root-6.06.94/main/src/rmain.cxx:32
[]
[]
Root > .q

*** Break *** segmentation violation
[]
[]
[/Users/Shared/Packages/root/lib/libCore.so] TROOT::CloseFiles() /Users/Shared/Packages/root-6.06.94/core/base/src/TROOT.cxx:929
[/Users/Shared/Packages/root/lib/libCore.so] TROOT::EndOfProcessCleanups() /Users/Shared/Packages/root-6.06.94/core/base/src/TROOT.cxx:1005
[/Users/Shared/Packages/root/lib/libCore.so] TUnixSystem::Exit(int, bool) /Users/Shared/Packages/root-6.06.94/core/unix/src/TUnixSystem.cxx:2129
[/Users/Shared/Packages/root/lib/libCore.so] TApplication::ProcessLine(char const*, bool, int*) /Users/Shared/Packages/root-6.06.94/core/base/src/TApplication.cxx:869
[/Users/Shared/Packages/root/lib/libRint.so] TRint::ProcessLineNr(char const*, char const*, int*) /Users/Shared/Packages/root-6.06.94/core/rint/src/TRint.cxx:756
[/Users/Shared/Packages/root/lib/libRint.so] TRint::HandleTermInput() /Users/Shared/Packages/root-6.06.94/core/rint/src/TRint.cxx:607
[/Users/Shared/Packages/root/lib/libCore.so] TUnixSystem::CheckDescriptors() /Users/Shared/Packages/root-6.06.94/core/unix/src/TUnixSystem.cxx:1316
[/Users/Shared/Packages/root/lib/libCore.so] TMacOSXSystem::DispatchOneEvent(bool) /Users/Shared/Packages/root-6.06.94/core/macosx/src/TMacOSXSystem.mm:361
[/Users/Shared/Packages/root/lib/libCore.so] TSystem::InnerLoop() /Users/Shared/Packages/root-6.06.94/core/base/src/TSystem.cxx:408
[/Users/Shared/Packages/root/lib/libCore.so] TSystem::Run() /Users/Shared/Packages/root-6.06.94/core/base/src/TSystem.cxx:358
[/Users/Shared/Packages/root/lib/libCore.so] TApplication::Run(bool) /Users/Shared/Packages/root-6.06.94/core/base/src/TApplication.cxx:1146
[/Users/Shared/Packages/root/lib/libRint.so] TRint::Run(bool) /Users/Shared/Packages/root-6.06.94/core/rint/src/TRint.cxx:463
[/Users/Shared/Packages/root/bin/root.exe] main /Users/Shared/Packages/root-6.06.94/main/src/rmain.cxx:32
[]
[]
Root > .q

*** Break *** segmentation violation
[]
[]
[/Users/Shared/Packages/root/lib/libRooFitCore.so] RooLinkedList::Add(TObject*, int) /Users/Shared/Packages/root-6.06.94/roofit/roofitcore/src/RooLinkedList.cxx:410
[/Users/Shared/Packages/root/lib/libRooFitCore.so] RooLinkedList::RooLinkedList(RooLinkedList const&) /Users/Shared/Packages/root-6.06.94/roofit/roofitcore/src/RooLinkedList.cxx:280
[/Users/Shared/Packages/root/lib/libRooFitCore.so] RooAbsArg::~RooAbsArg() /Users/Shared/Packages/root-6.06.94/builddir/include/RooRefCountList.h:21
[/Users/Shared/Packages/root/lib/libRooFitCore.so] RooConstVar::~RooConstVar() /Users/Shared/Packages/root-6.06.94/roofit/roofitcore/src/RooConstVar.cxx:65
[/Users/Shared/Packages/root/lib/libRooFitCore.so] RooAbsCollection::safeDeleteList() /Users/Shared/Packages/root-6.06.94/roofit/roofitcore/src/RooAbsCollection.cxx:164
[/Users/Shared/Packages/root/lib/libRooFitCore.so] RooAbsCollection::~RooAbsCollection() /Users/Shared/Packages/root-6.06.94/roofit/roofitcore/src/RooAbsCollection.cxx:126
[/Users/Shared/Packages/root/lib/libRooFitCore.so] RooArgList::~RooArgList() /Users/Shared/Packages/root-6.06.94/roofit/roofitcore/src/RooArgList.cxx:268
[/Users/Shared/Packages/root/lib/libRooFitCore.so] RooRealConstant::cleanup() /Users/Shared/Packages/root-6.06.94/roofit/roofitcore/src/RooRealConstant.cxx:61
[/Users/Shared/Packages/root/lib/libRooFitCore.so] CleanUpRooFitAtExit() /Users/Shared/Packages/root-6.06.94/roofit/roofitcore/src/RooSentinel.cxx:61
[]
[]
[/Users/Shared/Packages/root/lib/libCore.so] TUnixSystem::Exit(int, bool) /Users/Shared/Packages/root-6.06.94/core/unix/src/TUnixSystem.cxx:2129
[/Users/Shared/Packages/root/lib/libCore.so] TApplication::ProcessLine(char const*, bool, int*) /Users/Shared/Packages/root-6.06.94/core/base/src/TApplication.cxx:869
[/Users/Shared/Packages/root/lib/libRint.so] TRint::ProcessLineNr(char const*, char const*, int*) /Users/Shared/Packages/root-6.06.94/core/rint/src/TRint.cxx:756
[/Users/Shared/Packages/root/lib/libRint.so] TRint::HandleTermInput() /Users/Shared/Packages/root-6.06.94/core/rint/src/TRint.cxx:607
[/Users/Shared/Packages/root/lib/libCore.so] TUnixSystem::CheckDescriptors() /Users/Shared/Packages/root-6.06.94/core/unix/src/TUnixSystem.cxx:1316
[/Users/Shared/Packages/root/lib/libCore.so] TMacOSXSystem::DispatchOneEvent(bool) /Users/Shared/Packages/root-6.06.94/core/macosx/src/TMacOSXSystem.mm:361
[/Users/Shared/Packages/root/lib/libCore.so] TSystem::InnerLoop() /Users/Shared/Packages/root-6.06.94/core/base/src/TSystem.cxx:408
[/Users/Shared/Packages/root/lib/libCore.so] TSystem::Run() /Users/Shared/Packages/root-6.06.94/core/base/src/TSystem.cxx:358
[/Users/Shared/Packages/root/lib/libCore.so] TApplication::Run(bool) /Users/Shared/Packages/root-6.06.94/core/base/src/TApplication.cxx:1146
[/Users/Shared/Packages/root/lib/libRint.so] TRint::Run(bool) /Users/Shared/Packages/root-6.06.94/core/rint/src/TRint.cxx:463
[/Users/Shared/Packages/root/bin/root.exe] main /Users/Shared/Packages/root-6.06.94/main/src/rmain.cxx:32
[]
[]
Root >
*** Break *** keyboard interrupt
Root > .q

To be clear: to reproduce the problem from the previous file you have to uncomment the line
// w->writeToFile(“TestingNKeysPerst.root”) ;

Alessio

Hi,

This a known problem, due to the I/O of this class. We will fix it , hopefully for the next release

Lorenzo

Hi,

I’m also interested in this feature, do you have a time estimate for when this will be available ?

Maxime

Any update on this?
I have tried to import into a Workspace also a RooFormulaVar and it crashes as well. I have tried to switch to the latest ROOT but seems that the problem isn’t fixed yet. Is there any time scale on when ROOT will be able to write again such PDFs and formulas into a Workspace? It is an important feature that would ease significantly the coding of several analyses…

Thanks!
alessio