TFile::MakeProject severely broken in ROOT 6.08/06 - 6.18/00

@pcanal It seems that the TFile::MakeProject is severely broken in all recent ROOT 6 releases (it is fine in ROOT 5.34).
It breaks in ROOT 6.08/06, 6.10/08, 6.12/06, 6.14/06, 6.16/00 and 6.18/00.

This is CentOS 7 / x86_64 (gcc 4.8.5) and ROOT 6.18/00 (the input file was created by ROOT 5.34/34, I don’t think I can give you this input file):

[...]$ root Some_ROOT_v5.34.34_File.root 
root [0] 
Attaching file Some_ROOT_v5.34.34_File.root as _file0...
Warning in <TClass::Init>: no dictionary for class SomeNameSpace::SomeClass is available
(...)
Warning in <TClass::Init>: no dictionary for class SomeNameSpace::SomeClass::SomeAnotherClass is available
(TFile *) 0x1ba7dd0
root [1] gFile->MakeProject("oa")
MakeProject has generated 72 classes in oa
Error in <TList::Clear>: A list is accessing an object (0x26f3390) already deleted (list name = TList)
Error in <TList::Clear>: A list is accessing an object (0x26f3740) already deleted (list name = TList)
Error in <TList::Clear>: A list is accessing an object (0x26f3cf0) already deleted (list name = TList)
Error in <TList::Clear>: A list is accessing an object (0x26f47d0) already deleted (list name = TList)

 *** Break *** segmentation violation



===========================================================
There was a crash.
This is the entire stack trace of all threads:
===========================================================
#0  0x00007fda4f37fa3c in waitpid () from /lib64/libc.so.6
#1  0x00007fda4f2fdde2 in do_system () from /lib64/libc.so.6
#2  0x00007fda504069f4 in TUnixSystem::StackTrace() () from /cvmfs/sft.cern.ch/lcg/app/releases/ROOT/6.18.00/x86_64-centos7-gcc48-opt/lib/libCore.so.6.18
#3  0x00007fda5040912c in TUnixSystem::DispatchSignals(ESignals) () from /cvmfs/sft.cern.ch/lcg/app/releases/ROOT/6.18.00/x86_64-centos7-gcc48-opt/lib/libCore.so.6.18
#4  <signal handler called>
#5  0x00007fda5036c6d3 in TCollection::GarbageCollect(TObject*) () from /cvmfs/sft.cern.ch/lcg/app/releases/ROOT/6.18.00/x86_64-centos7-gcc48-opt/lib/libCore.so.6.18
#6  0x00007fda50376118 in TList::Clear(char const*) () from /cvmfs/sft.cern.ch/lcg/app/releases/ROOT/6.18.00/x86_64-centos7-gcc48-opt/lib/libCore.so.6.18
#7  0x00007fda503765d1 in TList::~TList() () from /cvmfs/sft.cern.ch/lcg/app/releases/ROOT/6.18.00/x86_64-centos7-gcc48-opt/lib/libCore.so.6.18
#8  0x00007fda4e60ed32 in TFile::MakeProject(char const*, char const*, char const*) () from /cvmfs/sft.cern.ch/lcg/app/releases/ROOT/6.18.00/x86_64-centos7-gcc48-opt/lib/libRIO.so
#9  0x00007fda50ba80e4 in ?? ()
#10 0x00007fda50ba7003 in ?? ()
#11 0x00000000011926c0 in ?? ()
#12 0x0000000002531e68 in ?? ()
#13 0x00007fda4b8b7800 in ?? () from /cvmfs/sft.cern.ch/lcg/app/releases/ROOT/6.18.00/x86_64-centos7-gcc48-opt/lib/libCling.so
#14 0x0000000101320a18 in ?? ()
#15 0x00000000011e4370 in ?? ()
#16 0x00007fda4b92dfa0 in ?? () from /cvmfs/sft.cern.ch/lcg/app/releases/ROOT/6.18.00/x86_64-centos7-gcc48-opt/lib/libCling.so
#17 0x00007ffd1a5e6520 in ?? ()
#18 0x0000000000000000 in ?? ()
===========================================================


