I've no idea what gets it into this hanging state, but I suspect it's similar to whatever makes it exit immediately on an attempt to attach (#335).
2026-04-24T01:51:17.999829Z INFO ThreadId(01) loading config from "/etc/shpool/config.toml"
2026-04-24T01:51:17.999941Z WARN ThreadId(01) skip reading config file /etc/shpool/config.toml: Os { code: 2, kind: NotFound, message: "No such file or directory" }
2026-04-24T01:51:17.999967Z INFO ThreadId(01) loading config from "~/.config/shpool/config.toml"
2026-04-24T01:51:17.999990Z WARN ThreadId(01) skip reading config file ~/.config/shpool/config.toml: Os { code: 2, kind: NotFound, message: "No such file or directory" }
2026-04-24T01:51:18.000006Z INFO ThreadId(01) starting with config: Config { norc: None, noecho: None, nosymlink_ssh_auth_sock: None, noread_etc_environment: None, nodaemonize: None, nodaemonize_timeout: None, shell: None, env: None, default_dir: None, forward_env: None, initial_path: None, session_restore_mode: None, session_restore_engine: None, output_spool_lines: None, vt100_output_spool_width: None, keybinding: None, prompt_prefix: None, motd: None, motd_args: None }
2026-04-24T01:51:18.000047Z INFO ThreadId(01) new: new
2026-04-24T01:51:18.000115Z INFO ThreadId(01) new:with_debounce: new
2026-04-24T01:51:18.000563Z INFO ThreadId(01) new:with_debounce: close time.busy=424µs time.idle=23.0µs
2026-04-24T01:51:18.000607Z INFO ThreadId(01) new: close time.busy=494µs time.idle=65.9µs
2026-04-24T01:51:18.000625Z INFO ThreadId(01) watch: new
2026-04-24T01:51:18.000799Z INFO ThreadId(03) run: new
2026-04-24T01:51:18.000917Z DEBUG ThreadId(03) run: now Instant { tv_sec: 297353, tv_nsec: 60616937 } select with ddl None
2026-04-24T01:51:18.000989Z DEBUG ThreadId(03) run: addwatch: "/etc/shpool/config.toml"
2026-04-24T01:51:18.002544Z DEBUG ThreadId(03) run: Actually watching /etc, ic Some("shpool")
2026-04-24T01:51:18.002640Z DEBUG ThreadId(03) run: now Instant { tv_sec: 297353, tv_nsec: 62343212 } select with ddl None
2026-04-24T01:51:18.002719Z DEBUG ThreadId(03) run: event: Ok(Event { kind: Access(Open(Any)), paths: ["/etc/passwd.cache"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None })
2026-04-24T01:51:18.002748Z DEBUG ThreadId(03) run: ignore Event { kind: Access(Open(Any)), paths: ["/etc/passwd.cache"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None }
2026-04-24T01:51:18.002763Z DEBUG ThreadId(03) run: rewatch = Some([]), reload = false
2026-04-24T01:51:18.002777Z DEBUG ThreadId(03) run: now Instant { tv_sec: 297353, tv_nsec: 62480442 } select with ddl None
2026-04-24T01:51:18.002790Z DEBUG ThreadId(03) run: event: Ok(Event { kind: Access(Open(Any)), paths: ["/etc/group"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None })
2026-04-24T01:51:18.002804Z DEBUG ThreadId(03) run: ignore Event { kind: Access(Open(Any)), paths: ["/etc/group"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None }
2026-04-24T01:51:18.002826Z DEBUG ThreadId(03) run: rewatch = Some([]), reload = false
2026-04-24T01:51:18.002839Z DEBUG ThreadId(03) run: now Instant { tv_sec: 297353, tv_nsec: 62541885 } select with ddl None
2026-04-24T01:51:18.002717Z INFO ThreadId(01) watch: close time.busy=2.07ms time.idle=14.6µs
2026-04-24T01:51:18.002919Z INFO ThreadId(01) watch: new
2026-04-24T01:51:18.002995Z DEBUG ThreadId(03) run: addwatch: "~/.config/shpool/config.toml"
2026-04-24T01:51:18.003417Z DEBUG ThreadId(03) run: Actually watching ~/.config, ic Some("shpool")
2026-04-24T01:51:18.003496Z DEBUG ThreadId(03) run: now Instant { tv_sec: 297353, tv_nsec: 63198692 } select with ddl None
2026-04-24T01:51:18.003513Z DEBUG ThreadId(03) run: event: Ok(Event { kind: Access(Open(Any)), paths: ["/etc/group.cache.ixgid"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None })
2026-04-24T01:51:18.003529Z DEBUG ThreadId(03) run: ignore Event { kind: Access(Open(Any)), paths: ["/etc/group.cache.ixgid"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None }
2026-04-24T01:51:18.003537Z INFO ThreadId(01) watch: close time.busy=598µs time.idle=19.9µs
2026-04-24T01:51:18.003544Z DEBUG ThreadId(03) run: rewatch = Some([]), reload = false
2026-04-24T01:51:18.003621Z DEBUG ThreadId(03) run: now Instant { tv_sec: 297353, tv_nsec: 63324510 } select with ddl None
2026-04-24T01:51:18.003706Z INFO ThreadId(01) daemon already running on "/run/user/122247/shpool/shpool.socket", no need to autodaemonize
2026-04-24T01:51:18.003753Z INFO ThreadId(01)
======================== STARTING ATTACH ============================
2026-04-24T01:51:18.004912Z INFO ThreadId(01) read daemon version header: VersionHeader { version: "0.3.4" }
2026-04-24T01:51:18.004997Z DEBUG ThreadId(03) run: event: Ok(Event { kind: Access(Open(Any)), paths: ["/etc/group"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None })
2026-04-24T01:51:18.005089Z INFO ThreadId(01) local env keys: ["TERM", "DISPLAY", "LANG", "SSH_AUTH_SOCK"]
2026-04-24T01:51:18.005138Z DEBUG ThreadId(03) run: ignore Event { kind: Access(Open(Any)), paths: ["/etc/group"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None }
2026-04-24T01:51:18.005240Z DEBUG ThreadId(03) run: rewatch = Some([]), reload = false
2026-04-24T01:51:18.005259Z DEBUG ThreadId(03) run: now Instant { tv_sec: 297353, tv_nsec: 64962176 } select with ddl None
2026-04-24T01:51:18.005276Z DEBUG ThreadId(03) run: event: Ok(Event { kind: Access(Open(Any)), paths: ["/etc/group"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None })
2026-04-24T01:51:18.005308Z DEBUG ThreadId(03) run: ignore Event { kind: Access(Open(Any)), paths: ["/etc/group"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None }
2026-04-24T01:51:18.005331Z DEBUG ThreadId(03) run: rewatch = Some([]), reload = false
2026-04-24T01:51:18.005347Z DEBUG ThreadId(03) run: now Instant { tv_sec: 297353, tv_nsec: 65049921 } select with ddl None
2026-04-24T01:51:18.005363Z DEBUG ThreadId(03) run: event: Ok(Event { kind: Access(Open(Any)), paths: ["/etc/group"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None })
2026-04-24T01:51:18.005378Z DEBUG ThreadId(03) run: ignore Event { kind: Access(Open(Any)), paths: ["/etc/group"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None }
2026-04-24T01:51:18.005392Z DEBUG ThreadId(03) run: rewatch = Some([]), reload = false
2026-04-24T01:51:18.005404Z DEBUG ThreadId(03) run: now Instant { tv_sec: 297353, tv_nsec: 65107070 } select with ddl None
2026-04-24T01:51:18.005421Z DEBUG ThreadId(03) run: event: Ok(Event { kind: Access(Open(Any)), paths: ["/etc/group"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None })
2026-04-24T01:51:18.005437Z DEBUG ThreadId(03) run: ignore Event { kind: Access(Open(Any)), paths: ["/etc/group"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None }
2026-04-24T01:51:18.005454Z DEBUG ThreadId(03) run: rewatch = Some([]), reload = false
2026-04-24T01:51:18.005466Z DEBUG ThreadId(03) run: now Instant { tv_sec: 297353, tv_nsec: 65169239 } select with ddl None
2026-04-24T01:51:18.005478Z DEBUG ThreadId(03) run: event: Ok(Event { kind: Access(Open(Any)), paths: ["/etc/group"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None })
2026-04-24T01:51:18.005492Z DEBUG ThreadId(03) run: ignore Event { kind: Access(Open(Any)), paths: ["/etc/group"], attr:tracker: None, attr:flag: None, attr:info: None, attr:source: None }
…
AI Policy Ack
Ack.
What happened
Sometimes shpool just hangs (forever) when I try to attach.
What I expected to happen
It should attach, not hang.
To Reproduce
shpool attach FooI've no idea what gets it into this hanging state, but I suspect it's similar to whatever makes it exit immediately on an attempt to attach (#335).
Version info
shpool 0.9.5 (cl/902926829)
Logs
(that repeats forever)