TClass and cling disagree on the size of the class

Hi all,

I compiled ROOT on a CentOS 7 machine using a non-native compiler (gcc 7.5.0 instead of the native 4.8.5). Now I get errors when I try to load an external library:

root [0] .L mylib.C+O
Info in <TUnixSystem::ACLiC>: creating shared library /path/to/mylib_C.so
Error in <TInterpreter::InspectMembers>: TClass and cling disagree on the size of the class TBaseClass, respectively 152 128

Error in <TInterpreter::InspectMembers>: TClass and cling disagree on the size of the class TClassRef, respectively 40 16

Error in <TInterpreter::InspectMembers>: TClass and cling disagree on the size of the class TClassRef, respectively 40 16

Should I worry about these errors? Can I fix them? Things seem to work fine afterwards, but I haven’t tried serialization for example.

Thanks!

I guess @Axel or @vvassilev can help you.

Yes you should worry - ROOT will store corrupted data for those types.

Maybe the library was created with the other compiler before? If so, trigger a recreation by using two pluses:

root [0] .L mylib.C++O

If that doesn’t help, can you share the output of

root [0] gDebug = 7
root [1] .L mylib.C++O

(note the two pluses again)

The two pluses didn’t help. The debug output is a bit noisy because of the long paths, sorry. Here it is:

.L valjean/eponine/tripoli4/resources/depletion/DepletedComposition.C++O
Info in <ACLiC>: unmodified script has already been compiled and loaded
Info in <ACLiC>: it will be regenerated and reloaded!
Info in <TUnixSystem::ACLiC>: creating shared library /data/tmpdm2s/dm232107/src/valjean/./valjean/eponine/tripoli4/resources/depletion/DepletedComposition_C.so
Info in <ACLiC>: echo > "/data/tmpdm2s/dm232107/src/valjean/./valjean/eponine/tripoli4/resources/depletion/DepletedComposition_C.d"
Info in <ACLiC>: /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/bin/rmkdepend "-f/data/tmpdm2s/dm232107/src/valjean/./valjean/eponine/tripoli4/resources/depletion/
DepletedComposition_C.d" -o_C.so  "-p./valjean/eponine/tripoli4/resources/depletion/"  -Y --  "-I/data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/include/"  -I$ROOTS
YS/include -I"/data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/etc/" -I"/data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66
qm7x4q5zzkgkzyf5oj43jnra5zgsx/etc//cling" -I"/data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/include/" -I"/data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos
7-x86_64/gcc-7.5.0/python-3.9.0-qv6qdkmv5i5ccq5ck6mc2uhrwspxcg4w/include/python3.9" -I"/data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/python-3.8.10-dpdcewvuzki5skfolytrbudpyzljmmvk/include/python3.8" -I"/data/
tmpdm2s/dm232107/src/valjean/"    -- "/data/tmpdm2s/dm232107/src/valjean/./valjean/eponine/tripoli4/resources/depletion/DepletedComposition.C"  "-t./valjean/eponine/tripoli4/resources/depletion/DepletedComposition_C.so" > /dev/null 2>&1 
Info in <ACLiC>: echo ./valjean/eponine/tripoli4/resources/depletion/DepletedComposition_C.so: /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/include/RVersion.h /d
ata/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/include/RConfig.h /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5
zzkgkzyf5oj43jnra5zgsx/include/TClass.h /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/include/TDictAttributeMap.h /data/tmpdm2s/valjean/product/spack/opt/spack/li
nux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/include/TInterpreter.h /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/include/TROOT.h /d
ata/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/include/TBuffer.h /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5
zzkgkzyf5oj43jnra5zgsx/include/TMemberInspector.h /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/include/TError.h /data/tmpdm2s/valjean/product/spack/opt/spack/lin
ux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/include/RtypesImp.h /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/include/TIsAProxy.h /d
ata/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/include/TFileMergeInfo.h /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66
qm7x4q5zzkgkzyf5oj43jnra5zgsx/include/TCollectionProxyInfo.h /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/bin/rootcling  >> "/data/tmpdm2s/dm232107/src/valjean/.
/valjean/eponine/tripoli4/resources/depletion/DepletedComposition_C.d"
Info in <TUnixSystem::ACLiC>: looking for header in: /data/tmpdm2s/dm232107/src/valjean/./valjean/eponine/tripoli4/resources/depletion:/data/tmpdm2s/dm232107/src/valjean:.::$ROOTSYS/include:"/data/tmpdm2s/valjean/product/spack/opt/spack/li
nux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/etc/":"/data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/etc//cling":"/data/tmpdm2s/valjean
/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/include/":"/data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/python-3.9.0-qv6qdkmv5i5ccq5ck6mc2uhrwspxcg4w/inc
lude/python3.9":"/data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/python-3.8.10-dpdcewvuzki5skfolytrbudpyzljmmvk/include/python3.8":"/data/tmpdm2s/dm232107/src/valjean/":
Info in <ACLiC>: creating the dictionary files
Info in <ACLiC>: /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/bin/rootcling -v0 "--lib-list-prefix=/data/tmpdm2s/dm232107/src/valjean/./valjean/eponine/tripoli4/
resources/depletion/DepletedComposition_C_ACLiC_map" -f "/data/tmpdm2s/dm232107/src/valjean/./valjean/eponine/tripoli4/resources/depletion/DepletedComposition_C_ACLiC_dict.cxx" -I$ROOTSYS/include -I"/data/tmpdm2s/valjean/product/spack/opt/
spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/etc/" -I"/data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/etc//cling" -I"/data/tmp
dm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/include/" -I"/data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/python-3.9.0-qv6qdkmv5i5ccq5ck6mc2u
hrwspxcg4w/include/python3.9" -I"/data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/python-3.8.10-dpdcewvuzki5skfolytrbudpyzljmmvk/include/python3.8" -I"/data/tmpdm2s/dm232107/src/valjean/" -D__ACLIC__  "/data/tmp
dm2s/dm232107/src/valjean/./valjean/eponine/tripoli4/resources/depletion/DepletedComposition.C" "/data/tmpdm2s/dm232107/src/valjean/./valjean/eponine/tripoli4/resources/depletion/DepletedComposition_C_ACLiC_linkdef.h"
Error in <TInterpreter::InspectMembers>: TClass and cling disagree on the size of the class TBaseClass, respectively 152 128

Error in <TInterpreter::InspectMembers>: TClass and cling disagree on the size of the class TClassRef, respectively 40 16

Error in <TInterpreter::InspectMembers>: TClass and cling disagree on the size of the class TClassRef, respectively 40 16