The lines below might hint at the cause of the crash.
You may get help by asking at the ROOT forum http://root.cern.ch/forum
Only if you are really convinced it is a bug in ROOT then please submit a
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.
===========================================================
#5  0x00007fda5036c6d3 in TCollection::GarbageCollect(TObject*) () from /cvmfs/sft.cern.ch/lcg/app/releases/ROOT/6.18.00/x86_64-centos7-gcc48-opt/lib/libCore.so.6.18
#6  0x00007fda50376118 in TList::Clear(char const*) () from /cvmfs/sft.cern.ch/lcg/app/releases/ROOT/6.18.00/x86_64-centos7-gcc48-opt/lib/libCore.so.6.18
#7  0x00007fda503765d1 in TList::~TList() () from /cvmfs/sft.cern.ch/lcg/app/releases/ROOT/6.18.00/x86_64-centos7-gcc48-opt/lib/libCore.so.6.18
#8  0x00007fda4e60ed32 in TFile::MakeProject(char const*, char const*, char const*) () from /cvmfs/sft.cern.ch/lcg/app/releases/ROOT/6.18.00/x86_64-centos7-gcc48-opt/lib/libRIO.so
#9  0x00007fda50ba80e4 in ?? ()
#10 0x00007fda50ba7003 in ?? ()
#11 0x00000000011926c0 in ?? ()
#12 0x0000000002531e68 in ?? ()
#13 0x00007fda4b8b7800 in ?? () from /cvmfs/sft.cern.ch/lcg/app/releases/ROOT/6.18.00/x86_64-centos7-gcc48-opt/lib/libCling.so
#14 0x0000000101320a18 in ?? ()
#15 0x00000000011e4370 in ?? ()
#16 0x00007fda4b92dfa0 in ?? () from /cvmfs/sft.cern.ch/lcg/app/releases/ROOT/6.18.00/x86_64-centos7-gcc48-opt/lib/libCling.so
#17 0x00007ffd1a5e6520 in ?? ()
#18 0x0000000000000000 in ?? ()
===========================================================


Root > .qqq

The same input file on a Ubuntu 18.04 / x86_64 (gcc 7.4.0) and ROOT 6.18/00:

(...)
root [1] gFile->MakeProject("oa")
MakeProject has generated 72 classes in oa
Error in <TList::Clear>: A list is accessing an object (0x55ad2668d340) already deleted (list name = TList)
Error in <TList::Clear>: A list is accessing an object (0x55ad2668de60) already deleted (list name = TList)
Error in <TList::Clear>: A list is accessing an object (0x55ad2668e4e0) already deleted (list name = TList)
Error in <TList::Clear>: A list is accessing an object (0x55ad2668ea60) already deleted (list name = TList)
Error in <TList::Clear>: A list is accessing an object (0x55ad2669f260) already deleted (list name = TList)
Error in <TList::Clear>: A list is accessing an object (0x55ad2669f790) already deleted (list name = TList)
Error in <TList::Clear>: A list is accessing an object (0x55ad2669fcd0) already deleted (list name = TList)
Error in <TList::Clear>: A list is accessing an object (0x55ad2669ff20) already deleted (list name = TList)
Error in <TList::Clear>: A list is accessing an object (0x55ad266a05f0) already deleted (list name = TList)
Error in <TList::Clear>: A list is accessing an object (0x55ad266a24d0) already deleted (list name = TList)
Error in <TList::Clear>: A list is accessing an object (0x55ad266a28d0) already deleted (list name = TList)
Error in <TList::Clear>: A list is accessing an object (0x55ad266a2b80) already deleted (list name = TList)
Error in <TList::Clear>: A list is accessing an object (0x55ad266a4310) already deleted (list name = TList)
Error in <TList::Clear>: A list is accessing an object (0x55ad266a4640) already deleted (list name = TList)
Error in <TList::Clear>: A list is accessing an object (0x55ad2656c460) already deleted (list name = TList)
root [2] .q

At first, I thought that ROOT 6.08/06 and 6.10/08 were fine but they are unable to “dynamically link” the newly “generated” shared library (Ubuntu 14.04 / x86_64, gcc 4.8.4):

(...)
root [1] gFile->MakeProject("oa", "*", "recreate++")
MakeProject has generated 72 classes in oa
oa/MAKEP file has been generated
Shared lib oa/oa.so has been generated

 *** Break *** segmentation violation



