-
Notifications
You must be signed in to change notification settings - Fork 409
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
_build/default/bin/dune.exe: Permission denied (ecryptfs, Mint) #8210
_build/default/bin/dune.exe: Permission denied (ecryptfs, Mint) #8210
Comments
Thanks. Looks like this is the followup to the same issue, indeed.
|
No, my home directory (where my .opam directory is) is not a network mount. I am using ecryptfs. I already have fmt installed, so I tried with kcas. This one apparently uses Dune, but I have Dune 3.7.1 installed already. |
Ok, that's interesting. It might be mounted
|
This is the output of mount that I think is relevant:
Is there any other information you need? I can execute a copy of the |
Thanks, that's helpful. I'll try to repro locally with ecryptfs. |
Ok, I can reproduce this.
|
What's happening is that the output file has been created, but not removed, so |
What's happening here is: - input and output files are open - sendfile is attempted and fails - both files are closed - input file is opened again - output file is opened again (but already exists) This throws an error if the output file is not writable. Signed-off-by: Etienne Millon <me@emillon.org>
Fixes ocaml#8210 If the `sendfile` branch failed, it left an empty target file. This file needs to be removed, otherwise the next `open` call can fail if the file is not writeable. Signed-off-by: Etienne Millon <me@emillon.org>
I pushed a fix in #8234. |
Fixes ocaml#8210 If the `sendfile` branch failed, it left an empty target file. This file needs to be removed, otherwise the next `open` call can fail if the file is not writeable. Signed-off-by: Etienne Millon <me@emillon.org>
What's happening here is: - input and output files are open - sendfile is attempted and fails - both files are closed - input file is opened again - output file is opened again (but already exists) This throws an error if the output file is not writable. Signed-off-by: Etienne Millon <me@emillon.org>
Fixes ocaml#8210 If the `sendfile` branch failed, it left an empty target file. This file needs to be removed, otherwise the next `open` call can fail if the file is not writeable. Signed-off-by: Etienne Millon <me@emillon.org>
What's happening here is: - input and output files are open - sendfile is attempted and fails - both files are closed - input file is opened again - output file is opened again (but already exists) This throws an error if the output file is not writable. Signed-off-by: Etienne Millon <me@emillon.org>
Fixes ocaml#8210 If the `sendfile` branch failed, it left an empty target file. This file needs to be removed, otherwise the next `open` call can fail if the file is not writeable. Signed-off-by: Etienne Millon <me@emillon.org>
Fixes ocaml#8210 If the `sendfile` branch failed, it leaves an empty target file, so retrying will fail. Instead we reuse the fd directly. Signed-off-by: Etienne Millon <me@emillon.org>
Fixes #8210 If the `sendfile` branch failed, it leaves an empty target file, so retrying will fail. Instead we reuse the fd directly. Signed-off-by: Etienne Millon <me@emillon.org>
What's happening here is: - input and output files are open - sendfile is attempted and fails - both files are closed - input file is opened again - output file is opened again (but already exists) This throws an error if the output file is not writable. Signed-off-by: Etienne Millon <me@emillon.org>
Fixes ocaml#8210 If the `sendfile` branch failed, it leaves an empty target file, so retrying will fail. Instead we reuse the fd directly. Signed-off-by: Etienne Millon <me@emillon.org>
What's happening here is: - input and output files are open - sendfile is attempted and fails - both files are closed - input file is opened again - output file is opened again (but already exists) This throws an error if the output file is not writable. Signed-off-by: Etienne Millon <me@emillon.org>
Fixes ocaml#8210 If the `sendfile` branch failed, it leaves an empty target file, so retrying will fail. Instead we reuse the fd directly. Signed-off-by: Etienne Millon <me@emillon.org>
* test: repro for #8210 (EACCESS if sendfile fails) What's happening here is: - input and output files are open - sendfile is attempted and fails - both files are closed - input file is opened again - output file is opened again (but already exists) This throws an error if the output file is not writable. Signed-off-by: Etienne Millon <me@emillon.org> * refactor: use Exn.protect instead of protectx (#8235) This adds a layer of rebinding that obscures what is going on. Signed-off-by: Etienne Millon <me@emillon.org> * fix(sendfile): unlink dst before fallback (#8234) Fixes #8210 If the `sendfile` branch failed, it leaves an empty target file, so retrying will fail. Instead we reuse the fd directly. Signed-off-by: Etienne Millon <me@emillon.org> --------- Signed-off-by: Etienne Millon <me@emillon.org>
Fixes ocaml#8210 If the `sendfile` branch failed, it leaves an empty target file, so retrying will fail. Instead we reuse the fd directly. Signed-off-by: Etienne Millon <me@emillon.org>
Expected Behavior
I can upgrade Dune.
Actual Behavior
I get a permission denied error.
Reproduction
I currently have Dune 3.7.1 installed. When I ran
opam upgrade
, Dune 3.9.1 cannot build due to a permission error.When I try to upgrade to 3.8.0, 3.8.1, or 3.8.2, I get the error #8041. When I try to upgrade to 3.8.3, 3.9.0, or 3.9.1, I get this current error. #8049, which fixes the sendfile error and was included in 3.8.3, is probably the cause of the current error.
My Linux kernel version is
5.15.0-76-generic
, I am running Linux Mint 21.1.The text was updated successfully, but these errors were encountered: