alt-ergo icon indicating copy to clipboard operation
alt-ergo copied to clipboard

The dune build command failed

Open Halbaroth opened this issue 2 years ago • 3 comments

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

Halbaroth avatar Jun 08 '23 16:06 Halbaroth

It seems Dune tries to open too many files and fails because it reaches the maximum of file descriptor per process.

Halbaroth avatar Jun 08 '23 16:06 Halbaroth

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.

bclement-ocp avatar Jun 08 '23 16:06 bclement-ocp

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.

Halbaroth avatar Jun 09 '23 11:06 Halbaroth

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.

bclement-ocp avatar Jul 11 '24 08:07 bclement-ocp

This bug have been fixed in Dune indeed.

Halbaroth avatar Jul 11 '24 11:07 Halbaroth