===========================================================
There was a crash.
This is the entire stack trace of all threads:
===========================================================
#0  0x00007f7ddd32995c in __libc_waitpid (pid=14342, stat_loc=stat_loc
entry=0x7ffc1ac97a40, options=options
entry=0) at ../sysdeps/unix/sysv/linux/waitpid.c:31
#1  0x00007f7ddd2ab232 in do_system (line=<optimized out>) at ../sysdeps/posix/system.c:148
#2  0x00007f7ddde1dfc9 in TUnixSystem::StackTrace() () from /opt/ROOT/releases/root_v6.10.08/lib/libCore.so
#3  0x00007f7ddde207fc in TUnixSystem::DispatchSignals(ESignals) () from /opt/ROOT/releases/root_v6.10.08/lib/libCore.so
#4  <signal handler called>
#5  0x00007f7ddbd5eadb in TStreamerInfo::BuildOld() () from /opt/ROOT/releases/root_v6.10.08/lib/libRIO.so
#6  0x00007f7ddddcc985 in TClass::GetStreamerInfo(int) const () from /opt/ROOT/releases/root_v6.10.08/lib/libCore.so
#7  0x00007f7ddde02fd2 in TStreamerBase::InitStreaming() () from /opt/ROOT/releases/root_v6.10.08/lib/libCore.so
#8  0x00007f7ddbd50be2 in TStreamerInfo::Update(TClass const*, TClass*) () from /opt/ROOT/releases/root_v6.10.08/lib/libRIO.so
#9  0x00007f7ddddcc012 in TClass::ReplaceWith(TClass*) const () from /opt/ROOT/releases/root_v6.10.08/lib/libCore.so
(...)
#98 0x00007f7dde193305 in TRint::Run(bool) () from /opt/ROOT/releases/root_v6.10.08/lib/libRint.so
#99 0x0000000000400bfc in main ()
===========================================================


The lines below might hint at the cause of the crash.
You may get help by asking at the ROOT forum http://root.cern.ch/forum.
Only if you are really convinced it is a bug in ROOT then please submit a
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.
===========================================================
#5  0x00007f7ddbd5eadb in TStreamerInfo::BuildOld() () from /opt/ROOT/releases/root_v6.10.08/lib/libRIO.so
#6  0x00007f7ddddcc985 in TClass::GetStreamerInfo(int) const () from /opt/ROOT/releases/root_v6.10.08/lib/libCore.so
#7  0x00007f7ddde02fd2 in TStreamerBase::InitStreaming() () from /opt/ROOT/releases/root_v6.10.08/lib/libCore.so
#8  0x00007f7ddbd50be2 in TStreamerInfo::Update(TClass const*, TClass*) () from /opt/ROOT/releases/root_v6.10.08/lib/libRIO.so
#9  0x00007f7ddddcc012 in TClass::ReplaceWith(TClass*) const () from /opt/ROOT/releases/root_v6.10.08/lib/libCore.so
(...)
#88 0x00007f7dd96028c1 in HandleInterpreterException(cling::MetaProcessor*, char const*, cling::Interpreter::CompilationResult&, cling::Value*) () from /opt/ROOT/releases/root_v6.10.08/lib/libCling.so
===========================================================


Root > .qqqq
Info in <TRint::ProcessLine>: Bye... (try '.qqqqqqq' if still running)
Fatal in <TClass::SetUnloaded>: The TClass for map<int,pair<int,const TGeoNode*> > is being unloaded when in state 0

aborting
#0  0x00007f7ddd32995c in __libc_waitpid (pid=14668, stat_loc=stat_loc
entry=0x7ffc1ac9b6b0, options=options
entry=0) at ../sysdeps/unix/sysv/linux/waitpid.c:31
#1  0x00007f7ddd2ab232 in do_system (line=<optimized out>) at ../sysdeps/posix/system.c:148
#2  0x00007f7ddde1dfc9 in TUnixSystem::StackTrace() () from /opt/ROOT/releases/root_v6.10.08/lib/libCore.so
(...)
#20 0x00007f7dde193305 in TRint::Run(bool) () from /opt/ROOT/releases/root_v6.10.08/lib/libRint.so
#21 0x0000000000400bfc in main ()

@Axel, @pcanal can you please take a look?

Thank you in advance,
Oksana.

Can you share Some_ROOT_v5.34.34_File.root? We actually run MakeProject as part of our nightly checks and didn’t see an issue, so we’ll need a reproducer please…

I have opened https://sft.its.cern.ch/jira/browse/ROOT-10216 for this.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.

See https://github.com/root-project/root/pull/4285

Well (just like the old ROOT 6.08/06 and 6.10/08, as reported in my first post here), the newest ROOT 6.18/04 is still unable to “dynamically link” the newly “generated” shared library (Ubuntu 14.04 / x86_64 / gcc 4.8.4 and CentOS 7 / x86_64 / gcc 4.8.5):

(...)
root [1] gFile->MakeProject("oa", "*", "recreate++")
MakeProject has generated 72 classes in oa
oa/MAKEP file has been generated
Shared lib oa/oa.so has been generated

 *** Break *** segmentation violation
(...)

https://github.com/root-project/root/pull/4389 (master)
and
https://github.com/root-project/root/pull/4390 (v618)

should be fixing the remaining problems.

Cheers,
Philippe.