The dune build command failed
I found a bug in Dune. On next, type
make clean
./configure
dune build
I got a very long error message (about 2.4 Mb!!!):
Error: execve(../install/default/bin/alt-ergo): No such file or directory
-> required by _build/default/tests/ac/testfile-ac_arith001_cdcl.output
-> required by alias tests/ac/all
-> required by alias default
Error: dup(): Too many open files
-> required by _build/default/tests/bool/testfile-bool025_cdcl.output
-> required by alias tests/bool/all
-> required by alias default
Error: pipe(): Too many open files
-> required by _build/default/tests/bool/testfile-bool026_cdcl.output
-> required by alias tests/bool/all
-> required by alias default
Error: _build/default/tests/bool/testfile-bool027_bis.ae: Too many open files
-> required by _build/default/tests/bool/testfile-bool027_bis.ae
-> required by _build/default/tests/bool/testfile-bool027_bis_cdcl.output
-> required by alias tests/bool/all
-> required by alias default
Error: _build/default/tests/bool/testfile-bool028.ae: Too many open files
-> required by _build/default/tests/bool/testfile-bool028.ae
-> required by _build/default/tests/bool/testfile-bool028_cdcl.output
-> required by alias tests/bool/all
-> required by alias default
Error: _build/default/tests/bool/testfile-bool029.ae: Too many open files
-> required by _build/default/tests/bool/testfile-bool029.ae
-> required by _build/default/tests/bool/testfile-bool029_cdcl.output
-> required by alias tests/bool/all
-> required by alias default
Error: _build/default/tests/bool/testfile-bool030.ae: Too many open files
-> required by _build/default/tests/bool/testfile-bool030.ae
-> required by _build/default/tests/bool/testfile-bool030_cdcl.output
-> required by alias tests/bool/all
-> required by alias default
Error: _build/default/tests/bool/testfile-bool031.ae: Too many open files
-> required by _build/default/tests/bool/testfile-bool031.ae
-> required by _build/default/tests/bool/testfile-bool031_cdcl.output
-> required by alias tests/bool/all
-> required by alias default
Error: _build/default/tests/bool/testfile-bool032.ae: Too many open files
-> required by _build/default/tests/bool/testfile-bool032.ae
-> required by _build/default/tests/bool/testfile-bool032_cdcl.output
-> required by alias tests/bool/all
-> required by alias default
Error: _build/default/tests/bool/testfile-bool033.ae: Too many open files
-> required by _build/default/tests/bool/testfile-bool033.ae
-> required by _build/default/tests/bool/testfile-bool033_cdcl.output
-> required by alias tests/bool/all
-> required by alias default
Error: _build/default/tests/bool/testfile-bool034.ae: Too many open files
-> required by _build/default/tests/bool/testfile-bool034.ae
-> required by _build/default/tests/bool/testfile-bool034_cdcl.output
-> required by alias tests/bool/all
-> required by alias default
Error: _build/default/tests/bool/testfile-bool035.ae: Too many open files
-> required by _build/default/tests/bool/testfile-bool035.ae
-> required by _build/default/tests/bool/testfile-bool035_cdcl.output
-> required by alias tests/bool/all
-> required by alias default
Error: _build/default/tests/bool/testfile-bool036.ae: Too many open files
-> required by _build/default/tests/bool/testfile-bool036.ae
-> required by _build/default/tests/bool/testfile-bool036_cdcl.output
-> required by alias tests/bool/all
-> required by alias default
Error: _build/default/tests/bool/testfile-bool037.ae: Too many open files
-> required by _build/default/tests/bool/testfile-bool037.ae
-> required by _build/default/tests/bool/testfile-bool037_cdcl.output
-> required by alias tests/bool/all
-> required by alias default
Error: _build/default/tests/bool/testfile-bool038.ae: Too many open files
-> required by _build/default/tests/bool/testfile-bool038.ae
-> required by _build/default/tests/bool/testfile-bool038_cdcl.output
-> required by alias tests/bool/all
-> required by alias default
Error: _build/default/tests/bool/testfile-bool039.ae: Too many open files
-> required by _build/default/tests/bool/testfile-bool039.ae
-> required by _build/default/tests/bool/testfile-bool039_cdcl.output
-> required by alias tests/bool/all
-> required by alias default
Error: _build/default/tests/bool/testfile-bool040.ae: Too many open files
-> required by _build/default/tests/bool/testfile-bool040.ae
-> required by _build/default/tests/bool/testfile-bool040_cdcl.output
-> required by alias tests/bool/all
-> required by alias default
Error: _build/default/tests/bool/testfile-bool041.ae: Too many open files
-> required by _build/default/tests/bool/testfile-bool041.ae
-> required by _build/default/tests/bool/testfile-bool041_cdcl.output
-> required by alias tests/bool/all
-> required by alias default
Error: _build/default/tests/bool/testfile-bool042.ae: Too many open files
-> required by _build/default/tests/bool/testfile-bool042.ae
-> required by _build/default/tests/bool/testfile-bool042_cdcl.output
-> required by alias tests/bool/all
-> required by alias default
Error: _build/default/tests/bool/testfile-bool043.ae: Too many open files
-> required by _build/default/tests/bool/testfile-bool043.ae
-> required by _build/default/tests/bool/testfile-bool043_cdcl.output
-> required by alias tests/bool/all
-> required by alias default
Error: _build/default/tests/bool/testfile-bool044.ae: Too many open files
-> required by _build/default/tests/bool/testfile-bool044.ae
-> required by _build/default/tests/bool/testfile-bool044_cdcl.output
-> required by alias tests/bool/all
-> required by alias default
Error: _build/default/tests/bool/testfile-bool045.ae: Too many open files
-> required by _build/default/tests/bool/testfile-bool045.ae
-> required by _build/default/tests/bool/testfile-bool045_cdcl.output
-> required by alias tests/bool/all
-> required by alias default
Error: _build/default/tests/bool/testfile-bool046.ae: Too many open files
-> required by _build/default/tests/bool/testfile-bool046.ae
-> required by _build/default/tests/bool/testfile-bool046_cdcl.output
-> required by alias tests/bool/all
-> required by alias default
Error: _build/default/tests/bool/testfile-bool047.ae: Too many open files
-> required by _build/default/tests/bool/testfile-bool047.ae
-> required by _build/default/tests/bool/testfile-bool047_cdcl.output
-> required by alias tests/bool/all
-> required by alias default
....
File "src/parsers/parsers_loader.ml", line 1, characters 0-0:
Error: File unavailable: src/parsers/parsers_loader.ml
Sys_error("src/parsers/parsers_loader.ml: Too many open files")
File "src/parsers/psmt2_to_alt_ergo.ml", line 1, characters 0-0:
Error: File unavailable: src/parsers/psmt2_to_alt_ergo.ml
Sys_error("src/parsers/psmt2_to_alt_ergo.ml: Too many open files")
File "src/parsers/parsers.mli", line 1, characters 0-0:
Error: File unavailable: src/parsers/parsers.mli
Sys_error("src/parsers/parsers.mli: Too many open files")
File "src/parsers/parsers_loader.mli", line 1, characters 0-0:
Error: File unavailable: src/parsers/parsers_loader.mli
Sys_error("src/parsers/parsers_loader.mli: Too many open files")
File "src/parsers/psmt2_to_alt_ergo.mli", line 1, characters 0-0:
Error: File unavailable: src/parsers/psmt2_to_alt_ergo.mli
Sys_error("src/parsers/psmt2_to_alt_ergo.mli: Too many open files")
File "src/plugins/fm-simplex/fmSimplexIneqs.ml", line 1, characters 0-0:
Error: File unavailable: src/plugins/fm-simplex/fmSimplexIneqs.ml
Sys_error("src/plugins/fm-simplex/fmSimplexIneqs.ml: Too many open files")
File "src/plugins/fm-simplex/simplex.ml", line 1, characters 0-0:
Error: File unavailable: src/plugins/fm-simplex/simplex.ml
Sys_error("src/plugins/fm-simplex/simplex.ml: Too many open files")
File "src/plugins/fm-simplex/simplex_cache.ml", line 1, characters 0-0:
Error: File unavailable: src/plugins/fm-simplex/simplex_cache.ml
Sys_error("src/plugins/fm-simplex/simplex_cache.ml: Too many open files")
File "src/plugins/AB-Why3/why3_loc.ml", line 1, characters 0-0:
Error: File unavailable: src/plugins/AB-Why3/why3_loc.ml
Sys_error("src/plugins/AB-Why3/why3_loc.ml: Too many open files")
File "src/plugins/AB-Why3/why3_ptree.ml", line 1, characters 0-0:
Error: File unavailable: src/plugins/AB-Why3/why3_ptree.ml
Sys_error("src/plugins/AB-Why3/why3_ptree.ml: Too many open files")
File "src/plugins/fm-simplex/fmSimplexIneqs.mli", line 1, characters 0-0:
Error: File unavailable: src/plugins/fm-simplex/fmSimplexIneqs.mli
Sys_error("src/plugins/fm-simplex/fmSimplexIneqs.mli: Too many open files")
File "src/plugins/AB-Why3/why3_loc.mli", line 1, characters 0-0:
Error: File unavailable: src/plugins/AB-Why3/why3_loc.mli
Sys_error("src/plugins/AB-Why3/why3_loc.mli: Too many open files")
File "src/plugins/AB-Why3/why3_ptree.mli", line 1, characters 0-0:
Error: File unavailable: src/plugins/AB-Why3/why3_ptree.mli
Sys_error("src/plugins/AB-Why3/why3_ptree.mli: Too many open files")
File "CHANGES.md", line 1, characters 0-0:
Error: File unavailable: CHANGES.md
Sys_error("CHANGES.md: Too many open files")
File "LICENSE.md", line 1, characters 0-0:
Error: File unavailable: LICENSE.md
Sys_error("LICENSE.md: Too many open files")
File "README.md", line 1, characters 0-0:
Error: File unavailable: README.md
Sys_error("README.md: Too many open files")
File "src/parsers/index.mld", line 1, characters 0-0:
Error: File unavailable: src/parsers/index.mld
Sys_error("src/parsers/index.mld: Too many open files")
File "src/bin/text/index.mld", line 1, characters 0-0:
Error: File unavailable: src/bin/text/index.mld
Sys_error("src/bin/text/index.mld: Too many open files")
File "src/plugins/AB-Why3/index_abwhy3.mld", line 1, characters 0-0:
Error: File unavailable: src/plugins/AB-Why3/index_abwhy3.mld
Sys_error("src/plugins/AB-Why3/index_abwhy3.mld: Too many open files")
File "src/bin/common/index_common.mld", line 1, characters 0-0:
Error: File unavailable: src/bin/common/index_common.mld
Sys_error("src/bin/common/index_common.mld: Too many open files")
File "src/plugins/fm-simplex/index_fmsimplex.mld", line 1, characters 0-0:
Error: File unavailable: src/plugins/fm-simplex/index_fmsimplex.mld
Sys_error("src/plugins/fm-simplex/index_fmsimplex.mld: Too many open files")
File "_build/default/META.alt-ergo-parsers", line 1, characters 0-0:
Error: Error trying to read targets after a rule was run:
- default/lib/alt-ergo-parsers/META: Too many open files
File "_build/default/alt-ergo-parsers.dune-package", line 1, characters 0-0:
Error: Error trying to read targets after a rule was run:
- default/lib/alt-ergo-parsers/dune-package: Too many open files
File "_build/default/alt-ergo-parsers.opam", line 1, characters 0-0:
Error: Error trying to read targets after a rule was run:
- default/lib/alt-ergo-parsers/opam: Too many open files
File "_build/default/META.alt-ergo", line 1, characters 0-0:
Error: Error trying to read targets after a rule was run:
- default/lib/alt-ergo/META: Too many open files
File "_build/default/alt-ergo.dune-package", line 1, characters 0-0:
Error: Error trying to read targets after a rule was run:
- default/lib/alt-ergo/dune-package: Too many open files
File "_build/default/alt-ergo.opam", line 1, characters 0-0:
Error: Error trying to read targets after a rule was run:
- default/lib/alt-ergo/opam: Too many open files
Raised when trying to print location contents of src/preludes/dune
/-----------------------------------------------------------------------
| Internal error: Uncaught exception.
| Sys_error("src/preludes/dune: Too many open files")
| Raised by primitive operation at Stdlib.open_in_gen in file "stdlib.ml", line 405, characters 28-54
| Called from Stdune__io.Make.with_file_in in file "otherlibs/stdune/src/io.ml", line 99, characters 17-37
| Called from Stdune__result.try_with in file "otherlibs/stdune/src/result.ml", line 27, characters 8-12
\-----------------------------------------------------------------------
File "src/preludes/dune", line 6, characters 5-39:
Error: Error trying to read targets after a rule was run:
- default/lib/alt-ergo/preludes/b-set-theory-prelude-2018-09-28.ae: Too many open files
Raised when trying to print location contents of src/preludes/dune
/-----------------------------------------------------------------------
| Internal error: Uncaught exception.
| Sys_error("src/preludes/dune: Too many open files")
| Raised by primitive operation at Stdlib.open_in_gen in file "stdlib.ml", line 405, characters 28-54
| Called from Stdune__io.Make.with_file_in in file "otherlibs/stdune/src/io.ml", line 99, characters 17-37
| Called from Stdune__result.try_with in file "otherlibs/stdune/src/result.ml", line 27, characters 8-12
\-----------------------------------------------------------------------
File "src/preludes/dune", line 7, characters 5-39:
Error: Error trying to read targets after a rule was run:
- default/lib/alt-ergo/preludes/b-set-theory-prelude-2020-02-28.ae: Too many open files
Raised when trying to print location contents of src/preludes/dune
/-----------------------------------------------------------------------
| Internal error: Uncaught exception.
| Sys_error("src/preludes/dune: Too many open files")
| Raised by primitive operation at Stdlib.open_in_gen in file "stdlib.ml", line 405, characters 28-54
| Called from Stdune__io.Make.with_file_in in file "otherlibs/stdune/src/io.ml", line 99, characters 17-37
| Called from Stdune__result.try_with in file "otherlibs/stdune/src/result.ml", line 27, characters 8-12
\-----------------------------------------------------------------------
File "src/preludes/dune", line 8, characters 5-35:
Error: Error trying to read targets after a rule was run:
- default/lib/alt-ergo/preludes/fpa-theory-2017-01-04-16h00.ae: Too many open files
Raised when trying to print location contents of src/preludes/dune
/-----------------------------------------------------------------------
| Internal error: Uncaught exception.
| Sys_error("src/preludes/dune: Too many open files")
| Raised by primitive operation at Stdlib.open_in_gen in file "stdlib.ml", line 405, characters 28-54
| Called from Stdune__io.Make.with_file_in in file "otherlibs/stdune/src/io.ml", line 99, characters 17-37
| Called from Stdune__result.try_with in file "otherlibs/stdune/src/result.ml", line 27, characters 8-12
\-----------------------------------------------------------------------
File "src/preludes/dune", line 9, characters 5-35:
Error: Error trying to read targets after a rule was run:
- default/lib/alt-ergo/preludes/fpa-theory-2019-06-14-11h00.ae: Too many open files
Raised when trying to print location contents of src/preludes/dune
/-----------------------------------------------------------------------
| Internal error: Uncaught exception.
| Sys_error("src/preludes/dune: Too many open files")
| Raised by primitive operation at Stdlib.open_in_gen in file "stdlib.ml", line 405, characters 28-54
| Called from Stdune__io.Make.with_file_in in file "otherlibs/stdune/src/io.ml", line 99, characters 17-37
| Called from Stdune__result.try_with in file "otherlibs/stdune/src/result.ml", line 27, characters 8-12
\-----------------------------------------------------------------------
File "src/preludes/dune", line 10, characters 5-35:
Error: Error trying to read targets after a rule was run:
- default/lib/alt-ergo/preludes/fpa-theory-2019-10-08-19h00.ae: Too many open files
File "_build/default/META.alt-ergo-lib", line 1, characters 0-0:
Error: Error trying to read targets after a rule was run:
- default/lib/alt-ergo-lib/META: Too many open files
File "_build/default/alt-ergo-lib.dune-package", line 1, characters 0-0:
Error: Error trying to read targets after a rule was run:
- default/lib/alt-ergo-lib/dune-package: Too many open files
File "_build/default/alt-ergo-lib.opam", line 1, characters 0-0:
Error: Error trying to read targets after a rule was run:
- default/lib/alt-ergo-lib/opam: Too many open files
Internal error, please report upstream including the contents of _build/log.
Description:
("hooks failed",
{ exns =
[ { exn =
"Unix.Unix_error(Unix.EMFILE, \"/tmp/build_5984be_dune\", \"Stdune.Path.rm_rf: read_directory_with_kinds\")"
; backtrace =
"Raised at Stdune__fpath.clear_dir in file \"otherlibs/stdune/src/fpath.ml\", line 120, characters 4-103\n\
Called from Stdune__path.clear_dir in file \"otherlibs/stdune/src/path.ml\" (inlined), line 1142, characters 20-51\n\
Called from Stdune__temp.clear_dir in file \"otherlibs/stdune/src/temp.ml\", line 97, characters 9-27\n\
Called from Stdune__exn_with_backtrace.try_with in file \"otherlibs/stdune/src/exn_with_backtrace.ml\", line 9, characters 8-12\n\
"
}
]
})
Raised at Stdune__code_error.raise in file
"otherlibs/stdune/src/code_error.ml", line 11, characters 30-62
Called from Main__build_cmd.run_build_system.(fun) in file
"bin/build_cmd.ml", line 76, characters 6-31
Called from Fiber__scheduler.exec in file "otherlibs/fiber/src/scheduler.ml",
line 73, characters 8-11
Re-raised at Stdune__exn.raise_with_backtrace in file
"otherlibs/stdune/src/exn.ml" (inlined), line 36, characters 27-56
Called from Stdune__exn_with_backtrace.reraise in file
"otherlibs/stdune/src/exn_with_backtrace.ml", line 18, characters 33-71
Called from Fiber__scheduler.exec in file "otherlibs/fiber/src/scheduler.ml",
line 73, characters 8-11
Re-raised at Stdune__exn.raise_with_backtrace in file
"otherlibs/stdune/src/exn.ml" (inlined), line 36, characters 27-56
Called from Stdune__exn_with_backtrace.reraise in file
"otherlibs/stdune/src/exn_with_backtrace.ml", line 18, characters 33-71
Called from Fiber__scheduler.exec in file "otherlibs/fiber/src/scheduler.ml",
line 73, characters 8-11
I must not crash. Uncertainty is the mind-killer. Exceptions are the
little-death that brings total obliteration. I will fully express my cases.
Execution will pass over me and through me. And when it has gone past, I
will unwind the stack along its path. Where the cases are handled there will
be nothing. Only I will remain.
Fatal error: exception Sys_error("_build/.db: Too many open files")
Raised by primitive operation at Stdlib.open_out_gen in file "stdlib.ml", line 331, characters 29-55
Called from Stdune__io.Make.with_file_out in file "otherlibs/stdune/src/io.ml", line 102, characters 17-43
Called from Stdune__exn.protectx in file "otherlibs/stdune/src/exn.ml", line 12, characters 8-11
Re-raised at Stdune__exn.protectx in file "otherlibs/stdune/src/exn.ml", line 18, characters 4-11
Called from Stdlib.at_exit.new_exit in file "stdlib.ml", line 560, characters 59-63
Called from Stdlib.do_at_exit in file "stdlib.ml" (inlined), line 566, characters 20-61
Called from Stdlib.exit in file "stdlib.ml", line 569, characters 2-15
Called from Main in file "bin/main.ml", line 106, characters 4-20
It seems Dune tries to open too many files and fails because it reaches the maximum of file descriptor per process.
Ah, interesting. Did it only happen once, or does it keep happening? In the latter case, we should open a bug report on the dune repo.
It occurs systematically when I run dune build. I tried with a fresh local repository and the bug is not here. I will investigate further later.
I have not experienced this in quite some time. I suggest we close as probably fixed in dune if it does not occur again in the next 3 months.
This bug have been fixed in Dune indeed.