-
Notifications
You must be signed in to change notification settings - Fork 411
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
Revert "feature: Eager watch mode for exec (#6507)" #6867
Conversation
This reverts commit 5ff9a4f. This was causing occasional segfaults on macos when running `dune exec` so reverting this until we figure out what's causing that. Signed-off-by: Stephen Sherratt <stephen@sherra.tt>
7efae7a
to
a2403e9
Compare
How about you just disable the feature for now? I.e. just remove the flag that enables it. I don't mind reverting it, but I think you're just going to create more work for yourself long term if someone edits this file and creates conflicts for this change. |
We see the segfault on macos even when running |
I can semi-reliably reproduce this on a mac by running:
Usually within a few iterations it fails with a seg fault. As an experiment I tried replacing the call to |
Btw, can you upload the stacktrace from the core dump? |
|
Looks mysterious. @nojb any chance you might know? |
Out of curiosity I tried instrumenting |
No idea. Is this with OCaml 5? Can it be reproduced with 4.14? |
This was with 4.14 |
This is the second attempt at adding this feature. The problem with the first attempt was that replacing the call to `Scheduler.go` with `Scheduler.go_with_rpc_server_and_console_status_reporting` caused occasional non-deterministic seg faults on macos. There's some info about the problem on the PR which reverts the previous attempt at adding this feature: ocaml#6867. At the time of writing we don't know the cause of this problem. The difference this time around is that we maintain the call to `Scheduler.go` when running `dune exec` not in watch mode, and only invoke `Scheduler.go_with_rpc_server_and_console_status_reporting` when running in watch mode. There is some additional refactoring done to make this split more ergonomic. We may see seg faults on macos when running exec in watch mode but at least we won't introduce the potential for seg faults into the existing use case of running exec not in watch mode (assuming of course that there is a causal link between `go_with_rpc_server_and_console_status_reporting` and the seg fault on macos, which is not necessarily the case). Signed-off-by: Stephen Sherratt <stephen@sherra.tt>
This is the second attempt at adding this feature. The problem with the first attempt was that replacing the call to `Scheduler.go` with `Scheduler.go_with_rpc_server_and_console_status_reporting` caused occasional non-deterministic seg faults on macos. There's some info about the problem on the PR which reverts the previous attempt at adding this feature: #6867. At the time of writing we don't know the cause of this problem. The difference this time around is that we maintain the call to `Scheduler.go` when running `dune exec` not in watch mode, and only invoke `Scheduler.go_with_rpc_server_and_console_status_reporting` when running in watch mode. There is some additional refactoring done to make this split more ergonomic. We may see seg faults on macos when running exec in watch mode but at least we won't introduce the potential for seg faults into the existing use case of running exec not in watch mode (assuming of course that there is a causal link between `go_with_rpc_server_and_console_status_reporting` and the seg fault on macos, which is not necessarily the case). Signed-off-by: Stephen Sherratt <stephen@sherra.tt>
This is the second attempt at adding this feature. The problem with the first attempt was that replacing the call to `Scheduler.go` with `Scheduler.go_with_rpc_server_and_console_status_reporting` caused occasional non-deterministic seg faults on macos. There's some info about the problem on the PR which reverts the previous attempt at adding this feature: ocaml#6867. At the time of writing we don't know the cause of this problem. The difference this time around is that we maintain the call to `Scheduler.go` when running `dune exec` not in watch mode, and only invoke `Scheduler.go_with_rpc_server_and_console_status_reporting` when running in watch mode. There is some additional refactoring done to make this split more ergonomic. We may see seg faults on macos when running exec in watch mode but at least we won't introduce the potential for seg faults into the existing use case of running exec not in watch mode (assuming of course that there is a causal link between `go_with_rpc_server_and_console_status_reporting` and the seg fault on macos, which is not necessarily the case). Signed-off-by: Stephen Sherratt <stephen@sherra.tt>
This reverts commit 5ff9a4f.
This was causing occasional segfaults on macos when running
dune exec
so reverting this until we figure out what's causing that.