Info in <TUnixSystem::Load>: loaded library /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/lib/libRIO.so.6.22.06, status 1
Info in <ACLiC>: compiling the dictionary and script files
Info in <ACLiC>: cd "/data/tmpdm2s/dm232107/src/valjean/./valjean/eponine/tripoli4/resources/depletion" ; g++ -fPIC -c -O3 -DNDEBUG -std=c++11 -Wno-implicit-fallthrough -Wno-noexcept-type -pipe -W -Woverloaded-virtual -fsigned-char -pthrea
d  -I$ROOTSYS/include -I"/data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/etc/" -I"/data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-
6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/etc//cling" -I"/data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/include/" -I"/data/tmpdm2s/valjean/product/spack/opt/spack/l
inux-centos7-x86_64/gcc-7.5.0/python-3.9.0-qv6qdkmv5i5ccq5ck6mc2uhrwspxcg4w/include/python3.9" -I"/data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/python-3.8.10-dpdcewvuzki5skfolytrbudpyzljmmvk/include/python3.8
" -I"/data/tmpdm2s/dm232107/src/valjean/"   -D__ACLIC__ "/data/tmpdm2s/dm232107/src/valjean/./valjean/eponine/tripoli4/resources/depletion/DepletedComposition_C_ACLiC_dict.cxx" ; g++ -O3 -DNDEBUG "/data/tmpdm2s/dm232107/src/valjean/./valje
an/eponine/tripoli4/resources/depletion/DepletedComposition_C_ACLiC_dict.o" -shared   "/data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/lib/libRint.so" "/data/tmpdm2
s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/lib/libCore.so" "/data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-4.8.5/gcc-7.5.0-kg4dkgyifmgrr5wagicqv6vq
aubc6lcs/lib64/libstdc++.so" "/lib64/libm.so" "/data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-4.8.5/gcc-7.5.0-kg4dkgyifmgrr5wagicqv6vqaubc6lcs/lib64/libgcc_s.so" "/lib64/libpthread.so" "/lib64/libc.so" "/data/tmpdm2
s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/pcre-8.44-vxtgtvw2dgvndoowbyguxmcw4jd7epfy/lib/libpcre.so" "/data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/xz-5.2.5-aldx5z3j7kifz5arusv6mit6lnai
xrca/lib/liblzma.so" "/data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/xxhash-0.7.4-2cvgzoy25tevumakiyuyykma6hu2xamx/lib/libxxhash.so" "/data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.
0/lz4-1.9.3-4e7vufjl2vsoopkedkut4uyqvhvki2oo/lib/liblz4.so" "/data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/zlib-1.2.11-xtojkomxktl4gysx6s37ctx5n5oamvsi/lib/libz.so" "/data/tmpdm2s/valjean/product/spack/opt/sp
ack/linux-centos7-x86_64/gcc-7.5.0/zstd-1.4.9-kmum4laztsibujfnzv6eh44ffyp4ekje/lib64/libzstd.so" "/lib64/libdl.so" "/lib64/librt.so" -o "/data/tmpdm2s/dm232107/src/valjean/./valjean/eponine/tripoli4/resources/depletion/DepletedComposition_
C.so"
Info in <ACLiC>: loading the shared library
Info in <TUnixSystem::Load>: loaded library /data/tmpdm2s/dm232107/src/valjean/valjean/eponine/tripoli4/resources/depletion/DepletedComposition_C.so, status 0
/data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/bin/rootcling -v0 --lib-list-prefix=/data/tmpdm2s/dm232107/src/valjean/./valjean/eponine/tripoli4/resources/depletio
n/DepletedComposition_C_ACLiC_map -f /data/tmpdm2s/dm232107/src/valjean/./valjean/eponine/tripoli4/resources/depletion/DepletedComposition_C_ACLiC_dict.cxx -I/data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root
-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/include -I/data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/etc/ -I/data/tmpdm2s/valjean/product/spack/opt/spack/linux-cento
s7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/etc//cling -I/data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/include/ -I/data/tmpdm2s/valjean/prod
uct/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/python-3.9.0-qv6qdkmv5i5ccq5ck6mc2uhrwspxcg4w/include/python3.9 -I/data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/python-3.8.10-dpdcewvuzki5skfolytrbudpyzljmmv
k/include/python3.8 -I/data/tmpdm2s/dm232107/src/valjean/ -D__ACLIC__ /data/tmpdm2s/dm232107/src/valjean/./valjean/eponine/tripoli4/resources/depletion/DepletedComposition.C /data/tmpdm2s/dm232107/src/valjean/./valjean/eponine/tripoli4/res
ources/depletion/DepletedComposition_C_ACLiC_linkdef.h
 cd /data/tmpdm2s/dm232107/src/valjean/./valjean/eponine/tripoli4/resources/depletion ; g++ -fPIC -c -O3 -DNDEBUG -std=c++11 -Wno-implicit-fallthrough -Wno-noexcept-type -pipe -W -Woverloaded-virtual -fsigned-char -pthread  -I/data/tmpdm2s
/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/include -I/data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5z
gsx/etc/ -I/data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/etc//cling -I/data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v6
6qm7x4q5zzkgkzyf5oj43jnra5zgsx/include/ -I/data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/python-3.9.0-qv6qdkmv5i5ccq5ck6mc2uhrwspxcg4w/include/python3.9 -I/data/tmpdm2s/valjean/product/spack/opt/spack/linux-ce
ntos7-x86_64/gcc-7.5.0/python-3.8.10-dpdcewvuzki5skfolytrbudpyzljmmvk/include/python3.8 -I/data/tmpdm2s/dm232107/src/valjean/   -D__ACLIC__ /data/tmpdm2s/dm232107/src/valjean/./valjean/eponine/tripoli4/resources/depletion/DepletedCompositi
on_C_ACLiC_dict.cxx ; g++ -O3 -DNDEBUG /data/tmpdm2s/dm232107/src/valjean/./valjean/eponine/tripoli4/resources/depletion/DepletedComposition_C_ACLiC_dict.o -shared   /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.
5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/lib/libRint.so /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/lib/libCore.so /data/tmpdm2s/valjean/product/spack/
opt/spack/linux-centos7-x86_64/gcc-4.8.5/gcc-7.5.0-kg4dkgyifmgrr5wagicqv6vqaubc6lcs/lib64/libstdc++.so /lib64/libm.so /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-4.8.5/gcc-7.5.0-kg4dkgyifmgrr5wagicqv6vqaubc6lcs/l
ib64/libgcc_s.so /lib64/libpthread.so /lib64/libc.so /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/pcre-8.44-vxtgtvw2dgvndoowbyguxmcw4jd7epfy/lib/libpcre.so /data/tmpdm2s/valjean/product/spack/opt/spack/linux
-centos7-x86_64/gcc-7.5.0/xz-5.2.5-aldx5z3j7kifz5arusv6mit6lnaixrca/lib/liblzma.so /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/xxhash-0.7.4-2cvgzoy25tevumakiyuyykma6hu2xamx/lib/libxxhash.so /data/tmpdm2s/va
ljean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/lz4-1.9.3-4e7vufjl2vsoopkedkut4uyqvhvki2oo/lib/liblz4.so /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/zlib-1.2.11-xtojkomxktl4gysx6s37ctx5n5oamvsi
/lib/libz.so /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/zstd-1.4.9-kmum4laztsibujfnzv6eh44ffyp4ekje/lib64/libzstd.so /lib64/libdl.so /lib64/librt.so -o /data/tmpdm2s/dm232107/src/valjean/./valjean/eponine/
tripoli4/resources/depletion/DepletedComposition_C.so 
 cd /data/tmpdm2s/dm232107/src/valjean/./valjean/eponine/tripoli4/resources/depletion ; g++ -c -O3 -DNDEBUG -std=c++11 -Wno-implicit-fallthrough -Wno-noexcept-type -pipe -W -Woverloaded-virtual -fsigned-char -pthread  -I/data/tmpdm2s/valje
an/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/include -I/data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/et
c/ -I/data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/etc//cling -I/data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4
q5zzkgkzyf5oj43jnra5zgsx/include/ -I/data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/python-3.9.0-qv6qdkmv5i5ccq5ck6mc2uhrwspxcg4w/include/python3.9 -I/data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-
x86_64/gcc-7.5.0/python-3.8.10-dpdcewvuzki5skfolytrbudpyzljmmvk/include/python3.8 -I/data/tmpdm2s/dm232107/src/valjean/   -D__ACLIC__ /data/tmpdm2s/dm232107/src/valjean/./valjean/eponine/tripoli4/resources/depletion/DepletedComposition_C_A
CLiC_dict.cxx; g++ -O3 -DNDEBUG /data/tmpdm2s/dm232107/src/valjean/./valjean/eponine/tripoli4/resources/depletion/DepletedComposition_C_ACLiC_dict.o  -o /data/tmpdm2s/dm232107/src/valjean/./valjean/eponine/tripoli4/resources/depletion/Depl
etedComposition_C_ACLiC_exec  /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/lib/libRint.so /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-
7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/lib/libCore.so /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-4.8.5/gcc-7.5.0-kg4dkgyifmgrr5wagicqv6vqaubc6lcs/lib64/libstdc++.so /lib64/libm.so /data/tmpdm2s/valj
ean/product/spack/opt/spack/linux-centos7-x86_64/gcc-4.8.5/gcc-7.5.0-kg4dkgyifmgrr5wagicqv6vqaubc6lcs/lib64/libgcc_s.so /lib64/libpthread.so /lib64/libc.so /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/pcre-8
.44-vxtgtvw2dgvndoowbyguxmcw4jd7epfy/lib/libpcre.so /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/xz-5.2.5-aldx5z3j7kifz5arusv6mit6lnaixrca/lib/liblzma.so /data/tmpdm2s/valjean/product/spack/opt/spack/linux-c
entos7-x86_64/gcc-7.5.0/xxhash-0.7.4-2cvgzoy25tevumakiyuyykma6hu2xamx/lib/libxxhash.so /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/lz4-1.9.3-4e7vufjl2vsoopkedkut4uyqvhvki2oo/lib/liblz4.so /data/tmpdm2s/valj
ean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/zlib-1.2.11-xtojkomxktl4gysx6s37ctx5n5oamvsi/lib/libz.so /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/zstd-1.4.9-kmum4laztsibujfnzv6eh44ffyp4ekje/li
b64/libzstd.so /lib64/libdl.so /lib64/librt.so 

