[ROOT] Fwd: [re Error in <TKey::Create>]
From: Mariusz Stanczak (mstanczak@usa.net)
Date: Wed Jul 05 2000 - 23:37:54 MEST
____________________________________________________________________
Get free email and a permanent address at http://www.amexmail.com/?A=1
attached mail follows:
Hello Rene,
On Tue, 27 Jun 2000 15:23:53 +0000, Rene Brun wrote:
>The message:
>Error in <TKey::Create>: Cannot allocate 2439835 bytes for ID = pfile.root
>is generated when Root cannot find enough space in the list of free blocks
>in the file. I do not understand how this can happen if your file is
>only 400 Mbytes.
I have come accross it, but this is a new one.. the message is displayed from
somwhere within TFile->Delete("name;*"). Unfortunatelly I still use the
precompiled binaries, i.e. without debugging info so I couldn't step into it
to give you more information, but this is what I got: the exception happens in
LIBCORE.DLL @ 0x1000d767.
>Could you send me the output of the following root session, if possible
>executing these statements just before the error appears:
>
> - first open the file in "Update" mode.
> - before it crashes, do:
> file->GetListOfFree()->Dump();
>where file is the TFile*
Enclosed please find the free list dump I made right before the offending
line was executed... raw printout is quite large, so I zipped it.
>
>Rene
/Mariusz
P.S. I appologise for this exchange of notes being so fragmented... I have
lost the ability to send e-mail to you and to the root mailing list because
cern.ch domain blacklist (bans) every single (three) mail server I have
presently access to, so I'm forced to use Web interface. I wish something
could be done. Authentication... hey there's an idea. Would it be possible
that you could relay my plea to your admins?
>
>Mariusz Stanczak wrote:
>>
>> Hello Rene,
>>
>> >Without more information (number of keys, total size..), my guess is that
>> >you are reaching the maximum file size limit of 2 GBytes.
>> Sorry I forgot to mention it... the file size is slightly over 400MB
(so
>> that's not it). It contains about 35,000 TObjArray's the largest of which
>> holds upwards of 4000 objects. Here is the file header dump of the last
good
>> before failure file (the update would attempt to add a single object to
each
>> of the TObjArray's and it fails somwhere in the middle of the run).
>> ---
>> fD 5 File descriptor
>> fBEGIN 64 First used byte in file
>> fEND 419809775 Last used byte in file
>> fVersion 22402 File format version
>> fCompress 1 (=1 file is compressed, 0 otherwise)
>> fOption.*fData READ
>> fUnits 4 Number of bytes for file pointers
>> fSeekFree 316042152 Location on disk of free segments
>> structure
>> fNbytesFree 115025 Number of bytes for free segments
>> structure
>> fWritten 0 Number of objects written so far
>> fSumBuffer 0 Sum of buffer sizes of objects written
so
>> far
>> fSum2Buffer 0 Sum of squares of buffer sizes of
objects
>> written so far
>> *fFree ->0 Free segments linked list table
>> fBytesWrite 0 Number of bytes written to this file
>> fBytesRead 2.43992e+006Number of bytes read from this file
>> fModified 1 true if directory has been modified
>> fWritable 0 true if directory is writable
>> fDatimeC.fDatime 20000508/143131
>> fDatimeM.fDatime 20000624/173839
>> fNbytesKeys 2439680 Number of bytes for the keys
>> fNbytesName 58 Number of bytes in TNamed at creation
>> time
>> fSeekDir 64 Location of directory on file
>> fSeekParent 0 Location of parent directory on file
>> fSeekKeys 415730344 Location of Keys record on file
>> *fFile ->1013568 pointer to current file in memory
>> *fMother ->0 pointer to mother of the directory
>> *fList ->1013640 Pointer to objects list in memory
>> *fKeys ->1013858 Pointer to keys list in memory
>> fName.*fData pfile.root
>> fTitle.*fData
>> fUniqueID 0 object unique identifier
>> fBits 50331649 bit field status word
>> ---
>>
>> >What you describe seems to be an obvious candidate for TTree
>> >instead of writing individual objecst as TKeys.
>> Allow me to address your suggestion in a separate e-mail.
>>
>> >
>> >Rene Brun
>>
>> Thank you,
>>
>> /Mariusz
>>
>> On 25 Jun 2000, Mariusz Stanczak wrote:
>>
>> > Dear All,
>> > I have lots of small objects (48 bytes/object) that I write to a
root file.
>>
>> > I use TObjArray and to avoid the overhead of keys (42 bytes/key) I write
>> the
>> > array with kSingleKey option. Each array is a separate observation
>> sequence
>> > containing at the moment upwards of ~4000 objects.
>> > All was well, but now I seem to have hit against some hard coded
limits...
>> > when trying to add a new object I get the following error(s):
>> > ---
>> > Error in <TKey::Create>: Cannot allocate 2439835 bytes for ID =
pfile.root
>> > Title =
>> > Error in <TKey::Create>: Cannot allocate 2439800 bytes for ID =
pfile.root
>> > Title =
>> > ...
>> > ---
>> > I do not think it matters in this case, but this is on Win2K with
2.24/05.
>> I
>> > also tried the new version 2.25/00 and got:
>> > ---
>> > Error in <TKey::Create>: Cannot allocate 2439835 bytes for ID =
pfile.root
>> > Title =
>> > Error in <TKey::Create>: Cannot allocate 2439835 bytes for ID =
pfile.root
>> > Title =
>> > ---
>> > after which the program aborted with a segmentation violation (2.24/05
>> > continued on but the resulting file was corrupted, which became evident
on
>> the
>> > next update run).
>> >
>> > What could I do?
>> >
>> > Thanks,
>> >
>> > /Mariusz
____________________________________________________________________
Get free email and a permanent address at http://www.amexmail.com/?A=1
This archive was generated by hypermail 2b29
: Tue Jan 02 2001 - 11:50:29 MET