juicedata/juicefs · error

cannot find the mount process for %s

Error message

cannot find the mount process for %s

What it means

findMountProcess scans Windows process listings for a running JuiceFS mount whose command line matches the given mount point. When no matching process is found it returns this error, meaning the mount point is not currently associated with a detectable JuiceFS mount process.

Source

Thrown at cmd/debug_windows.go:123

			arg = strings.TrimRight(arg, "\\")

			if strings.EqualFold(arg, mp) {
				mpFound = true
			}
		}

		if mpFound && mountFound {
			// THE LAST PART IS PID
			pid, err := strconv.Atoi(args[len(args)-1])
			if err != nil {
				return 0, fmt.Errorf("failed to parse pid: %s", args[len(args)-1])
			}
			return pid, nil
		}
	}

	return 0, fmt.Errorf("cannot find the mount process for %s", mp)
}

func getProcessUserSid(pid int) (string, error) {
	h, err := windows.OpenProcess(windows.PROCESS_QUERY_INFORMATION, false, uint32(pid))
	if err != nil {
		return "", err
	}
	defer windows.CloseHandle(h)

	var token windows.Token
	err = windows.OpenProcessToken(h, windows.TOKEN_QUERY, &token)
	if err != nil {
		return "", err
	}
	defer token.Close()

	user, err := token.GetTokenUser()
	if err != nil {

View on GitHub (pinned to c9a67b23e8)

Solutions

  1. Verify the mount point is actually mounted by a running `juicefs mount` process (check Task Manager / `tasklist`).
  2. Re-run the command with an explicit PID: pass the PID of the juicefs process instead of the mount point.
  3. Check the mount point spelling/case (e.g. `Z:` vs `Z:\`).
  4. Re-create the mount if it has died, then retry debug.

Example fix

// before
foundPid, err := findMountProcess("Q:\\") // mount is actually on Z:
// after
foundPid, err := findMountProcess("Z:\\") // or: pass pid via flag
Defensive patterns

Strategy: validation

Validate before calling

pid, err := exec.Command("tasklist", "/FI", "IMAGENAME eq juicefs.exe", "/FO", "CSV").Output()
if err != nil || !strings.Contains(string(pid), "juicefs") {
	return fmt.Errorf("no running juicefs mount process found")
}

Type guard

func hasRunningMount(mp string) bool {
	pids, err := processList()
	if err != nil { return false }
	for _, p := range pids {
		if p.CmdLine != "" && strings.Contains(strings.ToLower(p.CmdLine), strings.ToLower(mp)) {
			return true
		}
	}
	return false
}

Try / catch

pid, err := findMountProcess(mp)
if err != nil {
	if strings.Contains(err.Error(), "cannot find the mount process") {
		// fall back to explicit --pid input from the user
	}
	return err
}

Prevention

When it happens

Trigger: Running `juicefs debug` (getCmdMount path) on Windows with a mountpoint argument that no JuiceFS process was started with, or the mount was launched in a way that hides its command line from enumeration.

Common situations: Mount already crashed or was unmounted; user passed a drive letter/path that is mounted by another tool (WinFsp launchctl, SSHFS) rather than juicefs; insufficient privileges to read other processes' command lines.

Related errors


AI-assisted analysis of juicedata/juicefs@c9a67b23e8 (2026-09-06). Data as JSON: /api/errors/3b6cb6db8393efbb. Report an issue: GitHub.