I’ve simplified the failing invocation of rootcling to

/rootsys/bin/rootcling -v0 \
"--lib-list-prefix=/tripoli4/resources/depletion/DepletedComposition_C_ACLiC_map" \
-f "/tripoli4/resources/depletion/DepletedComposition_C_ACLiC_dict.cxx" \
-I$ROOTSYS/include -I"/rootsys/etc/" \
-I"/rootsys/etc//cling" \
-I"/rootsys/include/" \
-I"/spackroot/python-3.9.0-qv6qdkmv5i5ccq5ck6mc2uhrwspxcg4w/include/python3.9" \
-I"/spackroot/python-3.8.10-dpdcewvuzki5skfolytrbudpyzljmmvk/include/python3.8" \
-I"/data/tmpdm2s/dm232107/src/valjean/" \
-D__ACLIC__  \
"/tripoli4/resources/depletion/DepletedComposition.C" \
"/tripoli4/resources/depletion/DepletedComposition_C_ACLiC_linkdef.h"

Questions:

  1. Is $ROOTSYS indeed /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/?
  2. What does ldd /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/bin/rootcling say, are these libraries from the ROOT installation you expect to see?
  3. And why are there two Python include paths?

Yes.

Looks fine to me:

% ldd $ROOTSYS/bin/rootcling
        linux-vdso.so.1 =>  (0x00002b5086c45000)
        libRIO.so.6.22 => /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/lib/libRIO.so.6.22 (0x00002b5086e47000)
        libCling.so.6.22 => /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/lib/libCling.so.6.22 (0x00002b50873d0000)
        libThread.so.6.22 => /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/lib/libThread.so.6.22 (0x00002b508b76e000)
        libCore.so.6.22 => /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/lib/libCore.so.6.22 (0x00002b508b9c3000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00002b508c019000)
        libstdc++.so.6 => /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-4.8.5/gcc-7.5.0-kg4dkgyifmgrr5wagicqv6vqaubc6lcs/lib64/libstdc++.so.6 (0x00002b508c235000)
        libm.so.6 => /lib64/libm.so.6 (0x00002b508c5b8000)
        libgcc_s.so.1 => /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-4.8.5/gcc-7.5.0-kg4dkgyifmgrr5wagicqv6vqaubc6lcs/lib64/libgcc_s.so.1 (0x00002b508c8ba000)
        libc.so.6 => /lib64/libc.so.6 (0x00002b508cad1000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00002b508ce9f000)
        /lib64/ld-linux-x86-64.so.2 (0x00002b5086c23000)
        librt.so.1 => /lib64/librt.so.1 (0x00002b508d0a3000)
        libtinfo.so.6 => /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/ncurses-6.2-i566fo5tenq5ndrfebhzczm2h563wjj2/lib/libtinfo.so.6 (0x00002b508d2ab000)
        libz.so.1 => /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/zlib-1.2.11-xtojkomxktl4gysx6s37ctx5n5oamvsi/lib/libz.so.1 (0x00002b508d4e7000)
        libpcre.so.1 => /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/pcre-8.44-vxtgtvw2dgvndoowbyguxmcw4jd7epfy/lib/libpcre.so.1 (0x00002b508d6fe000)
        liblzma.so.5 => /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/xz-5.2.5-aldx5z3j7kifz5arusv6mit6lnaixrca/lib/liblzma.so.5 (0x00002b508d942000)
        libxxhash.so.0 => /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/xxhash-0.7.4-2cvgzoy25tevumakiyuyykma6hu2xamx/lib/libxxhash.so.0 (0x00002b508db68000)
        liblz4.so.1 => /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/lz4-1.9.3-4e7vufjl2vsoopkedkut4uyqvhvki2oo/lib/liblz4.so.1 (0x00002b508dd77000)
        libzstd.so.1 => /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-7.5.0/zstd-1.4.9-kmum4laztsibujfnzv6eh44ffyp4ekje/lib64/libzstd.so.1 (0x00002b508dfb0000)

I think I accidentally sourced two Python modules. I am fixing the environment now.

Thanks.

If you start root, what’s the output of sizeof(TClassRef)? What’s the output of

struct AXEL {std::string a; void ** b; };
sizeof(AXEL)

To exclude that mylib.C causes any issues, does this happen with any source file you try to ACLiC (.L src.C++)? Can you show the minimal source file that reproduces this issue?

Axel, thanks for following up.

root [0] sizeof(TClassRef)
(unsigned long) 40
root [1] struct AXEL {std::string a; void ** b; };
root [2] sizeof(AXEL)
(unsigned long) 40

The following file is sufficient to reproduce the issue!

#include "TObject.h"

struct Test : public TObject {
};

OK good. We’re simulating TClassRef here, 40 is what I expect, 16 is not what I expect.

After loading your library (that issues the warnings), could you run this on the ROOT prompt and send the output:

.rawInput
void TCling__DEBUG__decl_dump(void* D);
.rawInput
TCling__DEBUG__decl_dump((void*)(gInterpreter->ClassInfo_Tagnum(TClass::GetClass("TClassRef")->GetClassInfo())));

Here we go:

root [0] .L valjean/eponine/tripoli4/resources/depletion/DepletedComposition.C++O
Info in <TUnixSystem::ACLiC>: creating shared library /data/tmpdm2s/dm232107/src/valjean/./valjean/eponine/tripoli4/resources/depletion/DepletedComposition_C.so
Error in <TInterpreter::InspectMembers>: TClass and cling disagree on the size of the class TBaseClass, respectively 152 128

Error in <TInterpreter::InspectMembers>: TClass and cling disagree on the size of the class TClassRef, respectively 40 16

Error in <TInterpreter::InspectMembers>: TClass and cling disagree on the size of the class TClassRef, respectively 40 16

