-
Notifications
You must be signed in to change notification settings - Fork 413
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Teardown does not work on OSX #2973
Comments
The other side (cache daemon) is supposed to perform a |
In any case Dune should probably have a timeout there to protect itself too. |
Yes, I omitted that but that's exactly what's happening |
Summary: On MacOS shutdown on a socket raises `ENOTCONN` even when only one side of the duplex communication is closed. This doesn't make much sense to me (also, man pages are rather fuzzy around this, and on Linux it behaves differently), but it is what it is. Since cache/client calls `Unix.shutdown client.fd Unix.SHUTDOWN_SEND` during teardown, `cache_daemon.ml` gets an exception on its shutdown, which it swallows and therefore never closes `client.fd`. Test plan: 1. Cache trimming tests work (and now enabled for all platforms), 2. Freezing described in ocaml#3233 is now gone. 3. Still works fine on Linux. Fixes ocaml#3233 ocaml#2973
Summary: On MacOS shutdown on a socket raises `ENOTCONN` even when only one side of the duplex communication is closed. This doesn't make much sense to me (also, man pages are rather fuzzy around this, and on Linux it behaves differently), but it is what it is. Since cache/client calls `Unix.shutdown client.fd Unix.SHUTDOWN_SEND` during teardown, `cache_daemon.ml` gets an exception on its shutdown, which it swallows and therefore never closes `client.fd`. Test plan: 1. Cache trimming tests work (and now enabled for all platforms), 2. Freezing described in ocaml#3233 is now gone. 3. Still works fine on Linux. Fixes ocaml#3233 ocaml#2973 Signed-off-by: Artem Pianykh <artem.pyanykh@gmail.com>
Summary: On MacOS shutdown on a socket raises `ENOTCONN` even when only one side of the duplex communication is closed. This doesn't make much sense to me (also, man pages are rather fuzzy around this, and on Linux it behaves differently), but it is what it is. Since cache/client calls `Unix.shutdown client.fd Unix.SHUTDOWN_SEND` during teardown, `cache_daemon.ml` gets an exception on its shutdown, which it swallows and therefore never closes `client.fd`. Test plan: 1. Cache trimming tests work (and now enabled for all platforms), 2. Freezing described in ocaml#3233 is now gone. 3. Still works fine on Linux. Fixes ocaml#3233 ocaml#2973 Signed-off-by: Artem Pyanykh <artem.pyanykh@gmail.com>
Fixed by #3249 . |
…lugin, dune-private-libs and dune-glob (2.5.0) CHANGES: - Add a `--release` option meaning the same as `-p` but without the package filtering. This is useful for custom `dune` invocation in opam files where we don't want `-p` (ocaml/dune#3260, @diml) - Fix a bug introduced in 2.4.0 causing `.bc` programs to be built with `-custom` by default (ocaml/dune#3269, fixes ocaml/dune#3262, @diml) - Allow contexts to be defined with local switches in workspace files (ocaml/dune#3265, fix ocaml/dune#3264, @rgrinberg) - Delay expansion errors until the rule is used to build something (ocaml/dune#3261, fix ocaml/dune#3252, @rgrinberg, @diml) - [coq] Support for theory dependencies and compositional builds using new field `(theories ...)` (ocaml/dune#2053, @ejgallego, @rgrinberg) - From now on, each version of a syntax extension must be explicitely tied to a minimum version of the dune language. Inconsistent versions in a `dune-project` will trigger a warning for version <=2.4 and an error for versions >2.4 of the dune language. (ocaml/dune#3270, fixes ocaml/dune#2957, @voodoos) - [coq] Bump coq lang version to 0.2. New coq features presented this release require this version of the coq lang. (ocaml/dune#3283, @ejgallego) - Prevent installation of public executables disabled using the `enabled_if` field. Installation will now simply skip such executables instead of raising an error. (ocaml/dune#3195, @voodoos) - `dune upgrade` will now try to upgrade projects using versions <2.0 to version 2.0 of the dune language. (ocaml/dune#3174, @voodoos) - Add a `top` command to integrate dune with any toplevel, not just utop. It is meant to be used with the new `#use_output` directive of OCaml 4.11 (ocaml/dune#2952, @mbernat, @diml) - Allow per-package `version` in generated `opam` files (ocaml/dune#3287, @toots) - [coq] Introduce the `coq.extraction` stanza. It can be used to extract OCaml sources (ocaml/dune#3299, fixes ocaml/dune#2178, @rgrinberg) - Load ppx rewriters in dune utop and add pps field to toplevel stanza. Ppx extensions will now be usable in the toplevel (ocaml/dune#3266, fixes ocaml/dune#346, @stephanieyou) - Add a `(subdir ..)` stanza to allow evaluating stanzas in sub directories. (ocaml/dune#3268, @rgrinberg) - Fix a bug preventing one from running inline tests in multiple modes (ocaml/dune#3352, @diml) - Allow the use of the `%{profile}` variable in the `enabled_if` field of the library stanza. (ocaml/dune#3344, @mrmr1993) - Allow the use of `%{ocaml_version}` variable in `enabled_if` field of the library stanza. (ocaml/dune#3339, @voodoos) - Fix dune build freezing on MacOS when cache is enabled. (ocaml/dune#3249, fixes #ocaml/dune#2973, @artempyanykh)
The following test (
dune-cache-trimming/run.t
) never terminates (consistently) for me on Mac:The following call to teardown triggers a clean up process:
That doesn't seem to terminate. This shutdown call:
Never seems to terminate because the client thread is stuck reading:
The text was updated successfully, but these errors were encountered: