astrid-runtime/astrid · error
detached FUSE service exited after readiness
Error message
detached FUSE service exited after readiness: {status} What it means
Readiness follow-up check in require_service_running_after_handoff: the detached FUSE service process exited after it had reported readiness (status in message), so the mount cannot be considered live and any pending error context is attached.
Solutions
- Read the stderr snippet in the error for the crash cause
- Retry the mount after fixing the underlying service failure
- Check for FUSE kernel/mountpoint problems that kill the service post-handshake
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at crates/astrid-storage-provider-fuse/src/main.rs:664 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of astrid-runtime/astrid@affd8760f4 (2026-09-09).
Data as JSON: /api/errors/9e9ca8e54e089120.
Report an issue: GitHub.
Appendix: source
Thrown at crates/astrid-storage-provider-fuse/src/main.rs:664
Ok(Ok(bytes)) => bounded_stderr_snippet(&bytes),
Ok(Err(_)) | Err(_) => String::new(),
};
let status_context = format!("detached FUSE service status: {status:?}");
if stderr.is_empty() {
Err(error.context(status_context))
} else {
Err(error.context(format!("{status_context}; stderr: {stderr}")))
}
},
}
}
async fn require_service_running_after_handoff(
child: &mut tokio::process::Child,
) -> Result<()> {
match child.try_wait() {
Ok(None) => Ok(()),
Ok(Some(status)) => bail!("detached FUSE service exited after readiness: {status}"),
Err(error) => {
let _ = child.kill().await;
let status = child.wait().await;
Err(anyhow::Error::new(error)
.context("inspect detached FUSE service after stderr sink handoff")
.context(format!("detached FUSE service status: {status:?}")))
},
}
}
async fn read_service_startup(
child: &mut tokio::process::Child,
launch: &ServiceLaunch,
control_path: &Path,
) -> Result<ControlReady> {
let mut stdin = child
.stdin
.take()View on GitHub (pinned to affd8760f4)