root [1] .rawInput
Using raw input
root [2] void TCling__DEBUG__decl_dump(void* D);
root [3] .rawInput
Not using raw input
root [4] TCling__DEBUG__decl_dump((void*)(gInterpreter->ClassInfo_Tagnum(TClass::GetClass("TClassRef")->GetClassInfo())));
CXXRecordDecl 0x49a64e0 </volatile/dm232107/spack/stage/spack-stage-root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/spack-build-v66qm7x/include/TClassRef.h:28:1, line:76:1> line:28:7 imported referenced class TClassRef definition
|-DefinitionData standard_layout has_user_declared_ctor can_const_default_init
| |-DefaultConstructor exists non_trivial user_provided
| |-CopyConstructor non_trivial user_declared has_const_param needs_overload_resolution implicit_has_const_param
| |-MoveConstructor needs_overload_resolution
| |-CopyAssignment non_trivial has_const_param user_declared implicit_has_const_param
| |-MoveAssignment needs_overload_resolution
| `-Destructor non_trivial user_declared needs_overload_resolution
|-CXXRecordDecl 0x49c8268 <col:1, col:7> col:7 imported implicit referenced class TClassRef
|-AccessSpecDecl 0x49c8328 <line:30:1, col:8> col:1 imported private
|-FriendDecl 0x49c8358 <line:38:4, col:17> col:11 imported 'class TClass':'class TClass'
|-CXXMethodDecl 0x49c83e8 <line:40:4, col:33> col:9 imported used Assign 'void (const class TClassRef &)'
| `-ParmVarDecl 0x49c84f0 <col:16, col:32> col:33 imported 'const class TClassRef &'
|-CXXMethodDecl 0x49c8598 <line:41:4, col:24> col:9 imported used Assign 'void (class TClass *)'
| `-ParmVarDecl 0x49c8638 <col:16, col:23> col:24 imported 'class TClass *'
|-CXXMethodDecl 0x49c86e0 <line:42:4, col:33> col:14 imported used InternalGetClass 'class TClass *(void) const'
|-AccessSpecDecl 0x49c87a0 <line:43:1, col:7> col:1 imported public
|-CXXConstructorDecl 0x49c87d0 <line:44:4, col:46> col:4 imported used TClassRef 'void (void)'
| |-CXXCtorInitializer Field 0x49a6a48 'fClassName' 'std::string':'class std::__cxx11::basic_string<char>'
| | `-CXXConstructExpr 0x5725648 <col:18, col:29> 'std::string':'class std::__cxx11::basic_string<char>' 'void (void) noexcept(is_nothrow_default_constructible<class allocator<char> >::value)'
| |-CXXCtorInitializer Field 0x49a6b60 'fClassPtr' 'class TClass *const *'
| | `-ImplicitCastExpr 0x57256c0 <col:42> 'class TClass *const *' <NullToPointer>
| |   `-IntegerLiteral 0x57256a0 <col:42> 'int' 0
| `-CompoundStmt 0x5725700 <col:45, col:46>
|-CXXConstructorDecl 0x49c88c0 <line:45:4, col:24> col:4 imported used TClassRef 'void (class TClass *)'
| `-ParmVarDecl 0x49c8970 <col:14, col:22> col:22 imported cl 'class TClass *'
|-CXXConstructorDecl 0x49c8a18 <line:46:4, col:35> col:4 imported used TClassRef 'void (const char *)'
| `-ParmVarDecl 0x49c8ac8 <col:14, col:26> col:26 imported classname 'const char *'
|-CXXConstructorDecl 0x49c8b78 <line:47:4, col:30> col:4 imported used TClassRef 'void (const class TClassRef &)'
| `-ParmVarDecl 0x49c8c28 <col:14, col:29> col:30 imported 'const class TClassRef &'
|-CXXMethodDecl 0x49c8cd0 <line:48:4, line:54:4> line:48:22 imported used operator= 'class TClassRef &(const class TClassRef &)' inline
| |-ParmVarDecl 0x49c8de0 <col:32, col:49> col:49 imported used rhs 'const class TClassRef &'
| `-CompoundStmt 0x5725ba0 <col:54, line:54:4>
|   |-IfStmt 0x5725b68 <line:50:7, line:52:7>
|   | |-<<<NULL>>>
|   | |-<<<NULL>>>
|   | |-BinaryOperator 0x5725b40 <line:50:11, col:72> '_Bool' '&&'
|   | | |-BinaryOperator 0x5725b18 <col:11, col:20> '_Bool' '!='
|   | | | |-ImplicitCastExpr 0x5725b00 <col:11> 'const class TClassRef *' <NoOp>
|   | | | | `-CXXThisExpr 0x5725ae8 <col:11> 'class TClassRef *' this
|   | | | `-UnaryOperator 0x5725aa0 <col:19, col:20> 'const class TClassRef *' prefix '&'
|   | | |   `-DeclRefExpr 0x5725a78 <col:20> 'const class TClassRef' lvalue ParmVar 0x49c8de0 'rhs' 'const class TClassRef &'
|   | | `-ParenExpr 0x5725a58 <col:27, col:72> '_Bool'
|   | |   `-BinaryOperator 0x5725a30 <col:28, col:63> '_Bool' '||'
|   | |     |-BinaryOperator 0x5725a08 <col:28, col:41> '_Bool' '=='
|   | |     | |-ImplicitCastExpr 0x57259f0 <col:28> 'class TClass *const *' <LValueToRValue>
|   | |     | | `-MemberExpr 0x57259b8 <col:28> 'class TClass *const *' lvalue ->fClassPtr 0x49a6b60
|   | |     | |   `-CXXThisExpr 0x57259a0 <col:28> 'class TClassRef *' this
|   | |     | `-ImplicitCastExpr 0x5725988 <col:41> 'class TClass *const *' <NullToPointer>
|   | |     |   `-IntegerLiteral 0x5725968 <col:41> 'int' 0
|   | |     `-BinaryOperator 0x5725940 <col:46, col:63> '_Bool' '!='
|   | |       |-ImplicitCastExpr 0x5725928 <col:46> 'class TClass *const *' <LValueToRValue>
|   | |       | `-MemberExpr 0x57258f0 <col:46> 'class TClass *const *' lvalue ->fClassPtr 0x49a6b60
|   | |       |   `-CXXThisExpr 0x57258d8 <col:46> 'class TClassRef *' this
|   | |       `-ImplicitCastExpr 0x57258c0 <col:59, col:63> 'class TClass *const *' <LValueToRValue>
|   | |         `-MemberExpr 0x5725888 <col:59, col:63> 'class TClass *const *const' lvalue .fClassPtr 0x49a6b60
|   | |           `-DeclRefExpr 0x5725860 <col:59> 'const class TClassRef' lvalue ParmVar 0x49c8de0 'rhs' 'const class TClassRef &'
|   | |-CompoundStmt 0x5725840 <col:75, line:52:7>
|   | | `-CXXMemberCallExpr 0x5725808 <line:51:10, col:26> 'void'
|   | |   |-MemberExpr 0x57257d0 <col:10, col:16> '<bound member function type>' ->Assign 0x49c83e8
|   | |   | `-CXXThisExpr 0x57257b8 <col:10> 'class TClassRef *' this
|   | |   `-DeclRefExpr 0x5725790 <col:23> 'const class TClassRef' lvalue ParmVar 0x49c8de0 'rhs' 'const class TClassRef &'
|   | `-<<<NULL>>>
|   `-ReturnStmt 0x5725778 <line:53:7, col:15>
|     `-UnaryOperator 0x5725758 <col:14, col:15> 'class TClassRef' lvalue prefix '*'
|       `-CXXThisExpr 0x5725718 <col:15> 'class TClassRef *' this
|-CXXMethodDecl 0x49c8e88 <line:55:4, line:61:4> line:55:22 imported used operator= 'class TClassRef &(class TClass *)' inline
| |-ParmVarDecl 0x49c8f60 <col:32, col:40> col:40 imported used rhs 'class TClass *'
| `-CompoundStmt 0x5725f50 <col:45, line:61:4>
|   |-IfStmt 0x5725f18 <line:57:7, line:59:7>
|   | |-<<<NULL>>>
|   | |-<<<NULL>>>
|   | |-BinaryOperator 0x5725ef0 <line:57:12, col:56> '_Bool' '||'
|   | | |-BinaryOperator 0x5725ec8 <col:12, col:29> '_Bool' '=='
|   | | | |-ImplicitCastExpr 0x5725eb0 <col:12, col:18> 'class TClass *const *' <LValueToRValue>
|   | | | | `-MemberExpr 0x5725e78 <col:12, col:18> 'class TClass *const *' lvalue ->fClassPtr 0x49a6b60
|   | | | |   `-CXXThisExpr 0x5725e60 <col:12> 'class TClassRef *' this
|   | | | `-ImplicitCastExpr 0x5725e48 <col:29> 'class TClass *const *' <NullToPointer>
|   | | |   `-IntegerLiteral 0x5725e28 <col:29> 'int' 0
|   | | `-BinaryOperator 0x5725e00 <col:34, col:56> '_Bool' '!='
|   | |   |-ImplicitCastExpr 0x5725de8 <col:34, col:51> 'class TClass *' <LValueToRValue>
|   | |   | `-UnaryOperator 0x5725dc8 <col:34, col:51> 'class TClass *const' lvalue prefix '*'
|   | |   |   `-ImplicitCastExpr 0x5725db0 <col:35, col:51> 'class TClass *const *' <LValueToRValue>
|   | |   |     `-ParenExpr 0x5725d90 <col:35, col:51> 'class TClass *const *' lvalue
|   | |   |       `-MemberExpr 0x5725d58 <col:36, col:42> 'class TClass *const *' lvalue ->fClassPtr 0x49a6b60
|   | |   |         `-CXXThisExpr 0x5725d40 <col:36> 'class TClassRef *' this
|   | |   `-ImplicitCastExpr 0x5725d28 <col:56> 'class TClass *' <LValueToRValue>
|   | |     `-DeclRefExpr 0x5725d00 <col:56> 'class TClass *' lvalue ParmVar 0x49c8f60 'rhs' 'class TClass *'
|   | |-CompoundStmt 0x5725ce0 <col:61, line:59:7>
|   | | `-CXXMemberCallExpr 0x5725ca8 <line:58:10, col:26> 'void'
|   | |   |-MemberExpr 0x5725c70 <col:10, col:16> '<bound member function type>' ->Assign 0x49c8598
|   | |   | `-CXXThisExpr 0x5725c58 <col:10> 'class TClassRef *' this
|   | |   `-ImplicitCastExpr 0x5725c40 <col:23> 'class TClass *' <LValueToRValue>
|   | |     `-DeclRefExpr 0x5725c18 <col:23> 'class TClass *' lvalue ParmVar 0x49c8f60 'rhs' 'class TClass *'
|   | `-<<<NULL>>>
|   `-ReturnStmt 0x5725c00 <line:60:7, col:15>
|     `-UnaryOperator 0x5725be0 <col:14, col:15> 'class TClassRef' lvalue prefix '*'
|       `-CXXThisExpr 0x5725bc8 <col:15> 'class TClassRef *' this
|-CXXDestructorDecl 0x49c9008 <line:63:4, col:19> col:4 imported used ~TClassRef 'void (void) throw()'
| `-CompoundStmt 0x5725f78 <col:17, col:19>
|-CXXMethodDecl 0x49c9100 <line:65:4, line:68:4> line:65:9 imported SetName 'void (const char *)'root.exe: /volatile/dm232107/spack/stage/spack-stage-root-6.22.06-v66qm7x4q5zzkgkzyf5oj43jnra5zgsx/spack-src/interpreter/cling/lib/Interpreter
/Transaction.cpp:138: void cling::Transaction::append(cling::Transaction::DelayCallInfo): Assertion `getState() == kCollecting && "Cannot append declarations in current state."' failed.
[1]    13972 abort      root.exe -l

