Errors: no dictionary for class TCutG, no StreamerInfo

Let me just show you the errors:

Warning in <TClass::TClass>: no dictionary for class TCutG is available
Error in <TBufferFile::ReadClassBuffer>: Could not find the StreamerInfo for version 4 of the class TNamed, object skipped at offset 56
Error in <TBufferFile::CheckByteCount>: object of class TNamed read too few bytes: 2 instead of 511
Error in <TBufferFile::ReadObject>: object tag too large, I/O buffer corrupted
Error in <TBufferFile::CheckByteCount>: object of class TGraph read too many bytes: 539 instead of 519
Warning in <TBufferFile::CheckByteCount>: TGraph::Streamer() not in sync with data on file ./d_cuts_dd.root, fix Streamer()
Error in <TBufferFile::ReadClassBuffer>: Could not find the StreamerInfo for version 4 of the class TNamed, object skipped at offset 56
Error in <TBufferFile::CheckByteCount>: object of class TNamed read too few bytes: 2 instead of 543
Error in <TBufferFile::CheckByteCount>: object of class TGraph read too many bytes: 571 instead of 551
Warning in <TBufferFile::CheckByteCount>: TGraph::Streamer() not in sync with data on file ./d_cuts_dd.root, fix Streamer()
Error in <TBufferFile::ReadClassBuffer>: Could not find the StreamerInfo for version 4 of the class TNamed, object skipped at offset 56
Error in <TBufferFile::CheckByteCount>: object of class TNamed read too few bytes: 2 instead of 527
Error in <TBufferFile::ReadClassBuffer>: class: TAttFill, attempting to access a wrong version: 14500, object skipped at offset 585
Error in <TBufferFile::ReadClassBuffer>: class: TAttMarker, attempting to access a wrong version: 3180, object skipped at offset 591
Error in <TBufferFile::CheckByteCount>: object of class TAttMarker read too few bytes: 2 instead of 859098357
Error in <TBufferFile::CheckByteCount>: Byte count probably corrupted around buffer position 585:
	859098357 for a possible maximum of -8
Error in <TBufferFile::ReadObject>: object tag too large, I/O buffer corrupted
Error in <TBufferFile::CheckByteCount>: object of class TGraph read too many bytes: 555 instead of 535
Warning in <TBufferFile::CheckByteCount>: TGraph::Streamer() not in sync with data on file ./d_cuts_dd.root, fix Streamer()

I am trying to load two root file (each contains about 120 TCuts). The software works fine on OpenSUSE, but this errors show up in the Ubuntu 12.04. The root versions are the same on both the machines. Also tried to use different versions of root but no luck.

Any help please ?
Gunn

Hi,

could you provide the rootfile, the version of root and your configuration line?

Cheers,
Danilo

Hi,

Attached is the root file which I used. I also attached the macro (in .C) which was used to produce this root file.
The root version I used was:
Version 5.34/09

Gunn
d_cuts_dd.C (114 KB)
d_cuts_dd.root (66 KB)

Hi,

I am having a hard time in reproducing your issue.
I cloned ROOT, moved to 5.34.09, configured and built.
Then

sb_release -a; root -b -q d_cuts_dd.root 

on my machine gives:

No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 12.04.4 LTS
Release:	12.04
Codename:	precise
  *******************************************
  *                                         *
  *        W E L C O M E  to  R O O T       *
  *                                         *
  *   Version   5.34/09      26 June 2013   *
  *                                         *
  *  You are welcome to visit our Web site  *
  *          http://root.cern.ch            *
  *                                         *
  *******************************************

ROOT 5.34/09 (v5-34-09@v5-34-09, Apr 04 2014, 09:55:03 on linuxx8664gcc)

CINT/ROOT C/C++ Interpreter version 5.18.00, July 2, 2010
Type ? for help. Commands must be C++ statements.
Enclose multiple statements between { }.
root [0] 
Attaching file d_cuts_dd.root as _file0...

Even the access to the single objects in the file is fine. Do you have in hands a fresh install of root?

Sorry for delay, I was away.

Yes I am also able to access this root files using any version installed on my Ubuntu. The problem comes when using the code. If you want I simply provide you the code (a bit large size), you may compile it after taking it on ubuntu and run, if you agree I will provide you ssh -x access or share via DROPBOX or whatever. The same try on other Linux (in my case OpenSUSE). It will give this error in ubuntu and not elsewhere.

best
Gunn

Hi,

Can you provide a short standalone reproducer? I think this is the only viable way.

Danilo

Okay, give me a bit time, I will try to do small reproducer code. Although I am not so much familiar with programing, so I don’t guarantee you. But I will also write you a PM with SSH access to a temporary account, and there you may try.

best
G

I sent you a personal message (PM) here. Have checked it ? if not, please do it.

thx
G

Hi,

This problem was caused by the ROOT auto-loading mechanism not being enabled. Adding a TApplication to the main solved the problem.

Cheers,
Philippe.

Hi ROOTERS,

I am very new for this discussion, but Phillipe I am also facing the same problem with Ubuntu 14.04, so can you please elaborate the way how to use of TApplication in main.

Cheers…

The simplest way: #include "TApplication.h" // ... int main(int argc, char *argv[]) { TApplication *a = new TApplication("a", 0, 0); // ... return 0; }

Thanx for your soon reply Coyote.

I tried with this by including “TApplication.h” in the beginning of the main program, actually I am using TProfile class in my function definition, should I use TAplication instead of TProfile.

Thanx

A “TProfile” is a “profile histogram”.
A “TApplication” is a “ROOT Application Environment”.
Search for both names in the “ROOT Primer (5.34)” and the “ROOT User’s Guide (5.34)”.