[ROOT] Consequences of basket read errors

From: Gene Van Buren (gene@bnl.gov)
Date: Sat Apr 06 2002 - 02:30:47 MEST


Hi, I wanted to find out if anyone knows the consequences
of the following error when reading a TTree from a file:

Error in <TBranchElement::GetBasket>: File: someFile.root at byte:0, 
branch:myBranch.myElement, entry:3304

This error is produced at line 600 of TBranch.cxx in Root
version 3.03/03. I used the debugger to find that the error
comes from a problem with reading in a record header.
The failure to read the record header causes the TBasket
used to have zero for the record size (nbytes) and seekkey,
but produces no other errors.

I am guessing that the error occurs because of a corruption
to the actual file on disk. Is this a valid assumption, and if
not, how would one be sure?

What happens subsequently is that ROOT keeps on
running (getting a few of these errors in a row, but only
a few and then they stop). Because most of that TTree
"entry" or "event" still seems to read in OK, the number
of bytes returned for reading in looks reasonable, and
I have no way other than this error message to know
that something went wrong.

But. as ROOT continues from this point in the TTree file
onwards, _something_ has definitely gone wrong. I don't
  _see_ anything obviously wrong in the data that is being
read in by from a casual glance. However, the size of my
ROOT executable starts a dramatic upwards climb until
it crashes from exhausting memory after a short while.
(memory usage appears completely stable before this
error).

So, I'm wondering if there's a way I can "catch" problems
like this and stop my processes from bogging down the
computer until the ROOT process crashes. And I'm
also wondering if there's a way to determine if the
problem is definitely with a corruption to the file (without
trying to re-create the file).

Thanks,

-Gene Van Buren



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:48 MET