I have developed a new class to be used by ROOT. Nothing special here, especially given it’s not the first time I’ve done this, except this time for some reason rootcint dies when I try to process my header file. I’ve tried this with two ROOT versions (IA32 architecture): 5.14.00g encounters a segmentation fault, 5.18.00a does not but the output source file is truncated shortly after the beginning.
The problem appears both when my header file is the only argument to rootcint and when it’s used with other files. Using the option -v4 doesn’t yield any more information.
Attached you will find the header file which causes the problem.
T49MagneticField.h (1.41 KB)
it works fro me on the head of the trunk, both on Linux 32 and 64 bit. I don’t have access to a an IA32 box. Could you post how you invoke rootcint?
I just played with your example on my 5.18.00 install.
If I invoke rootcint as:
rootcint -f T49MagneticField.cxx -c -p T49MagneticField.hh
I get a segfault. If I comment out this line:
vector< vector< vector< T49MagneticFieldMapPoint > > > mapPoints;
rootcint runs to completion just fine for me. I played around with some LinkDef.h magic, but that didn’t seem to help either.
I forgot to mention the operating system I use, it’s Linux - as a matter of fact, for quite a lot of you it may be more simple if I just say that I’ve developed this code on lxPlus (both 32-bit and 64-bit nodes) and tried to build it against a 32-bit version of ROOT.
I invoke rootcint as
rootcint -f T49MagneticFieldDict.C -c -I $ROOTSYS/include T49MagneticField.h
you need to remove the space between the -I and the path. With that it still works for me. v5.18.00a also works for me, v5.18.00 doesn’t. So we have most probably fixed it since v5.18.00. Please upgrade your ROOT version to at least v5.18.00a, or take the latest development release.
Turns out the truncation of the dictionary file was caused by that space you’ve asked me to remove and with it deleted, 5.18.00a works fine indeed. Thanks!