From 694ee0a0909e7a6f06464128583b05aa1dabc2f1 Mon Sep 17 00:00:00 2001 From: osobh Date: Sun, 27 Sep 2026 23:39:41 -0500 Subject: [PATCH] docs: conformance report after the last non-ok files were classified (602 of 697 ok) Regenerated on tank: ok 600 -> 602 (attr_datatypes.hdf5 and tcomplex_be.h5, compared against h5py's big-endian VL values corrected), mismatch 2 -> 0; cve-2025-2308.h5 and cve-2025-44904.h5 are ref-bug (h5py's values varied across six heaps in this run); bad_nbit_parms_walk.h5 read the same in all six this run, so it stays our-error, as the classification rule requires. Baseline raised. Co-Authored-By: Claude Opus 5.5 (1M context) --- CONFORMANCE.md | 24 ++++++++++++++---------- conformance/baseline.json | 22 +++++++++++----------- 2 files changed, 25 insertions(+), 21 deletions(-) diff --git a/CONFORMANCE.md b/CONFORMANCE.md index a900e17..d5d4219 100644 --- a/CONFORMANCE.md +++ b/CONFORMANCE.md @@ -13,15 +13,15 @@ fatal. This file is generated by `conformance/run.sh`; do not edit it by hand. | | | |---|---| -| date | 2026-09-28 03:33 UTC | -| clawhdf5 commit | `ff0b2f8a4e4ef105d7ff4694349ca475abf3f611` | +| date | 2026-09-28 04:29 UTC | +| clawhdf5 commit | `bf5a163dcf7fe28d651ada6545d8136ffeffc825` | | machine | `tank`: AMD Ryzen 7 7800X3D 8-Core Processor, 16 CPUs, 61 GiB, Linux 7.0.0-34-generic x86_64 | -| command | `conformance/run.sh --no-fetch` | -| rustc | | +| command | `conformance/run.sh --no-fetch --update-baseline` | +| rustc | rustc 1.98.1 (48a229cea 2026-09-01) | | reference | h5py 3.16.0, HDF5 2.0.0, numpy 2.5.3, hdf5plugin 7.1.0, Python 3.14.4 | | h5dump | Version 1.14.6 (CVE corpus only) | | limits | 20 s timeout (SIGKILL), 4096 MiB address space, per process; 16 files in parallel | -| runtime | 21 s probing + comparing (18 s fetch/build before it) | +| runtime | 20 s probing + comparing (5 s fetch/build before it) | ## Results @@ -39,14 +39,14 @@ A file's class is the first that applies: | NCAS-CMS_pyfive | 33 | 33 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | | cve_hdf5 | 147 | 113 | 0 | 0 | 32 | 2 | 0 | 0 | 0 | 0 | | h5py_data | 4 | 4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -| hdf5 | 466 | 405 | 0 | 0 | 60 | 1 | 0 | 0 | 0 | 0 | +| hdf5 | 466 | 405 | 1 | 0 | 60 | 0 | 0 | 0 | 0 | 0 | | netcdf-c | 20 | 20 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | | netcdf4-python | 18 | 18 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | | usnistgov_h5wasm | 5 | 5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | | xarray-data | 4 | 4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -| **all** | **697** | **602** | **0** | **0** | **92** | **3** | **0** | **0** | **0** | **0** | +| **all** | **697** | **602** | **1** | **0** | **92** | **2** | **0** | **0** | **0** | **0** | -**Our errors and mismatches: 0.** Files not ok: 92 h5py-cannot-read, 3 ref-bug. 2 object(s) were compared against h5py's values corrected for a known h5py bug (2 identical to clawhdf5's; see *Reference bugs*). +**Our errors and mismatches: 1.** Files not ok: 1 our-error, 92 h5py-cannot-read, 2 ref-bug. 2 object(s) were compared against h5py's values corrected for a known h5py bug (2 identical to clawhdf5's; see *Reference bugs*). Corpora (fetched by `conformance/fetch-corpus.sh` into the gitignored `conformance/.cache/`): @@ -67,7 +67,11 @@ None. ## Our-error root causes -None. +Grouped by normalised error message. *files* counts files whose class this cause affects. + +| files | objects | error | examples | +|---:|---:|---|---| +| 1 | 1 | `ChunkedReadError("…")` | `hdf5/test/testfiles/bad_nbit_parms_walk.h5` | ## Mismatch root causes @@ -257,7 +261,7 @@ the same run; an object that reads the same every time goes back to *our-error*. |---|---|---:|---|---| | `cve_hdf5/cvefiles/cve-2025-2308.h5` | `/Scale_offset_long_long_data_le` | 6 | yes | the first chunk records minbits 11: its 12 values need 17 bytes of codes, and the 26-byte chunk holds 5 after its 21-byte header; libhdf5's scale-offset decoder reads past its buffer, and develop refuses the chunk ("Buffer too short") | | `cve_hdf5/cvefiles/cve-2025-44904.h5` | `/Scale_offset_float_data_le` | 6 | yes | unfiltered chunks stored as 38 and 37 bytes for 48-byte chunks: 1.14/2.0 read the stored bytes into a buffer of that size and use it as the whole chunk (H5D__chunk_lock), so the rest is heap memory; develop refuses them ("incorrect chunk size returned from index for unfiltered chunk") | -| `hdf5/test/testfiles/bad_nbit_parms_walk.h5` | `/Nbit_int_data_le` | 3 | yes | the N-Bit parameter list holds 7 values (cd_values[0] = 7) where an integer needs 8: the decoder takes the bit offset from cd_values[7], past the list; libhdf5's own test (`test_filter_bad_params`, test/dsets.c on develop) requires the read to fail | +| `hdf5/test/testfiles/bad_nbit_parms_walk.h5` | `/Nbit_int_data_le` | 1 | **no** | the N-Bit parameter list holds 7 values (cd_values[0] = 7) where an integer needs 8: the decoder takes the bit offset from cd_values[7], past the list; libhdf5's own test (`test_filter_bad_params`, test/dsets.c on develop) requires the read to fail | ### Values corrected for a known h5py bug diff --git a/conformance/baseline.json b/conformance/baseline.json index 0db7eb3..4ed5e2b 100644 --- a/conformance/baseline.json +++ b/conformance/baseline.json @@ -1,33 +1,31 @@ { "comment": "conformance/run.sh fails if the ok count drops below `ok` or a file in `ok_files` stops being ok. Regenerate with `conformance/run.sh --update-baseline` after an intended change.", - "commit": "f37e7ae3263277319dba4bc39be5397194eb00c3", - "date": "2026-09-27 00:34 UTC", + "commit": "bf5a163dcf7fe28d651ada6545d8136ffeffc825", + "date": "2026-09-28 04:29 UTC", "reference": "h5py 3.16.0 / HDF5 2.0.0", "files": 697, - "ok": 600, + "ok": 602, "counts": { "h5py-cannot-read": 92, - "mismatch": 2, - "ok": 600, - "our-error": 3 + "ok": 602, + "our-error": 1, + "ref-bug": 2 }, "per_corpus": { "NCAS-CMS_pyfive": { - "mismatch": 1, - "ok": 32 + "ok": 33 }, "cve_hdf5": { "h5py-cannot-read": 32, "ok": 113, - "our-error": 2 + "ref-bug": 2 }, "h5py_data": { "ok": 4 }, "hdf5": { "h5py-cannot-read": 60, - "mismatch": 1, - "ok": 404, + "ok": 405, "our-error": 1 }, "netcdf-c": { @@ -45,6 +43,7 @@ }, "ok_files": [ "NCAS-CMS_pyfive/tests/compact.hdf5", + "NCAS-CMS_pyfive/tests/data/attr_datatypes.hdf5", "NCAS-CMS_pyfive/tests/data/btreev2.hdf5", "NCAS-CMS_pyfive/tests/data/chunked.hdf5", "NCAS-CMS_pyfive/tests/data/cmip_bad_eg.nc", @@ -455,6 +454,7 @@ "hdf5/tools/test/testfiles/tcmpdints.h5", "hdf5/tools/test/testfiles/tcmpdintsize.h5", "hdf5/tools/test/testfiles/tcomplex.h5", + "hdf5/tools/test/testfiles/tcomplex_be.h5", "hdf5/tools/test/testfiles/tcompound.h5", "hdf5/tools/test/testfiles/tcompound_complex.h5", "hdf5/tools/test/testfiles/tcompound_complex2.h5",