cryptomator / cryptomator/cryptomator

FUSE-T vault failes to re-mount on macOS Sequoia if mountpoint folder already exists

Open
#4,043 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
16.1k
Forks
1.5k
Avg merge
2d 45m
Merged PRs (30d)
1

Description

### Summary

Unlocking a vault configured to mount using FUSE-T on macOS Sequoia fails with error 09TB:8LNC:8MQR if a directory already exists (despite being empty) at the mount path.

### Please agree to the following

- [x] I have searched [existing issues](https://github.com/cryptomator/cryptomator/issues?q=) for duplicates
- [x] I agree to follow this project's [Code of Conduct](https://github.com/cryptomator/cryptomator/blob/develop/.github/CODE_OF_CONDUCT.md)

### What software is involved?

- Operating System: macOS Sequoia 15.7.2 (build 24G325)
- Cryptomator: 1.18.0
- FUSE-T: 1.0.49

### Volume Type

FUSE-T

### Steps to Reproduce

1. Lock the volume.
2. Unlock the volume.

### Expected Behavior

The volume re-mounts.

### Actual Behavior

The volume fails to re-mount, with the error logged below.

### Reproducibility

Always

### Relevant Log Output

```shell
Error Code 09TB:8LNC:8MQR
org.cryptomator.integrations.mount.MountFailedException: org.cryptomator.jfuse.api.FuseMountFailedException: fuse_loop() returned prematurely with non-zero exit code -1
at org.cryptomator.frontend.fuse@5.1.0/org.cryptomator.frontend.fuse.mount.FuseTMountProvider$FuseTMountBuilder.mount(FuseTMountProvider.java:133)
at org.cryptomator.desktop@1.18.0/org.cryptomator.common.mount.Mounter.mount(Mounter.java:172)
at org.cryptomator.desktop@1.18.0/org.cryptomator.common.vaults.Vault.unlock(Vault.java:179)
at org.cryptomator.desktop@1.18.0/org.cryptomator.ui.keyloading.KeyLoadingStrategy.use(KeyLoadingStrategy.java:109)
at org.cryptomator.desktop@1.18.0/org.cryptomator.ui.unlock.UnlockWorkflow.call(UnlockWorkflow.java:82)
at org.cryptomator.desktop@1.18.0/org.cryptomator.ui.unlock.UnlockWorkflow.call(UnlockWorkflow.java:37)
at javafx.graphics@25/javafx.concurrent.Task$TaskCallable.call(Unknown Source)
at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
at java.base/java.util.concurrent.CompletableFuture$UniAccept.tryFire(Unknown Source)
at java.base/java.util.concurrent.CompletableFuture$Completion.run(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
Caused by: org.cryptomator.jfuse.api.FuseMountFailedException: fuse_loop() returned prematurely with non-zero exit code -1
at org.cryptomator.jfuse.api@0.7.3/org.cryptomator.jfuse.api.Fuse.mount(Fuse.java:130)
at org.cryptomator.frontend.fuse@5.1.0/org.cryptomator.frontend.fuse.mount.FuseTMountProvider$FuseTMountBuilder.mount(FuseTMountProvider.java:130)
... 12 more
```

### Anything else?

Concurrent with the failure to mount the volume, `~/Library/Logs/fuse-t/fuse-t.log` gets appended with:
```
time="2025-11-14T19:25:58-08:00" level=info msg="comm socket: 64"
time="2025-11-14T19:25:58-08:00" level=info msg="montor socket: 66"
time="2025-11-14T19:25:58-08:00" level=info msg="Server version 1.0.49 (70ae0b15a0f0c31681bfa10c133c87886dfcc6e7) running at [::1]:52200"
time="2025-11-14T19:25:58-08:00" level=info msg="Mounting: /Users/USERNAME/Library/Application Support/Cryptomator/mnt/VAULT NAME"
time="2025-11-14T19:25:58-08:00" level=info msg="mount [-o noauto,nostreams -t smbfs //Guest@fuse-t._smb._tcp.local/VAULT%20NAME /Users/USERNAME/Library/Application Support/Cryptomator/mnt/VAULT NAME]"
time="2025-11-14T19:26:28-08:00" level=error msg="exit status 68"
time="2025-11-14T19:26:28-08:00" level=warning msg="receiveRequest error: read unix ->: use of closed network connection"
time="2025-11-14T19:27:10-08:00" level=info msg="comm socket: 65"
time="2025-11-14T19:27:10-08:00" level=info msg="montor socket: 69"
time="2025-11-14T19:27:10-08:00" level=warning msg="Failed to listen: 52200"
time="2025-11-14T19:27:10-08:00" level=info msg="Server version 1.0.49 (70ae0b15a0f0c31681bfa10c133c87886dfcc6e7) running at [::1]:52201"
time="2025-11-14T19:27:10-08:00" level=info msg="Mounting: /Users/USERNAME/Library/Application Support/Cryptomator/mnt/VAULT NAME"
time="2025-11-14T19:27:10-08:00" level=info msg="mount [-o noauto,nostreams -t smbfs //Guest@fuse-t-1._smb._tcp.local/VAULT%20NAME /Users/USERNAME/Library/Application Support/Cryptomator/mnt/VAULT NAME]"
time="2025-11-14T19:27:12-08:00" level=error msg="ioctl: code 1310840"
time="2025-11-14T19:27:12-08:00" level=error msg=Lock
time="2025-11-14T19:27:12-08:00" level=error msg=Lock
time="2025-11-14T19:27:12-08:00" level=error msg=Lock
time="2025-11-14T19:27:12-08:00" level=error msg=Lock
time="2025-11-14T19:27:12-08:00" level=error msg=Lock
time="2025-11-14T19:27:12-08:00" level=error msg=Lock
time="2025-11-14T19:27:12-08:00" level=error msg=Lock
time="2025-11-14T19:27:12-08:00" level=error msg=Lock
time="2025-11-14T19:27:15-08:00" level=error msg=Lock
time="2025-11-14T19:27:15-08:00" level=error msg=Lock
time="2025-11-14T19:27:15-08:00" level=error msg=Lock
time="2025-11-14T19:27:15-08:00" level=error msg=Lock
time="2025-11-14T19:27:15-08:00" level=error msg=Lock
time="2025-11-14T19:27:15-08:00" level=error msg=Lock
time="2025-11-14T19:27:15-08:00" level=error msg=Lock
time="2025-11-14T19:27:15-08:00" level=error msg=Lock
time="2025-11-14T19:27:15-08:00" level=error msg=Lock
time="2025-11-14T19:27:15-08:00" level=error msg=Lock
time="2025-11-14T19:27:15-08:00" level=error msg=Lock
time="2025-11-14T19:27:15-08:00" level=error msg=Lock
time="2025-11-14T19:27:15-08:00" level=error msg=Lock
time="2025-11-14T19:27:15-08:00" level=error msg=Lock
time="2025-11-14T19:27:15-08:00" level=error msg=Lock
time="2025-11-14T19:27:15-08:00" level=error msg=Lock
time="2025-11-14T19:27:15-08:00" level=error msg=Lock
time="2025-11-14T19:27:15-08:00" level=error msg=Lock
time="2025-11-14T19:27:15-08:00" level=error msg=Lock
time="2025-11-14T19:27:15-08:00" level=error msg=Lock
time="2025-11-14T19:27:15-08:00" level=error msg=Lock
time="2025-11-14T19:27:15-08:00" level=error msg=Lock
time="2025-11-14T19:27:16-08:00" level=error msg=Lock
time="2025-11-14T19:27:16-08:00" level=error msg=Lock
time="2025-11-14T19:27:16-08:00" level=error msg=Lock
time="2025-11-14T19:27:16-08:00" level=error msg=Lock
time="2025-11-14T19:27:16-08:00" level=error msg=Lock
time="2025-11-14T19:27:16-08:00" level=error msg=Lock
time="2025-11-14T19:27:16-08:00" level=error msg=Lock
time="2025-11-14T19:27:16-08:00" level=error msg=Lock
time="2025-11-14T19:27:16-08:00" level=error msg=Lock
time="2025-11-14T19:27:16-08:00" level=error msg=Lock
time="2025-11-14T19:27:16-08:00" level=error msg=Lock
time="2025-11-14T19:27:16-08:00" level=error msg=Lock
time="2025-11-14T19:27:16-08:00" level=error msg=Lock
time="2025-11-14T19:27:16-08:00" level=error msg=Lock
time="2025-11-14T19:27:16-08:00" level=error msg=Lock
time="2025-11-14T19:27:16-08:00" level=error msg=Lock
time="2025-11-14T19:27:16-08:00" level=error msg=Lock
time="2025-11-14T19:27:16-08:00" level=error msg=Lock
time="2025-11-14T19:27:21-08:00" level=error msg=Lock
time="2025-11-14T19:27:21-08:00" level=error msg=Lock
time="2025-11-14T19:27:21-08:00" level=error msg=Lock
time="2025-11-14T19:27:21-08:00" level=error msg=Lock
time="2025-11-14T19:27:21-08:00" level=error msg=Lock
time="2025-11-14T19:27:21-08:00" level=error msg=Lock
time="2025-11-14T19:27:21-08:00" level=error msg=Lock
time="2025-11-14T19:27:21-08:00" level=error msg=Lock
time="2025-11-14T19:27:54-08:00" level=error msg="error: connection error: EOF"
time="2025-11-14T19:27:54-08:00" level=info msg="Unmounting: /Users/USERNAME/Library/Application Support/Cryptomator/mnt/VAULT NAME"
time="2025-11-14T19:27:54-08:00" level=info msg="Parent process has died"
time="2025-11-14T19:27:54-08:00" level=info msg="unmount [-f /Users/USERNAME/Library/Application Support/Cryptomator/mnt/VAULT NAME]"
time="2025-11-14T19:27:54-08:00" level=info msg="unmount [-f /Users/USERNAME/Library/Application Support/Cryptomator/mnt/VAULT NAME]"
time="2025-11-14T19:27:54-08:00" level=error msg="exit status 1"
time="2025-11-14T19:27:54-08:00" level=error msg="exit status 1"
```

If I re-attempt to mount the vault, thousands of lines are appended to the log at the rate of more than ten per second, mostly just repeating around 108 – 144 lines ending `msg=Lock` per line ending `msg="sendRequest error: write unix ->: use of closed network connection"`.

I don't yet know enough about SMB to be sure whether it's significant, but in SMB, `ioctl code 1310840`, or `0x140078`, corresponds to [`FSCTL_SRV_REQUEST_RESUME_KEY`](https://learn.microsoft.com/en-us/windows/win32/devnotes/fsctl-srv-request-resume-key).

Before deleting the mountpoint folder, potential workarounds from discussion #3607 which I tried, and which failed, include:
- removing and reinstalling Cryptomator,
- removing and reinstalling FUSE-T,
- explicitly setting volume type to "FUSE-T Experimental" (as opposed to Default),
- explicitly setting the full mount directory path (as opposed automatically),
- removing and re-adding the vault, and
- restarting the Mac.

Additionally, mounting and altering the volume on Cryptomator for Windows, unmounting it, then attempting to mount it again on Cryptomator for Mac, had no effect.

Notably, running a vault health check shows no problems with the vault.

What does work as a one-off workaround, after reverting the mount directory path to automatic, is:
- deleting the (empty) mountpoint folder, `/Users/USERNAME/Library/Application Support/Cryptomator/mnt/VAULT NAME`, then mounting the vault again.

However, to prevent recurrence of the problem, it is necessary to delete the empty mountpoint folder again before each time I mount the vault.

@macos-fuse-t Might this be a bug in FUSE-T, not Cryptomator?

_Originally posted by @deFractal in https://github.com/cryptomator/cryptomator/discussions/3607#discussioncomment-14974819_

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.