Hi Stefan,

A Dimarts 17 Abril 2007 00:11, Stefan Kuzminski escrigué:
> The user reported another file with this problem, but this manifestation
> raises the following stack trace. ( which is better than a core dump, I
> suppose.. )
>
> HDF5-DIAG: Error detected in HDF5 library version: 1.6.5 thread 0.  Back
> trace foll\ ows.
>   #000: H5Dio.c line 499 in H5Dread(): can't read data
>     major(15): Dataset interface
>     minor(24): Read failed
>   #001: H5Dio.c line 756 in H5D_read(): can't read data
>     major(15): Dataset interface
>     minor(24): Read failed
>   #002: H5Dio.c line 1786 in H5D_chunk_read(): data type conversion failed
>     major(15): Dataset interface
>     minor(29): Unable to initialize object
>   #003: H5T.c line 4392 in H5T_convert(): data type conversion failed
>     major(18): Attribute layer
>     minor(50): Unable to encode value
>   #004: H5Tconv.c line 2482 in H5T_conv_vlen(): incorrect length
>     major(01): Function arguments
>     minor(03): Inappropriate type
> Traceback (most recent call last):
>   File "zz.py", line 9, in ?
>     print fp.root._meta_.load.read()
>   File "/home/srk/lib/python2.4/site-packages/tables/vlarray.py", line 578,
> in read listarr = self._readArray(start, stop, step)
>   File "hdf5Extension.pyx", line 1202, in hdf5Extension.VLArray._readArray
> tables.exceptions.HDF5ExtError: VLArray._readArray: Problems reading the
> array data\ .

Mmmm, this looks like an HDF5 bug or that the file is corrupted (although this 
last thing is not probable because it seems that you can consistently 
generate files that reproduce the problem).

I've tried with both HDF5 1.6.5 (which consistently causes a segfault) and a 
recent version of HDF5 1.8 series (1.8.0-of20070404) which is a bit more 
explicit:

HDF5-DIAG: Error detected in HDF5 (1.8.0-of20070404) thread 0:
  #000: H5Dio.c line 526 in H5Dread(): can't read data
    major: Dataset
    minor: Read failed
  #001: H5Dio.c line 744 in H5D_read(): can't read data
    major: Dataset
    minor: Read failed
  #002: H5Dio.c line 1708 in H5D_chunk_read(): data type conversion failed
    major: Dataset
    minor: Unable to initialize object
  #003: H5T.c line 4612 in H5T_convert(): data type conversion failed
    major: Attribute
    minor: Unable to encode value
  #004: H5Tconv.c line 2855 in H5T_conv_vlen(): can't read VL data
    major: Datatype
    minor: Read failed
  #005: H5Tvlen.c line 835 in H5T_vlen_disk_read(): Unable to read VL 
information
    major: Datatype
    minor: Read failed
  #006: H5HG.c line 1111 in H5HG_read(): unable to load heap
    major: Heap
    minor: Unable to load metadata into cache
  #007: H5AC.c line 1935 in H5AC_protect(): H5C_protect() failed.
    major: Object cache
    minor: Unable to protect metadata
  #008: H5C.c line 5476 in H5C_protect(): can't load entry
    major: Object cache
    minor: Unable to load metadata into cache
  #009: H5C.c line 9401 in H5C_load_entry(): unable to load entry
    major: Object cache
    minor: Unable to load metadata into cache
  #010: H5HG.c line 350 in H5HG_load(): unable to read global heap collection
    major: Heap
    minor: Read failed
  #011: H5F.c line 2986 in H5F_block_read(): file read failed
    major: Low-level I/O
    minor: Read failed
  #012: H5FD.c line 3348 in H5FD_read(): driver read request failed
    major: Virtual File Layer
    minor: Read failed
  #013: H5FDsec2.c line 725 in H5FD_sec2_read(): addr overflow
    major: Invalid arguments to routine
    minor: Address overflowed

The last error in the HDF5 stack seems to suggest that there is a problem on 
the HDF5 side in reading the file.

The offending dataset is '/_meta_/variables' (a VLString).  Stefan, are you 
able to generate a simple HDF5 file with preferably only this dataset that 
can reproduce the problem? If so, can you send me the PyTables code, please? 
If you can't, I'll send the file this to the HDF5 crew so as to see if they 
can throw more light on this.

As an aside, here is what the h5ls tool (from the HDF5 1.8.0-of20070404 
version) is saying about it:

$ h5ls -rv TRANSACTIONS248.h5/_meta_/variables
Opened "TRANSACTIONS248.h5" with sec2 driver.
/_meta_/variables        Dataset {1/Inf}
    Attribute: FLAVOR    scalar
        Type:      7-byte null-terminated ASCII string
        Data:  "Object"
    Attribute: CLASS     scalar
        Type:      8-byte null-terminated ASCII string
        Data:  "VLARRAY"
    Attribute: TITLE     scalar
        Type:      1-byte null-terminated ASCII string
        Data:  ""
    Attribute: VERSION   scalar
        Type:      4-byte null-terminated ASCII string
        Data:  "1.2"
    Location:  1:2781094
    Links:     1
    Modified:  2007-04-13 00:43:43 CEST
    Chunks:    {1024} 8192 bytes
    Storage:   8 logical bytes, 16384 allocated bytes, 0.05% utilization
    Type:      variable length of
                   native unsigned char

which seems fine. But when trying to read the content:

$ h5ls -rd TRANSACTIONS248.h5/_meta_/variables
/_meta_/variables        Dataset {1/Inf}
    Data:
        Unable to print data.

However, using h5ls from HDF5 1.6.5 gives the segfault:

$ h5ls -rd TRANSACTIONS248.h5/_meta_/variables
/_meta_/variables        Dataset {1/Inf}
    Data:
Segmentation fault

Please try to see if you find a simple way of reproducing a broken file and 
tell me about your findings.

Thanks,

-- 
>0,0<   Francesc Altet     http://www.carabos.com/
V   V   Cárabos Coop. V.   Enjoy Data
 "-"

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Pytables-users mailing list
Pytables-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/pytables-users

Reply via email to