Skip to content

h5dump fails to parse HDF5 path names containing certain ASCII characters #2682

Open
@gheber

Description

@gheber
h5dump --enable-error-stack --dataset="/ic_antennas/antenna[]&name" ic_antennas.h5

fails with the following error stack:

HDF5-DIAG: Error detected in HDF5 (1.15.0) thread 0:
  #000: H5D.c line 402 in H5Dopen2(): unable to synchronously open dataset
    major: Dataset
    minor: Can't open object
  #001: H5D.c line 363 in H5D__open_api_common(): unable to open dataset
    major: Dataset
    minor: Can't open object
  #002: H5VLcallback.c line 1980 in H5VL_dataset_open(): dataset open failed
    major: Virtual Object Layer
    minor: Can't open object
  #003: H5VLcallback.c line 1947 in H5VL__dataset_open(): dataset open failed
    major: Virtual Object Layer
    minor: Can't open object
  #004: H5VLnative_dataset.c line 319 in H5VL__native_dataset_open(): unable to open dataset
    major: Dataset
    minor: Can't open object
  #005: H5Dint.c line 1423 in H5D__open_name(): not found
    major: Dataset
    minor: Object not found
  #006: H5Gloc.c line 438 in H5G_loc_find(): can't find object
    major: Symbol table
    minor: Object not found
  #007: H5Gtraverse.c line 836 in H5G_traverse(): internal path traversal failed
    major: Symbol table
    minor: Object not found
  #008: H5Gtraverse.c line 613 in H5G__traverse_real(): traversal operator failed
    major: Symbol table
    minor: Callback failed
  #009: H5Gloc.c line 395 in H5G__loc_find_cb(): object 'antenna' doesn't exist
    major: Symbol table
    minor: Object not found
HDF5-DIAG: Error detected in HDF5 (1.15.0) thread 0:
  #000: H5L.c line 1337 in H5Lget_info2(): unable to get link info
    major: Links
    minor: Can't get value
  #001: H5VLcallback.c line 5414 in H5VL_link_get(): link get failed
    major: Virtual Object Layer
    minor: Can't get value
  #002: H5VLcallback.c line 5382 in H5VL__link_get(): link get failed
    major: Virtual Object Layer
    minor: Can't get value
  #003: H5VLnative_link.c line 263 in H5VL__native_link_get(): unable to get link info
    major: Links
    minor: Object not found
  #004: H5Lint.c line 1905 in H5L_get_info(): name doesn't exist
    major: Links
    minor: Object already exists
  #005: H5Gtraverse.c line 836 in H5G_traverse(): internal path traversal failed
    major: Symbol table
    minor: Object not found
  #006: H5Gtraverse.c line 613 in H5G__traverse_real(): traversal operator failed
    major: Symbol table
    minor: Callback failed
  #007: H5Lint.c line 1867 in H5L__get_info_cb(): name doesn't exist
    major: Links
    minor: Object not found
HDF5 "ic_antennas.h5" {h5dump error: unable to get link info from "/ic_antennas/antenna"

}

Notice the []& in the link name, which is legitimate. This is not a shell issue because the correct string is passed to the C program:

(gdb) p *argv@argc
$1 = {0x7fffffffe608 "/home/gerd/.local/bin/h5dump", 0x7fffffffe625 "-d", 
  0x7fffffffe628 "/ic_antennas/antenna[]&name", 0x7fffffffe644 "ic_antennas.h5"}

That means that the HDF5 path name is not correctly parsed.

Interestingly, other tools don't have this issue, e.g.,

gerd@deborah:~/work$ h5ls ic_antennas.h5/"ic_antennas/antenna[]&name"
antenna[]&name           Dataset {3/Inf}

Don't tools share the same pathname parser?

Ludovic Fleury of CEA reported this issue.

Metadata

Metadata

Assignees

Labels

Component - ToolsCommand-line tools like h5dump, includes high-level toolsConfirmedPriority - 1. HighThese are important issues that should be resolved in the next release

Type

Projects

Status

Backlog

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions