I cannot use my ROOT-based analysis on my laptop due to a buffer overflow in rootcint (see below). However, it works in other environments (SLC5 64 bit and Debian 64 bit).
You could try rootcint -f VBFStudyDict.cxx -c VBFStudyGUI.h VBFStudy.h NTupleChain.h EventCutset.h Plotset.h Utilities.h LinkDefFile.h You could also try to use the tool named ‘valgrind’ to pin-point the location of the error.
one of your class names is too long, probably because of a template with plenty of default parameters. You can track down which one it is by only passing one header after another. You can then send us output.txt from g++ -E HeaderThatCausesIt.h -I$ROOTSYS/include > output.txt so we can figure out which type is causing it.
VBFStudy.cxx:6:23: error: Riostream.h: No such file or directory
VBFStudy.cxx:7:19: error: TROOT.h: No such file or directory
VBFStudy.cxx:8:19: error: TMath.h: No such file or directory
VBFStudy.cxx:9:25: error: TClassTable.h: No such file or directory
VBFStudy.cxx:10:18: error: TH1F.h: No such file or directory
VBFStudy.cxx:11:18: error: TH2F.h: No such file or directory
VBFStudy.cxx:12:31: error: TGraphAsymmErrors.h: No such file or directory
VBFStudy.cxx:13:20: error: TGaxis.h: No such file or directory
VBFStudy.cxx:14:17: error: TF1.h: No such file or directory
VBFStudy.cxx:15:21: error: TLegend.h: No such file or directory
VBFStudy.cxx:16:19: error: TFile.h: No such file or directory
VBFStudy.cxx:17:21: error: TCanvas.h: No such file or directory
VBFStudy.cxx:18:20: error: TStyle.h: No such file or directory
VBFStudy.cxx:19:21: error: TSystem.h: No such file or directory
VBFStudy.cxx:20:20: error: TChain.h: No such file or directory
VBFStudy.cxx:21:26: error: TApplication.h: No such file or directory
In file included from VBFStudy.h:24,
from VBFStudy.cxx:25:
NTupleChain.h:15:17: error: TH1.h: No such file or directory
NTupleChain.h:16:17: error: TH2.h: No such file or directory
NTupleChain.h:17:17: error: TH3.h: No such file or directory
In file included from VBFStudy.h:25,
from VBFStudy.cxx:25:
Plotset.h:14:18: error: TH1D.h: No such file or directory
Plotset.h:15:18: error: TH2D.h: No such file or directory
Plotset.h:16:18: error: TH3D.h: No such file or directory
Plotset.h:26:22: error: TGString.h: No such file or directory
In file included from Plotset.h:27,
from VBFStudy.h:25,
from VBFStudy.cxx:25:
EventCutset.h:17:22: error: TFormula.h: No such file or directory
In file included from VBFStudy.cxx:25:
VBFStudy.h:26:22: error: TGClient.h: No such file or directory
VBFStudy.h:27:22: error: TGButton.h: No such file or directory
VBFStudy.h:28:21: error: TGFrame.h: No such file or directory
VBFStudy.h:29:33: error: TRootEmbeddedCanvas.h: No such file or directory
VBFStudy.h:30:23: error: RQ_OBJECT.h: No such file or directory
In file included from VBFStudy.h:32,
from VBFStudy.cxx:25:
VBFStudyGUI.h:15:21: error: TRandom.h: No such file or directory
VBFStudyGUI.h:19:20: error: TGMenu.h: No such file or directory
VBFStudyGUI.h:20:22: error: TQObject.h: No such file or directory
VBFStudyGUI.h:25:24: error: TPaveStats.h: No such file or directory
VBFStudyGUI.h:27:25: error: TPostScript.h: No such file or directory
VBFStudy.cxx:26:21: error: TThread.h: No such file or directory
line[/code]
output.txt is attached.
Translations: “eingebaut” -> inserted
“Kommandozeile” -> command
unfortunately it looks like my guess where wrong
Try again with-I$ROOTSYS/lib/root/cint/include -I$ROOTSYS/lib/root/cint/lib -I$ROOTSYS/lib/root/cint/stl
#ifdef __CINT__
#pragma link off all globals;
#pragma link off all classes;
#pragma link off all functions;
#pragma link C++ class Utilities+;
#pragma link C++ class VBFStudy+;
#pragma link C++ class VBFStudyGUI+;
#pragma link C++ class NTupleChain+;
#pragma link C++ class EventCutset+;
#pragma link C++ class Plotset+;
#pragma link C++ class Optionset+;
#endif
(I am not yet managing to reproduce the error … i.e. the dictionary is created just fine from me ). So can you try:valgrind rootcint -f VBFStudyDict.cxx -c VBFStudyGUI.h VBFStudy.h NTupleChain.h EventCutset.h Plotset.h Utilities.h LinkDefFile.h
Well, it also works okay for me on an SLC5 system. But life would be easier if it also worked on my laptop. Please find below the valgrind output.
valgrind rootcint -f VBFStudyDict.cxx -c VBFStudyGUI.h VBFStudy.h NTupleChain.h EventCutset.h Plotset.h Utilities.h LinkDefFile.h
==20030== Memcheck, a memory error detector.
==20030== Copyright (C) 2002-2007, and GNU GPL'd, by Julian Seward et al.
==20030== Using LibVEX rev 1854, a library for dynamic binary translation.
==20030== Copyright (C) 2004-2007, and GNU GPL'd, by OpenWorks LLP.
==20030== Using valgrind-3.3.1-Debian, a dynamic binary instrumentation framework.
==20030== Copyright (C) 2000-2007, and GNU GPL'd, by Julian Seward et al.
==20030== For more details, rerun with: -v
==20030==
**20030** *** strcpy_chk: buffer overflow detected ***: program terminated
==20030== at 0x4C281B3: VALGRIND_PRINTF_BACKTRACE (valgrind.h:3695)
==20030== by 0x4C28361: __strcpy_chk (mc_replace_strmem.c:614)
==20030== by 0x4EB3953: Cint::G__ClassInfo::TmpltName() (in /products/root_522/lib/root/libCint.so.5.22)
==20030== by 0x427F7C: ROOT::RStl::DropDefaultArg(std::string const&) (in /products/root_522/bin/rootcint)
==20030== by 0x41EF4F: WriteBodyShowMembers(Cint::G__ClassInfo&, bool) (in /products/root_522/bin/rootcint)
==20030== by 0x41F657: WriteShowMembers(Cint::G__ClassInfo&, bool) (in /products/root_522/bin/rootcint)
==20030== by 0x41FE99: WriteClassCode(Cint::G__ClassInfo&, bool) (in /products/root_522/bin/rootcint)
==20030== by 0x42638E: main (in /products/root_522/bin/rootcint)
==20030==
==20030== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 425 from 3)
==20030== malloc/free: in use at exit: 7,447,816 bytes in 102,144 blocks.
==20030== malloc/free: 224,306 allocs, 122,162 frees, 25,656,579 bytes allocated.
==20030== For counts of detected errors, rerun with: -v
==20030== searching for pointers to 102,144 not-freed blocks.
==20030== checked 15,515,592 bytes.
==20030==
==20030== LEAK SUMMARY:
==20030== definitely lost: 832 bytes in 52 blocks.
==20030== possibly lost: 39,404 bytes in 565 blocks.
==20030== still reachable: 7,407,580 bytes in 101,527 blocks.
==20030== suppressed: 0 bytes in 0 blocks.
==20030== Rerun with --leak-check=full to see details of leaked memory.
The problem is most likely the triple!!! nested map:map<unsigned int,map<string,map<unsigned int,short> > *>When CINT explicits the 3rd and 4th argument of the maps, the total size name is more than 512 characters!
To solve the problem you need to #define G__LONGBUF
in G__ci.h (and recompile root).