2026-06-09 09:12.31: New job: test ocaml-multicore/eio https://github.com/ocaml-multicore/eio.git#refs/heads/main (bd0ad09655affb1f459db81a16f8a4d640b7cb41) (linux-ppc64:debian-13-5.4_ppc64_opam-2.5)Base: ocaml/opam:debian-13-ocaml-5.4@sha256:e72a31a6247b03c00cdaffe88301eab53afb80cfe9d5b842204827887236bd61Opam project buildTo reproduce locally:git clone --recursive "https://github.com/ocaml-multicore/eio.git" -b "main" && cd "eio" && git reset --hard bd0ad096cat > Dockerfile <<'END-OF-DOCKERFILE'FROM ocaml/opam:debian-13-ocaml-5.4@sha256:e72a31a6247b03c00cdaffe88301eab53afb80cfe9d5b842204827887236bd61# debian-13-5.4_ppc64_opam-2.5USER 1000:1000ENV CLICOLOR_FORCE="1"ENV OPAMCOLOR="always"WORKDIR /srcRUN sudo ln -f /usr/bin/opam-2.5 /usr/bin/opamRUN cd ~/opam-repository && (git cat-file -e c98b21e24c088665ccae4c3b53eadadd3b755b15 || git fetch origin master) && git reset -q --hard c98b21e24c088665ccae4c3b53eadadd3b755b15 && git log --no-decorate -n1 --onelineRUN opam init --reinit -niRUN uname -rs && opam exec -- ocaml -version && opam --versionWORKDIR /srcRUN sudo chown opam /srcRUN opam update -uCOPY --chown=1000:1000 eio_windows.opam eio_posix.opam eio_main.opam eio_linux.opam eio.opam ./RUN opam pin add -yn eio_windows.dev './' && \opam pin add -yn eio_posix.dev './' && \opam pin add -yn eio_main.dev './' && \opam pin add -yn eio_linux.dev './' && \opam pin add -yn eio.dev './'RUN echo '(lang dune 3.0)' > './dune-project'ENV DEPS="afl-persistent.1.4 alcotest.1.9.1 astring.0.8.5 backoff.0.1.1 base-bigarray.base base-domains.base base-effects.base base-nnp.base base-threads.base base-unix.base bigstringaf.0.10.0 camlp-streams.5.0.1 cmdliner.2.1.1 conf-bash.1 containers.3.18 cppo.1.8.0 crowbar.0.2.2 csexp.1.5.2 cstruct.6.2.0 domain-local-await.1.0.1 domain-local-timeout.1.0.1 dscheck.0.5.0 dune.3.23.1 dune-configurator.3.23.1 either.1.0.0 fmt.0.11.0 hmap.0.8.1 iomux.0.4 kcas.0.7.0 lintcstubs-arity.0.5.2 logs.0.10.0 lwt-dllist.1.1.0 mdx.2.5.2 mtime.2.1.0 multicore-magic.2.3.2 ocaml.5.4.1 ocaml-base-compiler.5.4.1 ocaml-compiler.5.4.1 ocaml-config.3 ocaml-options-vanilla.1 ocaml-syntax-shims.1.0.0 ocaml-version.4.1.1 ocamlbuild.0.16.1 ocamlfind.1.9.8 optint.0.3.0 oseq.0.5.1 psq.0.2.1 re.1.14.0 result.1.5 seq.base stdlib-shims.0.3.0 thread-table.1.0.0 topkg.1.1.1 tsort.2.2.0 uring.2.14.0 uutf.1.0.4 yojson.3.0.0"ENV CI="true"ENV OCAMLCI="true"RUN opam update --depexts && opam install --cli=2.5 --depext-only -y eio_windows.dev eio_posix.dev eio_main.dev eio_linux.dev eio.dev $DEPSRUN opam install $DEPSCOPY --chown=1000:1000 . /srcRUN opam exec -- dune build @install @check @runtest && rm -rf _buildEND-OF-DOCKERFILEdocker build .END-REPRO-BLOCK2026-06-09 09:12.31: Using cache hint "ocaml-multicore/eio-ocaml/opam:debian-13-ocaml-5.4@sha256:e72a31a6247b03c00cdaffe88301eab53afb80cfe9d5b842204827887236bd61-debian-13-5.4_ppc64_opam-2.5-12c456a1f67161cdda644e9d789b7618"2026-06-09 09:12.31: Using OBuilder spec:((from ocaml/opam:debian-13-ocaml-5.4@sha256:e72a31a6247b03c00cdaffe88301eab53afb80cfe9d5b842204827887236bd61)(comment debian-13-5.4_ppc64_opam-2.5)(user (uid 1000) (gid 1000))(env CLICOLOR_FORCE 1)(env OPAMCOLOR always)(workdir /src)(run (shell "sudo ln -f /usr/bin/opam-2.5 /usr/bin/opam"))(run (cache (opam-archives (target /home/opam/.opam/download-cache)))(network host)(shell "cd ~/opam-repository && (git cat-file -e c98b21e24c088665ccae4c3b53eadadd3b755b15 || git fetch origin master) && git reset -q --hard c98b21e24c088665ccae4c3b53eadadd3b755b15 && git log --no-decorate -n1 --oneline"))(run (shell "opam init --reinit -ni"))(run (shell "uname -rs && opam exec -- ocaml -version && opam --version"))(workdir /src)(run (shell "sudo chown opam /src"))(run (cache (opam-archives (target /home/opam/.opam/download-cache)))(network host)(shell "opam update -u"))(copy (src eio_windows.opam eio_posix.opam eio_main.opam eio_linux.opam eio.opam)(dst ./))(run (network host)(shell "opam pin add -yn eio_windows.dev './' && \\nopam pin add -yn eio_posix.dev './' && \\nopam pin add -yn eio_main.dev './' && \\nopam pin add -yn eio_linux.dev './' && \\nopam pin add -yn eio.dev './'"))(run (shell "echo '(lang dune 3.0)' > './dune-project'"))(env DEPS "afl-persistent.1.4 alcotest.1.9.1 astring.0.8.5 backoff.0.1.1 base-bigarray.base base-domains.base base-effects.base base-nnp.base base-threads.base base-unix.base bigstringaf.0.10.0 camlp-streams.5.0.1 cmdliner.2.1.1 conf-bash.1 containers.3.18 cppo.1.8.0 crowbar.0.2.2 csexp.1.5.2 cstruct.6.2.0 domain-local-await.1.0.1 domain-local-timeout.1.0.1 dscheck.0.5.0 dune.3.23.1 dune-configurator.3.23.1 either.1.0.0 fmt.0.11.0 hmap.0.8.1 iomux.0.4 kcas.0.7.0 lintcstubs-arity.0.5.2 logs.0.10.0 lwt-dllist.1.1.0 mdx.2.5.2 mtime.2.1.0 multicore-magic.2.3.2 ocaml.5.4.1 ocaml-base-compiler.5.4.1 ocaml-compiler.5.4.1 ocaml-config.3 ocaml-options-vanilla.1 ocaml-syntax-shims.1.0.0 ocaml-version.4.1.1 ocamlbuild.0.16.1 ocamlfind.1.9.8 optint.0.3.0 oseq.0.5.1 psq.0.2.1 re.1.14.0 result.1.5 seq.base stdlib-shims.0.3.0 thread-table.1.0.0 topkg.1.1.1 tsort.2.2.0 uring.2.14.0 uutf.1.0.4 yojson.3.0.0")(env CI true)(env OCAMLCI true)(run (cache (opam-archives (target /home/opam/.opam/download-cache)))(network host)(shell "opam update --depexts && opam install --cli=2.5 --depext-only -y eio_windows.dev eio_posix.dev eio_main.dev eio_linux.dev eio.dev $DEPS"))(run (cache (opam-archives (target /home/opam/.opam/download-cache)))(network host)(shell "opam install $DEPS"))(copy (src .) (dst /src))(run (shell "opam exec -- dune build @install @check @runtest && rm -rf _build")))2026-06-09 09:12.31: Waiting for resource in pool OCluster2026-06-09 09:12.31: Waiting for worker…2026-06-09 09:12.31: Got resource from pool OClusterBuilding on scyleia.caelum.ci.devhint: Using 'master' as the name for the initial branch. This default branch namehint: will change to "main" in Git 3.0. To configure the initial branch namehint: to use in all of your new repositories, which will suppress this warning,hint: call:hint:hint: git config --global init.defaultBranch <name>hint:hint: Names commonly chosen instead of 'master' are 'main', 'trunk' andhint: 'development'. The just-created branch can be renamed via this command:hint:hint: git branch -m <name>hint:hint: Disable this message with "git config set advice.defaultBranchName false"Initialized empty Git repository in /var/cache/obuilder/ocluster/git/eio.git-2ac56b2ed1de05e0591ad64f831b4a4fd3ce42f2/.git/HEAD is now at bd0ad09 Merge pull request #849 from talex5/simplify-rw(from ocaml/opam:debian-13-ocaml-5.4@sha256:e72a31a6247b03c00cdaffe88301eab53afb80cfe9d5b842204827887236bd61)2026-06-09 09:12.33 ---> using "091802f641e43489888e795f557a1cae54c49b7ec9e137997252e3e6eba01965" from cache/: (comment debian-13-5.4_ppc64_opam-2.5)/: (user (uid 1000) (gid 1000))/: (env CLICOLOR_FORCE 1)/: (env OPAMCOLOR always)/: (workdir /src)/src: (run (shell "sudo ln -f /usr/bin/opam-2.5 /usr/bin/opam"))2026-06-09 09:12.33 ---> using "0ee279940b26dd10f348f43f792f93feb82f2fb33f7e66c55bc5a62156e66b97" from cache/src: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))(network host)(shell "cd ~/opam-repository && (git cat-file -e c98b21e24c088665ccae4c3b53eadadd3b755b15 || git fetch origin master) && git reset -q --hard c98b21e24c088665ccae4c3b53eadadd3b755b15 && git log --no-decorate -n1 --oneline"))From https://github.com/ocaml/opam-repository* branch master -> FETCH_HEADfc08333d1b..8e7cc3fd7b master -> origin/masterc98b21e24c Merge pull request #29993 from shonfeder/conditional-mdx-tests2026-06-09 09:12.33 ---> using "13a9d443c32297c749086da3f5672da2fe59f209abff55655ff6d218f85deead" from cache/src: (run (shell "opam init --reinit -ni"))Configuring from /home/opam/.opamrc and then from built-in defaults.Checking for available remotes: rsync and local, git.- you won't be able to use mercurial repositories unless you install the hg command on your system.- you won't be able to use darcs repositories unless you install the darcs command on your system.This version of opam requires an update to the layout of /home/opam/.opam from version 2.1 to version 2.2, which can't be reverted.You may want to back it up before going further.Continue? [Y/n] y[NOTE] The 'jobs' option was reset, its value was 1 and its new value will vary according to the current number of cores on your machine. You can restore the fixed value using:opam option jobs=1 --globalFormat upgrade done.<><> Updating repositories ><><><><><><><><><><><><><><><><><><><><><><><><><><>[default] synchronised from git+file:///home/opam/opam-repository2026-06-09 09:12.33 ---> using "6e0535fbec659006f6fde21902fd310b45455212e94648c7bbba909542b284b4" from cache/src: (run (shell "uname -rs && opam exec -- ocaml -version && opam --version"))Linux 7.0.0-22-genericThe OCaml toplevel, version 5.4.12.5.12026-06-09 09:12.33 ---> using "0c437a3e83fce9fac8d4ba7cd6f3282ad65071c083f20212e634cab81edfcf47" from cache/src: (workdir /src)/src: (run (shell "sudo chown opam /src"))2026-06-09 09:12.33 ---> using "23e278cdaa115f8e5a4757ff18b9c97db8e73dcd74c0cf6c5823342b289c674f" from cache/src: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))(network host)(shell "opam update -u"))<><> Updating package repositories ><><><><><><><><><><><><><><><><><><><><><><>[default] no changes from git+file:///home/opam/opam-repositoryEverything as up-to-date as possibleThe following packages are not being upgraded because the new versions conflict with other installed packages:- ocaml.5.5.0- ocaml-compiler.5.4.1+lrgrep-- ocaml-base-compiler.5.4.1 is installed and requires ocaml-compiler = 5.4.1However, you may "opam upgrade" these packages explicitly at these versions (e.g. "opam upgrade ocaml.5.5.0"), which will ask permission to downgrade or uninstall the conflicting packages.Nothing to do.# To update the current shell environment, run: eval $(opam env)2026-06-09 09:12.33 ---> using "d3212f1f1390faeb8423e07420ce14fa95036affcb6f6616cdcc8a1c311b1744" from cache/src: (copy (src eio_windows.opam eio_posix.opam eio_main.opam eio_linux.opam eio.opam)(dst ./))2026-06-09 09:12.33 ---> saved as "4f4088437ed469921da7644c5ef4964d3147a87a96968ba06e20fcdd235ecdbf"/src: (run (network host)(shell "opam pin add -yn eio_windows.dev './' && \\nopam pin add -yn eio_posix.dev './' && \\nopam pin add -yn eio_main.dev './' && \\nopam pin add -yn eio_linux.dev './' && \\nopam pin add -yn eio.dev './'"))[eio_windows.dev] synchronised (file:///src)eio_windows is now pinned to file:///src (version dev)[eio_posix.dev] synchronised (file:///src)eio_posix is now pinned to file:///src (version dev)[eio_main.dev] synchronised (file:///src)eio_main is now pinned to file:///src (version dev)[eio_linux.dev] synchronised (file:///src)eio_linux is now pinned to file:///src (version dev)[eio.dev] synchronised (file:///src)eio is now pinned to file:///src (version dev)2026-06-09 09:12.42 ---> saved as "e23a53fd2bcb4df693cd5ba939cb522738f381bf7d428d57cdb481c80e3a9dee"/src: (run (shell "echo '(lang dune 3.0)' > './dune-project'"))2026-06-09 09:12.42 ---> saved as "582a85af4d586a2649441ee0ca6186c7891d048916c7f05bf7133f6efe472081"/src: (env DEPS "afl-persistent.1.4 alcotest.1.9.1 astring.0.8.5 backoff.0.1.1 base-bigarray.base base-domains.base base-effects.base base-nnp.base base-threads.base base-unix.base bigstringaf.0.10.0 camlp-streams.5.0.1 cmdliner.2.1.1 conf-bash.1 containers.3.18 cppo.1.8.0 crowbar.0.2.2 csexp.1.5.2 cstruct.6.2.0 domain-local-await.1.0.1 domain-local-timeout.1.0.1 dscheck.0.5.0 dune.3.23.1 dune-configurator.3.23.1 either.1.0.0 fmt.0.11.0 hmap.0.8.1 iomux.0.4 kcas.0.7.0 lintcstubs-arity.0.5.2 logs.0.10.0 lwt-dllist.1.1.0 mdx.2.5.2 mtime.2.1.0 multicore-magic.2.3.2 ocaml.5.4.1 ocaml-base-compiler.5.4.1 ocaml-compiler.5.4.1 ocaml-config.3 ocaml-options-vanilla.1 ocaml-syntax-shims.1.0.0 ocaml-version.4.1.1 ocamlbuild.0.16.1 ocamlfind.1.9.8 optint.0.3.0 oseq.0.5.1 psq.0.2.1 re.1.14.0 result.1.5 seq.base stdlib-shims.0.3.0 thread-table.1.0.0 topkg.1.1.1 tsort.2.2.0 uring.2.14.0 uutf.1.0.4 yojson.3.0.0")/src: (env CI true)/src: (env OCAMLCI true)/src: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))(network host)(shell "opam update --depexts && opam install --cli=2.5 --depext-only -y eio_windows.dev eio_posix.dev eio_main.dev eio_linux.dev eio.dev $DEPS"))+ /usr/bin/sudo "apt-get" "update"- Get:1 http://deb.debian.org/debian trixie InRelease [140 kB]- Get:2 http://deb.debian.org/debian trixie-updates InRelease [47.3 kB]- Get:3 http://deb.debian.org/debian-security trixie-security InRelease [43.4 kB]- Get:4 http://deb.debian.org/debian trixie/main ppc64el Packages [9509 kB]- Get:5 http://deb.debian.org/debian-security trixie-security/main ppc64el Packages [201 kB]- Fetched 9940 kB in 2s (4916 kB/s)- Reading package lists...-<><> Synchronising pinned packages ><><><><><><><><><><><><><><><><><><><><><><>[eio.dev] synchronised (file:///src)[eio_linux.dev] synchronised (file:///src)[eio_main.dev] synchronised (file:///src)[eio_posix.dev] synchronised (file:///src)[eio_windows.dev] synchronised (file:///src)[NOTE] Package ocaml-options-vanilla is already installed (current version is 1).[NOTE] Package ocaml-config is already installed (current version is 3).[NOTE] Package ocaml-compiler is already installed (current version is 5.4.1).[NOTE] Package ocaml-base-compiler is already installed (current version is 5.4.1).[NOTE] Package ocaml is already installed (current version is 5.4.1).[NOTE] Package base-unix is already installed (current version is base).[NOTE] Package base-threads is already installed (current version is base).[NOTE] Package base-nnp is already installed (current version is base).[NOTE] Package base-effects is already installed (current version is base).[NOTE] Package base-domains is already installed (current version is base).[NOTE] Package base-bigarray is already installed (current version is base).# To update the current shell environment, run: eval $(opam env)2026-06-09 09:12.56 ---> saved as "85592b35fca7b01b1fb93e43763b26997e4cfa4db33f519dbd0d8551500e128f"/src: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))(network host)(shell "opam install $DEPS"))[NOTE] Package ocaml-options-vanilla is already installed (current version is 1).[NOTE] Package ocaml-config is already installed (current version is 3).[NOTE] Package ocaml-compiler is already installed (current version is 5.4.1).[NOTE] Package ocaml-base-compiler is already installed (current version is 5.4.1).[NOTE] Package ocaml is already installed (current version is 5.4.1).[NOTE] Package base-unix is already installed (current version is base).[NOTE] Package base-threads is already installed (current version is base).[NOTE] Package base-nnp is already installed (current version is base).[NOTE] Package base-effects is already installed (current version is base).[NOTE] Package base-domains is already installed (current version is base).[NOTE] Package base-bigarray is already installed (current version is base).The following actions will be performed:=== install 46 packages- install afl-persistent 1.4- install alcotest 1.9.1- install astring 0.8.5- install backoff 0.1.1- install bigstringaf 0.10.0- install camlp-streams 5.0.1- install cmdliner 2.1.1- install conf-bash 1- install containers 3.18- install cppo 1.8.0- install crowbar 0.2.2- install csexp 1.5.2- install cstruct 6.2.0- install domain-local-await 1.0.1- install domain-local-timeout 1.0.1- install dscheck 0.5.0- install dune 3.23.1- install dune-configurator 3.23.1- install either 1.0.0- install fmt 0.11.0- install hmap 0.8.1- install iomux 0.4- install kcas 0.7.0- install lintcstubs-arity 0.5.2- install logs 0.10.0- install lwt-dllist 1.1.0- install mdx 2.5.2- install mtime 2.1.0- install multicore-magic 2.3.2- install ocaml-syntax-shims 1.0.0- install ocaml-version 4.1.1- install ocamlbuild 0.16.1- install ocamlfind 1.9.8- install optint 0.3.0- install oseq 0.5.1- install psq 0.2.1- install re 1.14.0- install result 1.5- install seq base- install stdlib-shims 0.3.0- install thread-table 1.0.0- install topkg 1.1.1- install tsort 2.2.0- install uring 2.14.0- install uutf 1.0.4- install yojson 3.0.0<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>-> retrieved alcotest.1.9.1 (cached)-> retrieved astring.0.8.5 (cached)-> retrieved bigstringaf.0.10.0 (cached)-> retrieved camlp-streams.5.0.1 (cached)-> retrieved backoff.0.1.1 (https://opam.ocaml.org/cache)-> installed conf-bash.1-> retrieved cmdliner.2.1.1 (cached)-> retrieved afl-persistent.1.4 (https://opam.ocaml.org/cache)-> retrieved cppo.1.8.0 (cached)-> retrieved csexp.1.5.2 (cached)-> retrieved cstruct.6.2.0 (cached)-> retrieved domain-local-await.1.0.1 (cached)-> retrieved crowbar.0.2.2 (https://opam.ocaml.org/cache)-> retrieved domain-local-timeout.1.0.1 (https://opam.ocaml.org/cache)-> retrieved containers.3.18 (https://opam.ocaml.org/cache)-> retrieved dscheck.0.5.0 (https://opam.ocaml.org/cache)-> retrieved fmt.0.11.0 (cached)-> retrieved hmap.0.8.1 (cached)-> retrieved either.1.0.0 (https://opam.ocaml.org/cache)-> retrieved iomux.0.4 (cached)-> retrieved lintcstubs-arity.0.5.2 (https://opam.ocaml.org/cache)-> retrieved kcas.0.7.0 (https://opam.ocaml.org/cache)-> retrieved logs.0.10.0 (cached)-> retrieved lwt-dllist.1.1.0 (cached)-> retrieved mtime.2.1.0 (cached)-> retrieved mdx.2.5.2 (cached)-> retrieved ocaml-syntax-shims.1.0.0 (cached)-> retrieved ocaml-version.4.1.1 (cached)-> retrieved multicore-magic.2.3.2 (https://opam.ocaml.org/cache)-> retrieved ocamlbuild.0.16.1 (cached)-> retrieved ocamlfind.1.9.8 (cached)-> retrieved optint.0.3.0 (cached)-> retrieved psq.0.2.1 (cached)-> retrieved re.1.14.0 (cached)-> retrieved result.1.5 (cached)-> retrieved seq.base (cached)-> installed seq.base-> retrieved stdlib-shims.0.3.0 (cached)-> retrieved oseq.0.5.1 (https://opam.ocaml.org/cache)-> retrieved thread-table.1.0.0 (cached)-> retrieved topkg.1.1.1 (cached)-> retrieved dune.3.23.1, dune-configurator.3.23.1 (cached)-> retrieved uring.2.14.0 (cached)-> retrieved uutf.1.0.4 (cached)-> retrieved tsort.2.2.0 (https://opam.ocaml.org/cache)-> retrieved yojson.3.0.0 (cached)-> installed cmdliner.2.1.1-> installed ocamlbuild.0.16.1-> installed ocamlfind.1.9.8-> installed topkg.1.1.1-> installed hmap.0.8.1-> installed mtime.2.1.0-> installed fmt.0.11.0-> installed uutf.1.0.4-> installed astring.0.8.5-> installed logs.0.10.0-> installed dune.3.23.1-> installed afl-persistent.1.4-> installed lwt-dllist.1.1.0-> installed csexp.1.5.2-> installed backoff.0.1.1-> installed camlp-streams.5.0.1-> installed cppo.1.8.0-> installed cstruct.6.2.0-> installed either.1.0.0-> installed lintcstubs-arity.0.5.2-> installed multicore-magic.2.3.2-> installed ocaml-syntax-shims.1.0.0-> installed ocaml-version.4.1.1-> installed optint.0.3.0-> installed oseq.0.5.1-> installed psq.0.2.1-> installed re.1.14.0-> installed result.1.5-> installed stdlib-shims.0.3.0-> installed thread-table.1.0.0-> installed tsort.2.2.0-> installed yojson.3.0.0-> installed crowbar.0.2.2-> installed domain-local-timeout.1.0.1-> installed domain-local-await.1.0.1-> installed dune-configurator.3.23.1-> installed alcotest.1.9.1-> installed kcas.0.7.0-> installed bigstringaf.0.10.0-> installed iomux.0.4-> installed mdx.2.5.2-> installed containers.3.18-> installed uring.2.14.0-> installed dscheck.0.5.0Done.<><> afl-persistent.1.4 installed successfully ><><><><><><><><><><><><><><><><>=> afl-persistent is installed, but since the current OCaml compiler doesnot enable AFL instrumentation by default, most packages will not beinstrumented and fuzzing with afl-fuzz may not be effective.To globally enable AFL instrumentation, create an OCaml switch like:opam switch create 5.4.1+afl ocaml-variants.5.4.1+options ocaml-option-afl# To update the current shell environment, run: eval $(opam env)2026-06-09 09:13.56 ---> saved as "04513e0d533a5f7672112273cb826872a6693a26ecc8f0ff9ac86287661fd983"/src: (copy (src .) (dst /src))2026-06-09 09:13.59 ---> saved as "ace9dfd816438a17cfcf72014a5584d499d41b8aebc9477ed37f4fdd494da205"/src: (run (shell "opam exec -- dune build @install @check @runtest && rm -rf _build"))(cd _build/default/fuzz && ./fuzz_inherit_fds.exe)inherit_fds: PASS(cd _build/default/fuzz && ./fuzz_buf_read.exe)random ops: PASS(cd _build/default/fuzz && ./fuzz_buf_write.exe)random ops: PASS(cd _build/default/lib_eio_linux/tests && ./test.exe)Testing `eio_linux'.This run has ID `4J9RM9QQ'.[OK] io 0 copy.[OK] io 1 direct_copy.[OK] io 2 poll_add.[OK] io 3 poll_add_busy.[OK] io 4 iovec.[OK] io 5 no_sqe.[OK] io 6 read_exact.[OK] io 7 expose_backend.[OK] io 8 statx.[OK] io 9 signal_race.[OK] io 10 alloc-fixed-or-wait.Full test results in `/src/_build/default/lib_eio_linux/tests/_build/_tests/eio_linux'.Test Successful in 0.007s. 11 tests run.File "lib_eio_linux/tests/fd_sharing.md", line 1, characters 0-0:/usr/bin/git --no-pager diff --no-index --color=always -u _build/default/lib_eio_linux/tests/fd_sharing.md _build/default/lib_eio_linux/tests/.mdx/fd_sharing.md.correcteddiff --git a/_build/default/lib_eio_linux/tests/fd_sharing.md b/_build/default/lib_eio_linux/tests/.mdx/fd_sharing.md.correctedindex bf8230b..2c12233 100644--- a/_build/default/lib_eio_linux/tests/fd_sharing.md+++ b/_build/default/lib_eio_linux/tests/.mdx/fd_sharing.md.corrected@@ -51,11 +51,5 @@ One domain closes an FD after another domain has enqueued a uring operation ment(* Allow the read to complete. *)Eio.Flow.close w);;-+Domain 1 enqueuing read on FD-+Waiting for domain 0...-+Domain 0 closing FD-+Domain 0 closed FD; waking domain 1-+Domain 1 flushing queue-+Read EOF-- : unit = ()+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```File "tests/domains.md", line 1, characters 0-0:/usr/bin/git --no-pager diff --no-index --color=always -u _build/default/tests/domains.md _build/default/tests/.mdx/domains.md.correcteddiff --git a/_build/default/tests/domains.md b/_build/default/tests/.mdx/domains.md.correctedindex 886226d..7c9fae9 100644--- a/_build/default/tests/domains.md+++ b/_build/default/tests/.mdx/domains.md.corrected@@ -53,10 +53,7 @@ Here, we use a mutex to check that the parent domain really did run while waitintraceln "Other fibers can still run";Mutex.unlock mutex);;-+Spawning new domain...-+Other fibers can still run-+Got "Hello from new domain" from spawned domain-- : unit = ()+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```Cancelling another domain:@@ -165,8 +162,7 @@ Cancelling a release handler across domains:traceln "Cancelled: %b" cancelled;raise Exit);;-+Cancelled: true-Exception: Stdlib.Exit.+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```Can't fork into another domain:@@ -186,7 +182,7 @@ Can't fork into another domain:let sw = Promise.await p inFiber.fork ~sw ignore;);;-Exception: Invalid_argument "Switch accessed from wrong domain!".+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```# Fiber-local storage@@ -200,6 +196,5 @@ domains (as the values may not be thread-safe):Fiber.with_binding key 123 @@ fun () ->Eio.Domain_manager.run mgr @@ fun () ->traceln "Key => %a" Fmt.(option ~none:(const string "<unset>") int) (Fiber.get key);;-+Key => <unset>-- : unit = ()+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```File "lib_eio_linux/tests/spawn.md", line 1, characters 0-0:/usr/bin/git --no-pager diff --no-index --color=always -u _build/default/lib_eio_linux/tests/spawn.md _build/default/lib_eio_linux/tests/.mdx/spawn.md.correcteddiff --git a/_build/default/lib_eio_linux/tests/spawn.md b/_build/default/lib_eio_linux/tests/.mdx/spawn.md.correctedindex 8d45211..1e55424 100644--- a/_build/default/lib_eio_linux/tests/spawn.md+++ b/_build/default/lib_eio_linux/tests/.mdx/spawn.md.corrected@@ -37,8 +37,7 @@ Changing directory:~env:(Unix.environment ())] inPromise.await (Process.exit_status child);;-/-- : Unix.process_status = Unix.WEXITED 0+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```Changing directory using a file descriptor:@@ -61,8 +60,7 @@ Changing directory using a file descriptor:~env:(Unix.environment ())] inPromise.await (Process.exit_status child);;-/-- : Unix.process_status = Unix.WEXITED 0+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```Exit status:@@ -76,7 +74,7 @@ Exit status:~env:(Unix.environment ())] inPromise.await (Process.exit_status child);;-- : Unix.process_status = Unix.WEXITED 1+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```Failure starting child:File "tests/mutex.md", line 1, characters 0-0:/usr/bin/git --no-pager diff --no-index --color=always -u _build/default/tests/mutex.md _build/default/tests/.mdx/mutex.md.correcteddiff --git a/_build/default/tests/mutex.md b/_build/default/tests/.mdx/mutex.md.correctedindex 47021db..548068c 100644--- a/_build/default/tests/mutex.md+++ b/_build/default/tests/.mdx/mutex.md.corrected@@ -129,8 +129,7 @@ A failed critical section will poison the mutex:with Failure _ ->traceln "Trying to use the failed lock again fails:";M.lock t;;-+Trying to use the failed lock again fails:-Exception: Eio__Eio_mutex.Poisoned (Failure "Simulated error").+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```## Protection@@ -166,11 +165,7 @@ Or allow interruption and disable the mutex:with ex ->traceln "Trying to reuse the failed mutex...";M.use_ro t (fun () -> assert false);;-+Cancelling...-+Trying to reuse the failed mutex...-Exception:-Eio__Eio_mutex.Poisoned- (Eio__core__Exn.Cancelled (Failure "Simulated error")).+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```Protection doesn't prevent cancellation while we're still waiting for the lock, though:@@ -186,9 +181,7 @@ Protection doesn't prevent cancellation while we're still waiting for the lock,with Failure _ ->M.unlock t;M.use_ro t (fun () -> traceln "Can reuse the mutex");;-+Cancelling...-+Can reuse the mutex-- : unit = ()+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```Poisoning wakes any wakers:@@ -207,9 +200,7 @@ Poisoning wakes any wakers:with Failure _ -> ())(fun () -> traceln "Waiting for lock..."; M.use_ro t (fun () -> assert false));;-+Waiting for lock...-+Poisoning mutex-Exception: Eio__Eio_mutex.Poisoned (Failure "Simulated error").+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```@@ -248,9 +239,5 @@ If the resource isn't being mutated, we can just unlock on error:inFiber.both fn fn;M.use_ro t (fun () -> traceln "Lock still works");;-+Entered critical section-+Failed to get lock-+Leaving critical section-+Lock still works-- : unit = ()+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```File "tests/flow.md", line 1, characters 0-0:/usr/bin/git --no-pager diff --no-index --color=always -u _build/default/tests/flow.md _build/default/tests/.mdx/flow.md.correcteddiff --git a/_build/default/tests/flow.md b/_build/default/tests/.mdx/flow.md.correctedindex 02b4061..4415f62 100644--- a/_build/default/tests/flow.md+++ b/_build/default/tests/.mdx/flow.md.corrected@@ -61,11 +61,7 @@ Exception: End_of_file.let dst = Eio_mock.Flow.make "dst" inEio_mock.Flow.on_read src [`Return "foo"; `Return "bar"];Eio.Flow.copy src dst;;-+src: read "foo"-+dst: wrote "foo"-+src: read "bar"-+dst: wrote "bar"-- : unit = ()+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```Copying from a string src:@@ -103,9 +99,7 @@ Copying from src using `Read_source_buffer`:Eio_mock.Flow.set_copy_method dst `Read_source_buffer;Eio_mock.Flow.on_copy_bytes dst [`Return 3; `Return 5];Eio.Flow.copy src dst;;-+dst: wrote (rsb) ["foo"]-+dst: wrote (rsb) ["bar"]-- : unit = ()+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```## read_all@@ -118,10 +112,7 @@ Copying from src using `Read_source_buffer`:traceln "Input length: %d\nOutput length: %d\nEqual: %b"(Cstruct.lenv data) (String.length got) (String.equal got (Cstruct.copyv data));;;-+Input length: 10240-+Output length: 10240-+Equal: true-- : unit = ()+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```## write@@ -194,8 +185,7 @@ Sending a very long vector over a flow should just send it in chunks, not fail:traceln "Read %d bytes" (String.length got);assert (got = Cstruct.to_string (Cstruct.concat vecs)))-+Read 30000 bytes-- : unit = ()+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```## Starvation@@ -217,6 +207,5 @@ Even if a fiber is already ready to run, we still perform IO from time to time:(fun () ->Eio.Flow.write w [Cstruct.of_string "msg"])-+Got "msg"-- : unit = ()+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```File "tests/sync.md", line 1, characters 0-0:/usr/bin/git --no-pager diff --no-index --color=always -u _build/default/tests/sync.md _build/default/tests/.mdx/sync.md.correcteddiff --git a/_build/default/tests/sync.md b/_build/default/tests/.mdx/sync.md.correctedindex d37b90f..6c1e47c 100644--- a/_build/default/tests/sync.md+++ b/_build/default/tests/.mdx/sync.md.corrected@@ -33,11 +33,7 @@ Create a promise, fork a thread waiting for it, then fulfull it:Fiber.yield ();traceln "Thread after yield: %a" (pp_promise Fmt.string) thread;traceln "Final result: %s" (Promise.await_exn thread);;-+Initial state: unresolved-+After being fulfilled: fulfilled:ok-+Thread before yield: unresolved-+Thread after yield: fulfilled:ok-+Final result: ok+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```Create a promise, fork a thread waiting for it, then break it:File "tests/time.md", line 1, characters 0-0:/usr/bin/git --no-pager diff --no-index --color=always -u _build/default/tests/time.md _build/default/tests/.mdx/time.md.correcteddiff --git a/_build/default/tests/time.md b/_build/default/tests/.mdx/time.md.correctedindex 63884c6..4b02423 100644--- a/_build/default/tests/time.md+++ b/_build/default/tests/.mdx/time.md.corrected@@ -24,7 +24,7 @@ Check sleep works:Eio.Time.sleep clock 0.01;let t1 = Unix.gettimeofday () inassert (t1 -. t0 >= 0.01);;-- : unit = ()+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```Cancelling sleep:@@ -34,7 +34,7 @@ Cancelling sleep:Fiber.both(fun () -> Eio.Time.sleep clock 1200.; assert false)(fun () -> failwith "Simulated cancel");;-Exception: Failure "Simulated cancel".+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```Switch is already off:@@ -77,8 +77,7 @@ Check ordering works:traceln "Short timer finished";failwith "Simulated cancel");;-+Short timer finished-Exception: Failure "Simulated cancel".+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```Check Unix debug clock:File "tests/stream.md", line 1, characters 0-0:/usr/bin/git --no-pager diff --no-index --color=always -u _build/default/tests/stream.md _build/default/tests/.mdx/stream.md.correcteddiff --git a/_build/default/tests/stream.md b/_build/default/tests/.mdx/stream.md.correctedindex c5a035e..3438d0e 100644--- a/_build/default/tests/stream.md+++ b/_build/default/tests/.mdx/stream.md.corrected@@ -60,15 +60,7 @@ Readers have to wait when the stream is empty:Fiber.both(fun () -> take t; take t)(fun () -> add t 2);;-+Adding 1 to stream-+Added 1 to stream-+Reading from stream-+Got 1 from stream-+Reading from stream-+Adding 2 to stream-+Added 2 to stream-+Got 2 from stream-- : unit = ()+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```Writers have to wait when the stream is full:@@ -89,23 +81,7 @@ Writers have to wait when the stream is full:take t;take t);;-+Adding 1 to stream-+Added 1 to stream-+Adding 2 to stream-+Added 2 to stream-+Adding 3 to stream-+Added 3 to stream-+Adding 4 to stream-+Reading from stream-+Got 1 from stream-+Reading from stream-+Got 2 from stream-+Reading from stream-+Got 3 from stream-+Reading from stream-+Got 4 from stream-+Added 4 to stream-- : unit = ()+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```A zero-length queue is synchronous:@@ -171,17 +147,7 @@ Cancel writing to a stream:take t;add t 3;take t;;-+Adding 1 to stream-+Added 1 to stream-+Adding 2 to stream-+Cancelled-+Reading from stream-+Got 1 from stream-+Adding 3 to stream-+Added 3 to stream-+Reading from stream-+Got 3 from stream-- : unit = ()+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```Cancel writing to a zero-length stream:@@ -199,13 +165,7 @@ Cancel writing to a zero-length stream:Fiber.both(fun () -> add t 2)(fun () -> take t);;-+Adding 1 to stream-+Cancelled-+Adding 2 to stream-+Reading from stream-+Got 2 from stream-+Added 2 to stream-- : unit = ()+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```Trying to use a stream with a cancelled context:File "tests/process.md", line 1, characters 0-0:/usr/bin/git --no-pager diff --no-index --color=always -u _build/default/tests/process.md _build/default/tests/.mdx/process.md.correcteddiff --git a/_build/default/tests/process.md b/_build/default/tests/.mdx/process.md.correctedindex 3a8483c..614f290 100644--- a/_build/default/tests/process.md+++ b/_build/default/tests/.mdx/process.md.corrected@@ -83,8 +83,7 @@ Spawning subprocesses in new domains works normally:# run @@ fun mgr env ->Eio.Domain_manager.run env#domain_mgr @@ fun () ->Process.run mgr [ "echo"; "Hello from another domain" ];;-Hello from another domain-- : unit = ()+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```Calling `await_exit` multiple times on the same spawn just returns the status:@@ -106,7 +105,7 @@ Using a sink that is not backed by a file descriptor:let buf = Buffer.create 16 inEio.Process.run mgr ~stdout:(Flow.buffer_sink buf) [ "echo"; "Hello, world" ];Buffer.contents buf-- : string = "Hello, world\n"+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```Changing directory (unconfined):@@ -115,8 +114,7 @@ Changing directory (unconfined):# run @@ fun mgr env ->let root = env#fs / "/" inProcess.run mgr ~cwd:root [ "env"; "pwd" ];;-/-- : unit = ()+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```Changing directory (confined):@@ -129,8 +127,7 @@ Changing directory (confined):Eio.Path.with_open_dir subdir @@ fun subdir ->Eio.Path.save (subdir / "test-cwd") "test-data" ~create:(`Exclusive 0o600);Process.run mgr ~cwd:subdir [ "cat"; "test-cwd" ];;-test-data-- : unit = ()+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```Trying to access a path outside of the cwd:@@ -160,9 +157,7 @@ Exit code success can be determined by is_success (Process.run):# run @@ fun mgr env ->Process.run ~is_success:(Int.equal 3) mgr ["sh"; "-c"; "exit 0"];;-Exception:-Eio.Io Process Child_error Exited (code 0),- running command: sh -c "exit 0"+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```Exit code success can be determined by is_success (Process.parse_out):@@ -170,7 +165,7 @@ Exit code success can be determined by is_success (Process.parse_out):```ocaml# run @@ fun mgr env ->Process.parse_out ~is_success:(Int.equal 5) mgr Eio.Buf_read.line ["sh"; "-c"; "echo 123; exit 5"];;-- : string = "123"+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```The default environment:File "tests/network.md", line 1, characters 0-0:/usr/bin/git --no-pager diff --no-index --color=always -u _build/default/tests/network.md _build/default/tests/.mdx/network.md.correcteddiff --git a/_build/default/tests/network.md b/_build/default/tests/.mdx/network.md.correctedindex 4a3a8d8..89ea22f 100644--- a/_build/default/tests/network.md+++ b/_build/default/tests/.mdx/network.md.corrected@@ -86,12 +86,7 @@ Handling one connection on a Unix domain socket:```ocaml# run (test_address (`Unix "eio-test.sock"));;-+Connecting to server...-+Server accepted connection from client-+Server received: "Hello from client"-+Client received: "Bye"-+Client finished - cancelling server-Exception: Graceful_shutdown.+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```Handling one connection on an abstract Unix domain socket (this only works on Linux):@@ -111,12 +106,7 @@ Handling one connection using IPv6:```ocaml# run (test_address addr6);;-+Connecting to server...-+Server accepted connection from client-+Server received: "Hello from client"-+Client received: "Bye"-+Client finished - cancelling server-Exception: Graceful_shutdown.+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```Cancelling the read:@@ -201,10 +191,7 @@ Handling one UDP packet using IPv6:```ocaml# run (run_dgram Eio.Net.Ipaddr.V6.loopback);;-+Waiting to receive data on udp:[::1]:8082-+Sending data from udp:[::1]:8081 to udp:[::1]:8082-+Received message from udp:[::1]:8081: UDP Message-- : unit = ()+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```Now test host-assigned addresses.@@ -244,10 +231,7 @@ Handling one UDP packet using IPv6:```ocaml# let addr = Eio.Net.Ipaddr.V6.loopback inrun @@ run_dgram2 addr ~e1:`UdpV6;;-+Waiting to receive data on udp:[::1]:8082-+Sending data to udp:[::1]:8082-+Received message UDP Message-- : unit = ()+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```It's not an error to close the socket before the handler returns:@@ -269,10 +253,7 @@ It's not an error to close the socket before the handler returns:let msg = Eio.Buf_read.(parse_exn take_all) flow ~max_size:100 intraceln "Client got %S" msg;);;-+Connecting to server...-+Server got connection-+Client got "Hi"-- : unit = ()+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```## Unix interopFile "README.md", line 1, characters 0-0:/usr/bin/git --no-pager diff --no-index --color=always -u _build/default/README.md _build/default/.mdx/README.md.correcteddiff --git a/_build/default/README.md b/_build/default/.mdx/README.md.correctedindex a13ece1..7b6fb8a 100644--- a/_build/default/README.md+++ b/_build/default/.mdx/README.md.corrected@@ -167,8 +167,7 @@ For example, instead of giving `main` the real standard output, we can have it wlet buffer = Buffer.create 20 inmain (Eio.Flow.buffer_sink buffer);traceln "Main would print %S" (Buffer.contents buffer);;-+Main would print "Hello, world!\n"-- : unit = ()+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```[Eio.traceln][] provides convenient printf-style debugging, without requiring you to plumb `stderr` through your code.File "tests/fs.md", line 1, characters 0-0:/usr/bin/git --no-pager diff --no-index --color=always -u _build/default/tests/fs.md _build/default/tests/.mdx/fs.md.correcteddiff --git a/_build/default/tests/fs.md b/_build/default/tests/.mdx/fs.md.correctedindex 446874a..25141e5 100644--- a/_build/default/tests/fs.md+++ b/_build/default/tests/.mdx/fs.md.corrected@@ -105,16 +105,14 @@ Creating a file and reading it back:let cwd = Eio.Stdenv.cwd env inPath.save ~create:(`Exclusive 0o666) (cwd / "test-file") "my-data";traceln "Got %S" @@ Path.load (cwd / "test-file");;-+Got "my-data"-- : unit = ()+Exception: Unix.Unix_error(Unix.ENOMEM, "io_uring_queue_init", "")```Check the file got the correct permissions (subject to the umask set above):```ocaml# Printf.printf "Perm = %o\n" ((Unix.stat "test-file").st_perm);;-Perm = 644-- : unit = ()+Exception: Unix.Unix_error(Unix.ENOENT, "stat", "test-file")```# Sandboxing"/usr/bin/env" "bash" "-c" "opam exec -- dune build @install @check @runtest && rm -rf _build" failed with exit status 12026-06-09 09:14.08: Job failed: Failed: Build failed