{"record":{"id":"c2fd6dc3a02eb08d","repo":"astrid-runtime/astrid","slug":"macos-did-not-activate-an-astridfs-mount-at","errorCode":null,"errorMessage":"macOS did not activate an astridfs mount at {}","messagePattern":"macOS did not activate an astridfs mount at (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/astrid-storage-provider-fskit/src/main.rs","lineNumber":491,"sourceCode":"    validate_mountpoint_layout(mountpoint)?;\n    validate_mountpoint_ancestors(mountpoint)?;\n    astrid_core::platform_fs::verify_no_redirects(mountpoint)\n        .with_context(|| format!(\"reject redirected mountpoint {}\", mountpoint.display()))?;\n    astrid_core::platform_fs::validate_private_directory(mountpoint)\n        .with_context(|| format!(\"reject unsafe mountpoint {}\", mountpoint.display()))?;\n    if std::fs::read_dir(mountpoint)?.next().is_some() {\n        bail!(\"mountpoint is not empty: {}\", mountpoint.display());\n    }\n    Ok(())\n}\n\nfn validate_mounted_mountpoint(mountpoint: &Path) -> Result<()> {\n    validate_mountpoint_layout(mountpoint)?;\n    validate_mountpoint_ancestors(mountpoint)?;\n    astrid_core::platform_fs::verify_no_redirects(mountpoint)\n        .with_context(|| format!(\"reject redirected mountpoint {}\", mountpoint.display()))?;\n    if !native_mount_is_active(mountpoint)? {\n        bail!(\n            \"macOS did not activate an astridfs mount at {}\",\n            mountpoint.display()\n        );\n    }\n    Ok(())\n}\n\n#[cfg(unix)]\nfn validate_mountpoint_ancestors(mountpoint: &Path) -> Result<()> {\n    use std::os::unix::fs::MetadataExt as _;\n\n    let mut ancestor = mountpoint.parent();\n    while let Some(path) = ancestor {\n        let metadata = std::fs::symlink_metadata(path)\n            .with_context(|| format!(\"inspect mountpoint ancestor {}\", path.display()))?;\n        let mode = metadata.mode();\n        if mode & 0o022 != 0 && mode & 0o1000 == 0 {\n            bail!(","sourceCodeStart":473,"sourceCodeEnd":509,"githubUrl":"https://github.com/astrid-runtime/astrid/blob/affd8760f44190dbdfbec23403f4c4b642c33112/crates/astrid-storage-provider-fskit/src/main.rs#L473-L509","documentation":"After issuing the native macOS mount command, validate_mounted_mountpoint() re-checks that the filesystem actually activated at the path via native_mount_is_active(); if the OS did not report an active astridfs mount there, the provider bails rather than claiming success on a silent mount failure.","triggerScenarios":"Called from mount() right after running the native mount command, and from the round-trip test; fires when the mount command exited 0 but the mount never appeared — daemon crashed after handshake, mountpoint got swapped, or activation was reversed before the check.","commonSituations":"fskit daemon killed by sandbox policy after accepting the mount; macOS unmounting the volume immediately due to conflicting mount flags; the mountpoint path changed between command and validation; slow activation racing the immediate validation.","solutions":["Check macOS logs (console/fskitd/diskimages-helper) for why the mount did not activate.","Verify with `mount` that the astridfs volume is absent, fix the daemon/entitlement problem, and retry the mount.","Ensure the mountpoint was not replaced or symlinked between command and validation.","Retry the mount if activation is slow; if it fails deterministically, reinstall matched kernel/provider versions."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"if let Err(e) = validate_mounted_mountpoint(&mountpoint) {\n    if e.to_string().contains(\"did not activate an astridfs mount\") {\n        // inspect macOS logs, retry mount once after a short delay, else fail loudly\n    }\n}","preventionTips":["Keep the fskit daemon and its entitlements healthy; monitor for crashes.","After mount, allow a brief settle delay before asserting activation in tests.","Ensure the mountpoint path is not replaced or symlinked during the mount sequence.","Pin kernel and daemon versions together so activation semantics do not drift."],"tags":["macos","fskit","mount-activation","native-mount"],"backgroundTag":"unsupported-operation","analyzedSha":"affd8760f44190dbdfbec23403f4c4b642c33112","analyzedAt":"2026-09-09T21:28:12.402Z","contentChangedAt":"2026-09-09T21:28:12.402Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}