Re: [ROOT] eventlist problem

From: Rene Brun (Rene.Brun@cern.ch)
Date: Tue Dec 12 2000 - 08:06:56 MET


Hi Jiri,
Thanks for reporting this problem in teh development version. Now fixed.

Rene Brun

Jiri Masik wrote:
> 
> Hello,
> 
> I can't read TEventLists written prior to 2.26 with the current
> version of root. Please have a look at the following example
> 
>   *   Version   2.26/00  11 December 2000   *
> 
> root [0] TFile f(".list/dat99_data-0-0-0-187pb_2jD.list")
> TKey Reading 122 bytes at address 7131
> root [1] .ls
> TFile**         .list/dat99_data-0-0-0-187pb_2jD.list
>  TFile*         .list/dat99_data-0-0-0-187pb_2jD.list
>   KEY: TEventList       l2jD;1  l2jD
> root [2] TEventList *l = (TEventList *)gROOT->FindObject("l2jD");
> TKey Reading 6927 bytes at address 204
> Creating StreamerInfo for class: TNamed, version: 1
> 
> StreamerInfo for class: TNamed, version=1
>   BASE          TObject         offset=  0 type=66 Basic ROOT object
>   TString       fName           offset= 12 type=65 object identifier
>   TString       fTitle          offset= 20 type=65 object title
>    i= 0, TObject         type= 66, offset=  0, len=1, method=0
>    i= 1, fName           type= 65, offset= 12, len=1, method=265386232
>    i= 2, fTitle          type= 65, offset= 20, len=1, method=265386412
> StreamerInfo, class:TNamed, name=TObject, fType[0]=66, TStreamerBase, bufpos=57
> StreamerInfo, class:TNamed, name=fName, fType[1]=65, TStreamerString, bufpos=67
> StreamerInfo, class:TNamed, name=fTitle, fType[2]=65, TStreamerString, bufpos=118
>  ReadBuffer for class: TNamed has read 0 bytes
> 
> OBJ: TEventList jDl2jD
> R__v:1
> fN:118947840
> fSize:119078912
> Fatal in <operator new>: storage exhausted
> aborting
> 
> and aborting at fList = new Int_t[fSize];  in TEventList::Streamer
> 
>       //====process old versions before automatic schema evolution
>       b.ReadVersion(&R__s, &R__c);
>       TNamed::Streamer(b);
>       TNamed::Print();
> 
>       b >> fN;
>       b >> fSize;
>       b >> fDelta;
>       cout << "R__v:" << R__v << endl;
>       cout << "fN:" << fN << endl;
>       cout << "fSize:" << fSize << endl;
> 
>       if (fN) {
>          fList = new Int_t[fSize];
>          b.ReadFastArray(fList,fN);
>       }
> 
> The data read from the file seem to be misinterpreted before b>> fN;
> already.
> 
> I'm running root on Debian/ppc and ia32 with the same result.
> libc6-2.2 and gcc-2.95.2
> 
> The file can be found at
> http://darbujan.fzu.cz/~masik/dat99_data-0-0-0-187pb_2jD.list
> and seems to be ok in 2.25-03
> 
> Thanks in advance for your help.
> 
>         Jiri



This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:39 MET