Hi Robert,
This problem was introduced in version 4 when I added support for schema
evolution for foreign classes (non-ROOT instrumented classes). In case an object
with a version 0 is found, we read the class checksum to find out automatically
the best TStreamerInfo version. However, the checksum should only be read
for foreign classes and not classes with version=0 and having a ClassDef.
The fix is now in CVS.
Rene Brun
Robert Hatcher wrote:
>
> Hi,
> I've got a problem with the new v4 I/O reading some particular
> classes we have. Specifically I've attempted this under v4-00-0{2|3},
> and not that it matters but FermiLinux {9.0|7.3}, gcc 3.{3|2}.1.
>
> The basic problem is that we had some classes, say, DataBlock1 and DataBlock2
> that derive from DataBlockBase and PureAbstractInterface. All classes
> are explicitly instrumented with ClassDef and listed in the LinkDef.h
> with a "+". DataBlockBase derives from TObject. But PureAbstractInterface
> does not and has ClassDef version=0; the PureAbstractInterface class
> doesn't have any data -- it is just interface. The problem is when
> reading back files written under v3-05-07 and v4-00-0{2|3} I get:
>
> $ root -b -q read_test.C
> [...]
> Error in <TBuffer::CheckByteCount>: object of class PureAbstractInterface read too many bytes: 6 instead of 2
> Warning in <TBuffer::CheckByteCount>: PureAbstractInterface::Streamer() not in sync with data on file, fix Streamer()
> Error in <TBuffer::CheckByteCount>: object of class PureAbstractInterface read too many bytes: 6 instead of 2
> Warning in <TBuffer::CheckByteCount>: PureAbstractInterface::Streamer() not in sync with data on file, fix Streamer()
> [...]
>
> The data seems to come back in okay, but these messages occur for every
> such object read in. How do I make them go away.
>
> Example code/scripts/files are in the attached tar file.
>
> Thanks,
> -robert
>
> Robert W. Hatcher | rhatcher@fnal.gov 630-840-3102
> FNAL CD/EXP (MINOS) | MS 220, PO Box 500, Batavia IL 60510
>
> --------------------------------------------------------------------------------
> Name: badio.tar.gz
> badio.tar.gz Type: Unix Tape Archive (application/x-tar)
> Encoding: BASE64
This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:06 MET