Details
-
Bug
-
Status: In Progress (View Workflow)
-
Critical
-
Resolution: Unresolved
-
6.20/00, 6.18/02, 6.18/04, 6.22/00, 6.20/02, 6.20/04, 6.20/06
-
None
-
None
-
linux (at least): it's stl implementation dependent
Description
The mother class of STL classes such as pair is looked for by the type system. This is not correct as the stl types should be opaque to the ROOT types system. This has at least two consequences:
1. Memory usage caused by autoparsing: upon opening a certain category of CMS files (DIGI), not even the ones with most types inside, a parsing induced RSS footprint of 200MB was measured
2. The names of the internal implementation of the STL left traces in the persistified objects, e.g.
for (auto si : *_file0->GetStreamerInfoList()) si->Print()
|
[...]
|
OBJ: TStreamerInfo edm::ProcessConfiguration
|
OBJ: TStreamerInfo __pair_base<edm::Hash<1>,edm::ParameterSetBlob>
|
OBJ: TStreamerInfo edm::ParameterSetBlob
|
[...]
|
The item is originally marked Critical because of 2.
Here a reproducer, which does not involve CMSSW, and can be run on lxplus:
lxplus757:~$ . /cvmfs/sft.cern.ch/lcg/views/LCG_97/x86_64-centos7-gcc9-opt/setup.sh
|
which root
|
lxplus757:~$ which root
|
/cvmfs/sft.cern.ch/lcg/views/LCG_97/x86_64-centos7-gcc9-opt/bin/root
|
lxplus757:~$ root -b -l
|
root [0] TClass::GetClass("pair<int,int>")->InheritsFrom("__pair_base<int, int> >")
|
(bool) true
|
root [1] .q
|
lxplus757:~$ . /cvmfs/sft.cern.ch/lcg/views/LCG_97/x86_64-centos7-gcc8-opt/setup.sh
|
lxplus757:~$ root -b -l
|
root [0] TClass::GetClass("pair<int,int>")->InheritsFrom("__pair_base<int, int> >")
|
(bool) true
|
root [1] .q
|
while if one takes the default ROOT on lxplus, built for GCC 4.8:
lxplus783:~$ which root
|
/usr/bin/root
|
lxplus783:~$ root -l
|
root [0] gROOT->GetVersion()
|
(const char *) "6.20/04"
|
root [1] TClass::GetClass("pair<int,int>")->InheritsFrom("__pair_base<int, int> >")
|
(bool) false
|