{"record":{"id":"a2332b517020ae00","repo":"juicedata/juicefs","slug":"read-s-w","errorCode":null,"errorMessage":"read %s: %w","messagePattern":"read (.+?): %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/mount_unix.go","lineNumber":165,"sourceCode":"\t\t\t\treturn\n\t\t\t}\n\t\t\tlogger.Warnf(\"watchdog: FUSE abort triggered for connection %d, pid %d\", conn, pid)\n\t\t} else if err != nil {\n\t\t\tlogger.Warnf(\"watchdog: failed to parse waiting FUSE requests for connection %d, pid %d: %v; abort not triggered\", conn, pid, err)\n\t\t}\n\t}\n}\n\nfunc loadConfig(path string) (string, *vfs.Config, error) {\n\tfor d := path; d != \"/\"; d = filepath.Dir(d) {\n\t\tdata, err := readConfig(d)\n\t\tif err == nil {\n\t\t\tvar conf vfs.Config\n\t\t\terr = json.Unmarshal(data, &conf)\n\t\t\treturn d, &conf, err\n\t\t}\n\t\tif !os.IsNotExist(err) {\n\t\t\treturn \"\", nil, fmt.Errorf(\"read %s: %w\", d, err)\n\t\t}\n\t}\n\treturn \"\", nil, fmt.Errorf(\"%s is not inside JuiceFS\", path)\n}\n\nfunc printThreadsStack(pid int) {\n\tif pid <= 1 {\n\t\treturn\n\t}\n\tstart := time.Now()\n\ttids, err := os.ReadDir(fmt.Sprintf(\"/proc/%d/task\", pid))\n\tif err != nil {\n\t\tlogger.Warnf(\"list tasks of pid %d: %s\", pid, err)\n\t\treturn\n\t}\n\tvar b strings.Builder\n\tfor _, tid := range tids {\n\t\treadThreadStats(pid, tid.Name(), &b)","sourceCodeStart":147,"sourceCodeEnd":183,"githubUrl":"https://github.com/juicedata/juicefs/blob/c9a67b23e8e08ec23ec331aa6f1675e2319e921c/cmd/mount_unix.go#L147-L183","documentation":"Returned by loadConfig while walking up from a path looking for the JuiceFS .config file: a directory entry named like the config exists but reading it fails with a non-ENOENT error (permission denied, I/O error). The wrapped error identifies the failing directory.","triggerScenarios":"Thrown at cmd/mount_unix.go:165 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Fix read permissions / I/O issues on the reported path so the .config can be read","Remove the corrupt .config file so the mount recreates it"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"c9a67b23e8e08ec23ec331aa6f1675e2319e921c","analyzedAt":"2026-09-06T17:55:48.476Z","contentChangedAt":"2026-09-06T17:55:48.476Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}