Bug#1131282: io4dolfinx: instability in test_read_write_attributes[adios2-comm0]
Drew Parsons
dparsons at debian.org
Thu Mar 19 17:11:25 GMT 2026
Source: io4dolfinx
Version: 1.1.2-6
Severity: normal
Control: forwarded -1 https://github.com/scientificcomputing/io4dolfinx/issues/31
There is some kind of instability in test_attributes.py::test_read_write_attributes,
at least when running tests with MPI.
Test logs can be found at https://ci.debian.net/packages/i/io4dolfinx/
e.g. for amd64 https://ci.debian.net/packages/i/io4dolfinx/unstable/amd64/
debian version 1.1.2-6 ought to be passing, but
test_read_write_attributes[adios2-comm0] is failing MPI tests during
setting, with the error message
https://ci.debian.net/data/autopkgtest/unstable/amd64/i/io4dolfinx/69606892/log.gz
2260s =================================== FAILURES ===================================
2260s ___________________ test_read_write_attributes[adios2-comm0] ___________________
2260s
2260s comm = <mpi4py.MPI.Intracomm object at 0x7f3336912af0>, backend = 'adios2'
2260s tmp_path = PosixPath('/tmp/autopkgtest-lxc.blx2i9jg/downtmp/autopkgtest_tmp/io4dolfinx_mpi_py3.13/test_read_write_attributes_adi0')
2260s
2260s @pytest.mark.parametrize("comm", [MPI.COMM_SELF, MPI.COMM_WORLD])
2260s def test_read_write_attributes(comm, backend, tmp_path):
2260s if backend == "adios2":
2260s import adios2
2260s
2260s if _v(np.__version__) >= _v("2.0.0") and _v(adios2.__version__) < _v("2.10.2"):
2260s pytest.skip(reason="Cannot use numpy>=2.0.0 and adios2<2.10.2")
2260s
2260s attributes1 = {
2260s "a": np.array([1, 2, 3], dtype=np.uint8),
2260s "b": np.array([4, 5], dtype=np.uint8),
2260s }
2260s attributes2 = {
2260s "c": np.array([6], dtype=np.uint8),
2260s "d": np.array([7, 8, 9, 10], dtype=np.float64),
2260s }
2260s fname = comm.bcast(tmp_path, root=0)
2260s fname = fname / "attributes"
2260s suffix = ".bp" if backend == "adios2" else ".h5"
2260s file = fname.with_suffix(suffix)
2260s # print(comm.size)
2260s
2260s io4dolfinx.write_attributes(
2260s comm=comm, filename=file, name="group1", attributes=attributes1, backend=backend
2260s )
2260s io4dolfinx.write_attributes(
2260s comm=comm, filename=file, name="group2", attributes=attributes2, backend=backend
2260s )
2260s > loaded_attributes1 = io4dolfinx.read_attributes(
2260s comm=comm, filename=file, name="group1", backend=backend
2260s )
2260s
2260s tests/test_attributes.py:38:
2260s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2260s /usr/lib/python3/dist-packages/io4dolfinx/checkpointing.py:97: in read_attributes
2260s return backend_cls.read_attributes(filename, comm, name, backend_args)
2260s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2260s /usr/lib/python3/dist-packages/io4dolfinx/backends/adios2/backend.py:106: in read_attributes
2260s with ADIOSFile(
2260s /usr/lib/python3.13/contextlib.py:141: in __enter__
2260s return next(self.gen)
2260s ^^^^^^^^^^^^^^
2260s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2260s
2260s adios = <adios2.bindings.adios2_bindings_mpi.ADIOS object at 0x7f3319612db0>
2260s filename = PosixPath('/tmp/autopkgtest-lxc.blx2i9jg/downtmp/autopkgtest_tmp/io4dolfinx_mpi_py3.13/test_read_write_attributes_adi0/attributes.bp')
2260s engine = 'BP4', mode = <Mode.Read: 2>, io_name = 'AttributesReader', comm = None
2260s
2260s @contextmanager
2260s def ADIOSFile(
2260s adios: adios2.ADIOS,
2260s filename: Path | str,
2260s engine: str,
2260s mode: adios2.Mode,
2260s io_name: str,
2260s comm: MPI.Intracomm | None = None,
2260s ):
2260s io = adios.DeclareIO(io_name)
2260s io.SetEngine(engine)
2260s # ADIOS2 sometimes struggles with existing files/folders it should overwrite
2260s if mode == adios2.Mode.Write:
2260s filename = Path(filename)
2260s if filename.exists() and comm is not None and comm.rank == 0:
2260s if filename.is_dir():
2260s shutil.rmtree(filename)
2260s else:
2260s filename.unlink()
2260s if comm is not None:
2260s comm.Barrier()
2260s
2260s > file = io.Open(str(filename), mode)
2260s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2260s E RuntimeError: �[1;36m[Wed Mar 18 20:21:54 2026]�[1;34m [ADIOS2 EXCEPTION]�[0m <Engine> <BP4Reader> <OpenFiles> : File /tmp/autopkgtest-lxc.blx2i9jg/downtmp/autopkgtest_tmp/io4dolfinx_mpi_py3.13/test_read_write_attributes_adi0/attributes.bp could not be found within the 0.000000s timeout: errno=2: �[1;36m[Wed Mar 18 20:21:54 2026]�[1;34m [ADIOS2 EXCEPTION]�[0m <Toolkit> <transport::file::FilePOSIX> <CheckFile> : couldn't open file /tmp/autopkgtest-lxc.blx2i9jg/downtmp/autopkgtest_tmp/io4dolfinx_mpi_py3.13/test_read_write_attributes_adi0/attributes.bp/md.idx, in call to POSIX open: errno = 2: No such file or directory�[0m
2260s E : iostream error�[0m
2260s E : iostream error
2260s
2260s /usr/lib/python3/dist-packages/io4dolfinx/backends/adios2/helpers.py:78: RuntimeError
2260s =========================== short test summary info ============================
2260s FAILED tests/test_attributes.py::test_read_write_attributes[adios2-comm0] - RuntimeError: �[1;36m[Wed Mar 18 20:21:54 2026]�[1;34m [ADIOS2 EXCEPTION]�[0m <Engine> <BP4Reader> <OpenFiles> : File /tmp/autopkgtest-lxc.blx2i9jg/downtmp/autopkgtest_tmp/io4dolfinx_mpi_py3.13/test_read_write_attributes_adi0/attributes.bp could not be found within the 0.000000s timeout: errno=2: �[1;36m[Wed Mar 18 20:21:54 2026]�[1;34m [ADIOS2 EXCEPTION]�[0m <Toolkit> <transport::file::FilePOSIX> <CheckFile> : couldn't open file /tmp/autopkgtest-lxc.blx2i9jg/downtmp/autopkgtest_tmp/io4dolfinx_mpi_py3.13/test_read_write_attributes_adi0/attributes.bp/md.idx, in call to POSIX open: errno = 2: No such file or directory�[0m
2260s ==== 1 failed, 1985 passed, 372 skipped, 1 deselected in 779.15s (0:12:59) =====
2260s
2260s
2260s ==================================== ERRORS ====================================
2260s __________ ERROR at setup of test_read_write_attributes[adios2-comm0] __________
2260s
2260s self = PosixPath('/tmp/autopkgtest-lxc.blx2i9jg/downtmp/autopkgtest_tmp/io4dolfinx_mpi_py3.13')
2260s mode = 448, parents = False, exist_ok = False
2260s
2260s def mkdir(self, mode=0o777, parents=False, exist_ok=False):
2260s """
2260s Create a new directory at this given path.
2260s """
2260s try:
2260s > os.mkdir(self, mode)
2260s E FileExistsError: [Errno 17] File exists: '/tmp/autopkgtest-lxc.blx2i9jg/downtmp/autopkgtest_tmp/io4dolfinx_mpi_py3.13'
2260s
2260s /usr/lib/python3.13/pathlib/_local.py:724: FileExistsError
The attributes error is not fully reproducible. Sometimes it does not fail,
https://ci.debian.net/data/autopkgtest/testing/amd64/i/io4dolfinx/69604417/log.gz
But it has been seen across many architectures, amd64, arm64, riscv64, s390x (with h5py, not adios2)
Reported upstream
https://github.com/scientificcomputing/io4dolfinx/issues/31
More information about the debian-science-maintainers
mailing list