:open_mouth:

Hi @Axel, sorry to ping… any suggestion to solve this? Thank you.

1 Like

Just checking - that’s the output you’re getting after you see

Error in <TInterpreter::InspectMembers>: TClass and cling disagree on the size of the class TClassRef, respectively 40 16

Correct.

I edited post #10 to show the full session.

Try to start ROOT using “root -n” (maybe you have a “rootlogon.C” or “.rootrc” file which creates problems).

root -n does not help, unfortunately.

I’m wondering: ldd rootcling shows the path to libstdc++.so.6 that was installed with gcc 7.5.0. However, it seems that this library was (at least partly) compiled with gcc 4.8.5:

$ readelf -p .comment /data/tmpdm2s/valjean/product/spack/opt/spack/linux-centos7-x86_64/gcc-4.8.5/gcc-7.5.0-kg4dkgyifmgrr5wagicqv6vqaubc6lcs/lib64/libstdc++.so.6       

String dump of section '.comment':
  [     0]  GCC: (Spack GCC) 7.5.0
  [    17]  GCC: (GNU) 4.8.5 20150623 (Red Hat 4.8.5-44)

gcc 4.8.5 and 7.5.0 have different ABIs by default. Can this lead to problems?

For information, I recompiled gcc 7.5.0 using gcc 7.5.0, recompiled root with that, didn’t help.

Thanks. Can you please apply the following patch:

diff --git a/core/metacling/src/TCling.cxx b/core/metacling/src/TCling.cxx
index 7476c7d9ab..a70ff17ee1 100644
--- a/core/metacling/src/TCling.cxx
+++ b/core/metacling/src/TCling.cxx
@@ -227,7 +227,12 @@ R__DLLEXPORT void TCling__DEBUG__dump(clang::Decl* D) {
 R__DLLEXPORT void TCling__DEBUG__dump(clang::FunctionDecl* FD) {
    return FD->dump();
 }
+
+cling::Interpreter* TCling__GetInterpreter() {
+   return ((TCling*)gCling)->GetInterpreterImpl();
+}
 R__DLLEXPORT void TCling__DEBUG__decl_dump(void* D) {
+   cling::Interpreter::PushTransactionRAII deserRAII(TCling__GetInterpreter());
    return ((clang::Decl*)D)->dump();
 }
 R__DLLEXPORT void TCling__DEBUG__printName(clang::Decl* D) {

rebuild ROOT (just make -j8 Cling is enough) and post the full output again?

1 Like

Here we go:

root [0] .L /home/dm232107/src/valjean/valjean/eponine/tripoli4/resources/depletion/DepletedComposition.C++O
Info in <TUnixSystem::ACLiC>: creating shared library /home/dm232107/src/valjean/valjean/eponine/tripoli4/resources/depletion/DepletedComposition_C.so
Error in <TInterpreter::InspectMembers>: TClass and cling disagree on the size of the class TBaseClass, respectively 152 128

Error in <TInterpreter::InspectMembers>: TClass and cling disagree on the size of the class TClassRef, respectively 40 16

Error in <TInterpreter::InspectMembers>: TClass and cling disagree on the size of the class TClassRef, respectively 40 16

root [1] .rawInput
Using raw input
root [2] void TCling__DEBUG__decl_dump(void* D);
root [3] .rawInput
Not using raw input
root [4] TCling__DEBUG__decl_dump((void*)(gInterpreter->ClassInfo_Tagnum(TClass::GetClass("TClassRef")->GetClassInfo())));
CXXRecordDecl 0x2b0d1c0 </volatile/dm232107/spack/stage/spack-stage-root-6.22.06-5m5dji7jlm3usbupgo4mcatrivj2mtjd/spack-build-5m5dji7/include/TClassRef.h:28:1, line:76:1> line:28:7 imported referenced class TClassRef definition
|-DefinitionData standard_layout has_user_declared_ctor can_const_default_init
| |-DefaultConstructor exists non_trivial user_provided
| |-CopyConstructor non_trivial user_declared has_const_param needs_overload_resolution implicit_has_const_param
| |-MoveConstructor needs_overload_resolution
| |-CopyAssignment non_trivial has_const_param user_declared implicit_has_const_param
| |-MoveAssignment needs_overload_resolution
| `-Destructor non_trivial user_declared needs_overload_resolution
|-CXXRecordDecl 0x2b2edb8 <col:1, col:7> col:7 imported implicit referenced class TClassRef
|-AccessSpecDecl 0x2b2ee78 <line:30:1, col:8> col:1 imported private
|-FriendDecl 0x2b2eea8 <line:38:4, col:17> col:11 imported 'class TClass':'class TClass'
|-CXXMethodDecl 0x2b2ef38 <line:40:4, col:33> col:9 imported used Assign 'void (const class TClassRef &)'
| `-ParmVarDecl 0x2b2f040 <col:16, col:32> col:33 imported 'const class TClassRef &'
|-CXXMethodDecl 0x2b2f0e8 <line:41:4, col:24> col:9 imported used Assign 'void (class TClass *)'
| `-ParmVarDecl 0x2b2f188 <col:16, col:23> col:24 imported 'class TClass *'
|-CXXMethodDecl 0x2b2f230 <line:42:4, col:33> col:14 imported used InternalGetClass 'class TClass *(void) const'
|-AccessSpecDecl 0x2b2f2f0 <line:43:1, col:7> col:1 imported public
|-CXXConstructorDecl 0x2b2f320 <line:44:4, col:46> col:4 imported used TClassRef 'void (void)'
| |-CXXCtorInitializer Field 0x2b0d728 'fClassName' 'std::string':'class std::__cxx11::basic_string<char>'
| | `-CXXConstructExpr 0x3883f78 <col:18, col:29> 'std::string':'class std::__cxx11::basic_string<char>' 'void (void) noexcept(is_nothrow_default_constructible<class allocator<char> >::value)'
| |-CXXCtorInitializer Field 0x2b0d840 'fClassPtr' 'class TClass *const *'
| | `-ImplicitCastExpr 0x3883ff0 <col:42> 'class TClass *const *' <NullToPointer>
| |   `-IntegerLiteral 0x3883fd0 <col:42> 'int' 0
| `-CompoundStmt 0x3884030 <col:45, col:46>
|-CXXConstructorDecl 0x2b2f410 <line:45:4, col:24> col:4 imported used TClassRef 'void (class TClass *)'
| `-ParmVarDecl 0x2b2f4c0 <col:14, col:22> col:22 imported cl 'class TClass *'
|-CXXConstructorDecl 0x2b2f568 <line:46:4, col:35> col:4 imported used TClassRef 'void (const char *)'
| `-ParmVarDecl 0x2b2f618 <col:14, col:26> col:26 imported classname 'const char *'
|-CXXConstructorDecl 0x2b2f6c8 <line:47:4, col:30> col:4 imported used TClassRef 'void (const class TClassRef &)'
| `-ParmVarDecl 0x2b2f778 <col:14, col:29> col:30 imported 'const class TClassRef &'
|-CXXMethodDecl 0x2b2f820 <line:48:4, line:54:4> line:48:22 imported used operator= 'class TClassRef &(const class TClassRef &)' inline
| |-ParmVarDecl 0x2b2f930 <col:32, col:49> col:49 imported used rhs 'const class TClassRef &'
| `-CompoundStmt 0x38844d0 <col:54, line:54:4>
|   |-IfStmt 0x3884498 <line:50:7, line:52:7>
|   | |-<<<NULL>>>
|   | |-<<<NULL>>>
|   | |-BinaryOperator 0x3884470 <line:50:11, col:72> '_Bool' '&&'
|   | | |-BinaryOperator 0x3884448 <col:11, col:20> '_Bool' '!='
|   | | | |-ImplicitCastExpr 0x3884430 <col:11> 'const class TClassRef *' <NoOp>
|   | | | | `-CXXThisExpr 0x3884418 <col:11> 'class TClassRef *' this
|   | | | `-UnaryOperator 0x38843d0 <col:19, col:20> 'const class TClassRef *' prefix '&'
|   | | |   `-DeclRefExpr 0x38843a8 <col:20> 'const class TClassRef' lvalue ParmVar 0x2b2f930 'rhs' 'const class TClassRef &'
|   | | `-ParenExpr 0x3884388 <col:27, col:72> '_Bool'
|   | |   `-BinaryOperator 0x3884360 <col:28, col:63> '_Bool' '||'
|   | |     |-BinaryOperator 0x3884338 <col:28, col:41> '_Bool' '=='
|   | |     | |-ImplicitCastExpr 0x3884320 <col:28> 'class TClass *const *' <LValueToRValue>
|   | |     | | `-MemberExpr 0x38842e8 <col:28> 'class TClass *const *' lvalue ->fClassPtr 0x2b0d840
|   | |     | |   `-CXXThisExpr 0x38842d0 <col:28> 'class TClassRef *' this
|   | |     | `-ImplicitCastExpr 0x38842b8 <col:41> 'class TClass *const *' <NullToPointer>
|   | |     |   `-IntegerLiteral 0x3884298 <col:41> 'int' 0
|   | |     `-BinaryOperator 0x3884270 <col:46, col:63> '_Bool' '!='
|   | |       |-ImplicitCastExpr 0x3884258 <col:46> 'class TClass *const *' <LValueToRValue>
|   | |       | `-MemberExpr 0x3884220 <col:46> 'class TClass *const *' lvalue ->fClassPtr 0x2b0d840
|   | |       |   `-CXXThisExpr 0x3884208 <col:46> 'class TClassRef *' this
|   | |       `-ImplicitCastExpr 0x38841f0 <col:59, col:63> 'class TClass *const *' <LValueToRValue>
|   | |         `-MemberExpr 0x38841b8 <col:59, col:63> 'class TClass *const *const' lvalue .fClassPtr 0x2b0d840
|   | |           `-DeclRefExpr 0x3884190 <col:59> 'const class TClassRef' lvalue ParmVar 0x2b2f930 'rhs' 'const class TClassRef &'
|   | |-CompoundStmt 0x3884170 <col:75, line:52:7>
|   | | `-CXXMemberCallExpr 0x3884138 <line:51:10, col:26> 'void'
|   | |   |-MemberExpr 0x3884100 <col:10, col:16> '<bound member function type>' ->Assign 0x2b2ef38
|   | |   | `-CXXThisExpr 0x38840e8 <col:10> 'class TClassRef *' this
|   | |   `-DeclRefExpr 0x38840c0 <col:23> 'const class TClassRef' lvalue ParmVar 0x2b2f930 'rhs' 'const class TClassRef &'
|   | `-<<<NULL>>>
|   `-ReturnStmt 0x38840a8 <line:53:7, col:15>
|     `-UnaryOperator 0x3884088 <col:14, col:15> 'class TClassRef' lvalue prefix '*'
|       `-CXXThisExpr 0x3884048 <col:15> 'class TClassRef *' this
|-CXXMethodDecl 0x2b2f9d8 <line:55:4, line:61:4> line:55:22 imported used operator= 'class TClassRef &(class TClass *)' inline
| |-ParmVarDecl 0x2b2fab0 <col:32, col:40> col:40 imported used rhs 'class TClass *'
| `-CompoundStmt 0x3884880 <col:45, line:61:4>
|   |-IfStmt 0x3884848 <line:57:7, line:59:7>
|   | |-<<<NULL>>>
|   | |-<<<NULL>>>
|   | |-BinaryOperator 0x3884820 <line:57:12, col:56> '_Bool' '||'
|   | | |-BinaryOperator 0x38847f8 <col:12, col:29> '_Bool' '=='
|   | | | |-ImplicitCastExpr 0x38847e0 <col:12, col:18> 'class TClass *const *' <LValueToRValue>
|   | | | | `-MemberExpr 0x38847a8 <col:12, col:18> 'class TClass *const *' lvalue ->fClassPtr 0x2b0d840
|   | | | |   `-CXXThisExpr 0x3884790 <col:12> 'class TClassRef *' this
|   | | | `-ImplicitCastExpr 0x3884778 <col:29> 'class TClass *const *' <NullToPointer>
|   | | |   `-IntegerLiteral 0x3884758 <col:29> 'int' 0
|   | | `-BinaryOperator 0x3884730 <col:34, col:56> '_Bool' '!='
|   | |   |-ImplicitCastExpr 0x3884718 <col:34, col:51> 'class TClass *' <LValueToRValue>
|   | |   | `-UnaryOperator 0x38846f8 <col:34, col:51> 'class TClass *const' lvalue prefix '*'
|   | |   |   `-ImplicitCastExpr 0x38846e0 <col:35, col:51> 'class TClass *const *' <LValueToRValue>
|   | |   |     `-ParenExpr 0x38846c0 <col:35, col:51> 'class TClass *const *' lvalue
|   | |   |       `-MemberExpr 0x3884688 <col:36, col:42> 'class TClass *const *' lvalue ->fClassPtr 0x2b0d840
|   | |   |         `-CXXThisExpr 0x3884670 <col:36> 'class TClassRef *' this
|   | |   `-ImplicitCastExpr 0x3884658 <col:56> 'class TClass *' <LValueToRValue>
|   | |     `-DeclRefExpr 0x3884630 <col:56> 'class TClass *' lvalue ParmVar 0x2b2fab0 'rhs' 'class TClass *'
|   | |-CompoundStmt 0x3884610 <col:61, line:59:7>
|   | | `-CXXMemberCallExpr 0x38845d8 <line:58:10, col:26> 'void'
|   | |   |-MemberExpr 0x38845a0 <col:10, col:16> '<bound member function type>' ->Assign 0x2b2f0e8
|   | |   | `-CXXThisExpr 0x3884588 <col:10> 'class TClassRef *' this
|   | |   `-ImplicitCastExpr 0x3884570 <col:23> 'class TClass *' <LValueToRValue>
|   | |     `-DeclRefExpr 0x3884548 <col:23> 'class TClass *' lvalue ParmVar 0x2b2fab0 'rhs' 'class TClass *'
|   | `-<<<NULL>>>
|   `-ReturnStmt 0x3884530 <line:60:7, col:15>
|     `-UnaryOperator 0x3884510 <col:14, col:15> 'class TClassRef' lvalue prefix '*'
|       `-CXXThisExpr 0x38844f8 <col:15> 'class TClassRef *' this
|-CXXDestructorDecl 0x2b2fb58 <line:63:4, col:19> col:4 imported used ~TClassRef 'void (void) throw()'
| `-CompoundStmt 0x38848a8 <col:17, col:19>
|-CXXMethodDecl 0x2b2fc50 <line:65:4, line:68:4> line:65:9 imported SetName 'void (const char *)'
| |-ParmVarDecl 0x2b2fcf0 <col:17, col:29> col:29 imported used new_name 'const char *'
| `-CompoundStmt 0x38855c8 <col:39, line:68:4>
|   |-IfStmt 0x3885590 <line:66:7, col:56>
|   | |-<<<NULL>>>
|   | |-<<<NULL>>>
|   | |-BinaryOperator 0x3885568 <col:12, col:39> '_Bool' '&&'
|   | | |-ImplicitCastExpr 0x3885550 <col:12> '_Bool' <PointerToBoolean>
|   | | | `-ImplicitCastExpr 0x3885538 <col:12> 'class TClass *const *' <LValueToRValue>
|   | | |   `-MemberExpr 0x3885500 <col:12> 'class TClass *const *' lvalue ->fClassPtr 0x2b0d840
|   | | |     `-CXXThisExpr 0x38854e8 <col:12> 'class TClassRef *' this
|   | | `-CXXOperatorCallExpr 0x3885498 <col:25, col:39> '_Bool'
|   | |   |-ImplicitCastExpr 0x3885420 <col:36> '_Bool (*)(const basic_string<char, struct std::char_traits<char>, class std::allocator<char> > &, const char *)' <FunctionToPointerDecay>
|   | |   | `-DeclRefExpr 0x3884f28 <col:36> '_Bool (const basic_string<char, struct std::char_traits<char>, class std::allocator<char> > &, const char *)' lvalue Function 0x3885148 'operator!=' '_Bool (const basic_string<char, struct std::char_traits<char>, class std::allocator<char> > &, const char *)'
|   | |   |-ImplicitCastExpr 0x3884f10 <col:25> 'const std::string':'const class std::__cxx11::basic_string<char>' lvalue <NoOp>
|   | |   | `-MemberExpr 0x3884ed8 <col:25> 'std::string':'class std::__cxx11::basic_string<char>' lvalue ->fClassName 0x2b0d728
|   | |   |   `-CXXThisExpr 0x3884ec0 <col:25> 'class TClassRef *' this
|   | |   `-ImplicitCastExpr 0x3884ea8 <col:39> 'const char *' <LValueToRValue>
|   | |     `-DeclRefExpr 0x3884e80 <col:39> 'const char *' lvalue ParmVar 0x2b2fcf0 'new_name' 'const char *'
|   | |-CXXMemberCallExpr 0x3884e58 <col:50, col:56> 'void'
|   | | `-MemberExpr 0x3884e20 <col:50> '<bound member function type>' ->Reset 0x2b2ff28
|   | |   `-CXXThisExpr 0x3884e08 <col:50> 'class TClassRef *' this
|   | `-<<<NULL>>>
|   `-CXXOperatorCallExpr 0x3884db8 <line:67:7, col:20> 'class std::__cxx11::basic_string<char>' lvalue
|     |-ImplicitCastExpr 0x3884d48 <col:18> 'class std::__cxx11::basic_string<char> &(*)(const char *)' <FunctionToPointerDecay>
|     | `-DeclRefExpr 0x3884950 <col:18> 'class std::__cxx11::basic_string<char> &(const char *)' lvalue CXXMethod 0x3884a00 'operator=' 'class std::__cxx11::basic_string<char> &(const char *)'
|     |-MemberExpr 0x3884918 <col:7> 'std::string':'class std::__cxx11::basic_string<char>' lvalue ->fClassName 0x2b0d728
|     | `-CXXThisExpr 0x3884900 <col:7> 'class TClassRef *' this
|     `-ImplicitCastExpr 0x38848e8 <col:20> 'const char *' <LValueToRValue>
|       `-DeclRefExpr 0x38848c0 <col:20> 'const char *' lvalue ParmVar 0x2b2fcf0 'new_name' 'const char *'
|-CXXMethodDecl 0x2b2fda0 <line:69:4, col:60> col:16 imported GetClassName 'const char *(void)'
| `-CompoundStmt 0x38857b0 <col:31, col:60>
|   `-ReturnStmt 0x3885798 <col:33, col:57>
|     `-CXXMemberCallExpr 0x3885770 <col:40, col:57> 'const char *'
|       `-MemberExpr 0x3885738 <col:40, col:51> '<bound member function type>' .c_str 0x1008be0
|         `-ImplicitCastExpr 0x3885720 <col:40> 'const class std::__cxx11::basic_string<char>' lvalue <NoOp>
|           `-MemberExpr 0x38856e8 <col:40> 'std::string':'class std::__cxx11::basic_string<char>' lvalue ->fClassName 0x2b0d728
|             `-CXXThisExpr 0x38856d0 <col:40> 'class TClassRef *' this
|-CXXMethodDecl 0x2b2fe68 <line:70:4, col:100> col:12 imported used GetClass 'class TClass *(void) const'
| `-CompoundStmt 0x3885ab0 <col:30, col:100>
|   `-ReturnStmt 0x3885a98 <col:32, col:97>
|     `-ConditionalOperator 0x3885a68 <col:39, col:97> 'class TClass *'
|       |-ParenExpr 0x3885a48 <col:39, col:63> '_Bool'
|       | `-BinaryOperator 0x3885a20 <col:40, col:54> '_Bool' '&&'
|       |   |-ImplicitCastExpr 0x3885a08 <col:40> '_Bool' <PointerToBoolean>
|       |   | `-ImplicitCastExpr 0x38859f0 <col:40> 'class TClass *const *' <LValueToRValue>
|       |   |   `-MemberExpr 0x38859b8 <col:40> 'class TClass *const *const' lvalue ->fClassPtr 0x2b0d840
|       |   |     `-CXXThisExpr 0x38859a0 <col:40> 'const class TClassRef *' this
|       |   `-ImplicitCastExpr 0x3885988 <col:53, col:54> '_Bool' <PointerToBoolean>
|       |     `-ImplicitCastExpr 0x3885970 <col:53, col:54> 'class TClass *' <LValueToRValue>
|       |       `-UnaryOperator 0x3885950 <col:53, col:54> 'class TClass *const' lvalue prefix '*'
|       |         `-ImplicitCastExpr 0x3885938 <col:54> 'class TClass *const *' <LValueToRValue>
|       |           `-MemberExpr 0x3885900 <col:54> 'class TClass *const *const' lvalue ->fClassPtr 0x2b0d840
|       |             `-CXXThisExpr 0x38858e8 <col:54> 'const class TClassRef *' this
|       |-ImplicitCastExpr 0x38858d0 <col:67, col:68> 'class TClass *' <LValueToRValue>
|       | `-UnaryOperator 0x38858b0 <col:67, col:68> 'class TClass *const' lvalue prefix '*'
|       |   `-ImplicitCastExpr 0x3885898 <col:68> 'class TClass *const *' <LValueToRValue>
|       |     `-MemberExpr 0x3885860 <col:68> 'class TClass *const *const' lvalue ->fClassPtr 0x2b0d840
|       |       `-CXXThisExpr 0x3885848 <col:68> 'const class TClassRef *' this
|       `-CXXMemberCallExpr 0x3885820 <col:80, col:97> 'class TClass *'
|         `-MemberExpr 0x38857e8 <col:80> '<bound member function type>' ->InternalGetClass 0x2b2f230
|           `-CXXThisExpr 0x38857d0 <col:80> 'const class TClassRef *' this
|-CXXMethodDecl 0x2b2ff28 <line:71:4, col:34> col:9 imported used Reset 'void (void)'
| `-CompoundStmt 0x3885b80 <col:17, col:34>
|   `-BinaryOperator 0x3885b58 <col:19, col:31> 'class TClass *const *' lvalue '='
|     |-MemberExpr 0x3885b20 <col:19> 'class TClass *const *' lvalue ->fClassPtr 0x2b0d840
|     | `-CXXThisExpr 0x3885b08 <col:19> 'class TClassRef *' this
|     `-ImplicitCastExpr 0x3885af0 <col:31> 'class TClass *const *' <NullToPointer>
|       `-IntegerLiteral 0x3885ad0 <col:31> 'int' 0
|-CXXMethodDecl 0x2b2ffe8 <line:73:4, col:101> col:12 imported used operator-> 'class TClass *(void) const'
| `-CompoundStmt 0x3885e80 <col:31, col:101>
|   `-ReturnStmt 0x3885e68 <col:33, col:98>
|     `-ConditionalOperator 0x3885e38 <col:40, col:98> 'class TClass *'
|       |-ParenExpr 0x3885e18 <col:40, col:64> '_Bool'
|       | `-BinaryOperator 0x3885df0 <col:41, col:55> '_Bool' '&&'
|       |   |-ImplicitCastExpr 0x3885dd8 <col:41> '_Bool' <PointerToBoolean>
|       |   | `-ImplicitCastExpr 0x3885dc0 <col:41> 'class TClass *const *' <LValueToRValue>
|       |   |   `-MemberExpr 0x3885d88 <col:41> 'class TClass *const *const' lvalue ->fClassPtr 0x2b0d840
|       |   |     `-CXXThisExpr 0x3885d70 <col:41> 'const class TClassRef *' this
|       |   `-ImplicitCastExpr 0x3885d58 <col:54, col:55> '_Bool' <PointerToBoolean>
|       |     `-ImplicitCastExpr 0x3885d40 <col:54, col:55> 'class TClass *' <LValueToRValue>
|       |       `-UnaryOperator 0x3885d20 <col:54, col:55> 'class TClass *const' lvalue prefix '*'
|       |         `-ImplicitCastExpr 0x3885d08 <col:55> 'class TClass *const *' <LValueToRValue>
|       |           `-MemberExpr 0x3885cd0 <col:55> 'class TClass *const *const' lvalue ->fClassPtr 0x2b0d840
|       |             `-CXXThisExpr 0x3885cb8 <col:55> 'const class TClassRef *' this
|       |-ImplicitCastExpr 0x3885ca0 <col:68, col:69> 'class TClass *' <LValueToRValue>
|       | `-UnaryOperator 0x3885c80 <col:68, col:69> 'class TClass *const' lvalue prefix '*'
|       |   `-ImplicitCastExpr 0x3885c68 <col:69> 'class TClass *const *' <LValueToRValue>
|       |     `-MemberExpr 0x3885c30 <col:69> 'class TClass *const *const' lvalue ->fClassPtr 0x2b0d840
|       |       `-CXXThisExpr 0x3885c18 <col:69> 'const class TClassRef *' this
|       `-CXXMemberCallExpr 0x3885bf0 <col:81, col:98> 'class TClass *'
|         `-MemberExpr 0x3885bb8 <col:81> '<bound member function type>' ->InternalGetClass 0x2b2f230
|           `-CXXThisExpr 0x3885ba0 <col:81> 'const class TClassRef *' this
|-CXXConversionDecl 0x2b300a8 <line:74:4, col:99> col:4 imported used operator TClass * 'class TClass *(void) const'
| `-CompoundStmt 0x3886180 <col:29, col:99>
|   `-ReturnStmt 0x3886168 <col:31, col:96>
|     `-ConditionalOperator 0x3886138 <col:38, col:96> 'class TClass *'
|       |-ParenExpr 0x3886118 <col:38, col:63> '_Bool'
|       | `-BinaryOperator 0x38860f0 <col:39, col:53> '_Bool' '&&'
|       |   |-ImplicitCastExpr 0x38860d8 <col:39> '_Bool' <PointerToBoolean>
|       |   | `-ImplicitCastExpr 0x38860c0 <col:39> 'class TClass *const *' <LValueToRValue>
|       |   |   `-MemberExpr 0x3886088 <col:39> 'class TClass *const *const' lvalue ->fClassPtr 0x2b0d840
|       |   |     `-CXXThisExpr 0x3886070 <col:39> 'const class TClassRef *' this
|       |   `-ImplicitCastExpr 0x3886058 <col:52, col:53> '_Bool' <PointerToBoolean>
|       |     `-ImplicitCastExpr 0x3886040 <col:52, col:53> 'class TClass *' <LValueToRValue>
|       |       `-UnaryOperator 0x3886020 <col:52, col:53> 'class TClass *const' lvalue prefix '*'
|       |         `-ImplicitCastExpr 0x3886008 <col:53> 'class TClass *const *' <LValueToRValue>
|       |           `-MemberExpr 0x3885fd0 <col:53> 'class TClass *const *const' lvalue ->fClassPtr 0x2b0d840
|       |             `-CXXThisExpr 0x3885fb8 <col:53> 'const class TClassRef *' this
|       |-ImplicitCastExpr 0x3885fa0 <col:66, col:67> 'class TClass *' <LValueToRValue>
|       | `-UnaryOperator 0x3885f80 <col:66, col:67> 'class TClass *const' lvalue prefix '*'
|       |   `-ImplicitCastExpr 0x3885f68 <col:67> 'class TClass *const *' <LValueToRValue>
|       |     `-MemberExpr 0x3885f30 <col:67> 'class TClass *const *const' lvalue ->fClassPtr 0x2b0d840
|       |       `-CXXThisExpr 0x3885f18 <col:67> 'const class TClassRef *' this
|       `-CXXMemberCallExpr 0x3885ef0 <col:79, col:96> 'class TClass *'
|         `-MemberExpr 0x3885eb8 <col:79> '<bound member function type>' ->InternalGetClass 0x2b2f230
|           `-CXXThisExpr 0x3885ea0 <col:79> 'const class TClassRef *' this
|-FieldDecl 0x2b0d728 <line:31:4, col:18> col:18 imported referenced fClassName 'std::string':'class std::__cxx11::basic_string<char>'
| `-AnnotateAttr 0x2b0d770 <col:31, col:55> R"ATTRDUMP(Name of referenced class)ATTRDUMP"
`-FieldDecl 0x2b0d840 <line:35:4, col:18> col:18 imported referenced fClassPtr 'class TClass *const *'
  `-AnnotateAttr 0x2b0d888 <col:31, col:74> R"ATTRDUMP(! Ptr to the permanent TClass ptr/reference)ATTRDUMP"