HDFGroup / HDFGroup/hdf5

h5dump fails to parse HDF5 path names containing certain ASCII characters

Open
#2,682 16 comments 0 reactions 1 assignee Assigned to @jhendersonHDF View on GitHub
Component - Tools
Dominant language
C
Stars
988
Forks
355
Avg merge
4d 2h
Merged PRs (30d)
12

Description

```
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.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.