dmtrKovalenko / dmtrKovalenko/fff
[Bug]: FFF segfaults when launching neovim from a deleted directory.
- Dominant language
- Rust
- Stars
- 10.7k
- Forks
- 446
- Avg merge
- 1d 21h
- Merged PRs (30d)
- 39
Description
### Which fff frontend?
Neovim plugin (fff.nvim)
### has logs
```
2026-06-27T10:19:04.124407Z INFO ThreadId(02) fff_search::log: FFF tracing initialized: /home/karim/.local/state/nvim/logs/fff+1782555544+34397.log (pid=34397, retain_runs=20)
2026-06-27T10:19:04.124456Z INFO ThreadId(02) open_env{db_path="/home/karim/.cache/nvim/fff_nvim"}: fff_search::dbs::lmdb: new
2026-06-27T10:19:04.124642Z INFO ThreadId(02) open_env{db_path="/home/karim/.cache/nvim/fff_nvim"}: fff_search::dbs::lmdb: close time.busy=176µs time.idle=8.59µs
2026-06-27T10:19:04.124767Z INFO ThreadId(02) fff_nvim: Frecency database initialized at /home/karim/.cache/nvim/fff_nvim
2026-06-27T10:19:04.124777Z INFO ThreadId(02) open_env{db_path="/home/karim/.local/share/nvim/fff_queries"}: fff_search::dbs::lmdb: new
2026-06-27T10:19:04.124929Z INFO ThreadId(02) open_env{db_path="/home/karim/.local/share/nvim/fff_queries"}: fff_search::dbs::lmdb: close time.busy=147µs time.idle=4.06µs
2026-06-27T10:19:04.125054Z INFO ThreadId(02) fff_nvim: Query tracker database initialized at /home/karim/.local/share/nvim/fff_queries
2026-06-27T10:19:04.125108Z INFO ThreadId(02) fff.trace{trace_id="9b62b9d694f8de20" label="picker"}: fff_search::log: new
2026-06-27T10:19:04.125114Z INFO ThreadId(02) fff_search::file_picker: Spawning background threads: base_path=/home/karim, warmup=true, content_indexing=true, mode=Neovim
2026-06-27T10:19:04.126254Z WARN fff-scan fff.trace{trace_id="9b62b9d694f8de20" label="picker"}: fff_search::file_picker: No git repository found for path: /home/karim
2026-06-27T10:19:04.126288Z INFO fff-scan fff.trace{trace_id="9b62b9d694f8de20" label="picker"}:walk_filesystem: fff_search::file_picker: new
2026-06-27T10:19:04.126293Z INFO fff-scan fff.trace{trace_id="9b62b9d694f8de20" label="picker"}:walk_filesystem: fff_search::file_picker: SCAN: Starting filesystem walk and git status (async)
2026-06-27T10:19:04.128031Z INFO fff-scan fff.trace{trace_id="9b62b9d694f8de20" label="picker"}:walk_filesystem:walker_run: fff_search::file_picker: new
2026-06-27T10:19:04.378043Z INFO fff-scan fff.trace{trace_id="9b62b9d694f8de20" label="picker"}:walk_filesystem:walker_run: fff_search::file_picker: close time.busy=250ms time.idle=15.4µs
2026-06-27T10:19:04.378067Z INFO fff-scan fff.trace{trace_id="9b62b9d694f8de20" label="picker"}:walk_filesystem: fff_search::file_picker: SCAN: File walking completed in 250.042382ms for 39198 files
2026-06-27T10:19:04.432300Z INFO fff-scan fff.trace{trace_id="9b62b9d694f8de20" label="picker"}:walk_filesystem: fff_search::file_picker: SCAN: Walk completed in 306.003354ms (39198 files, 3693 dirs, chunked_store=0.77MB, files_vec=3.59MB, dirs=0.34MB, FileItem=96B)
2026-06-27T10:19:04.432336Z INFO fff-scan fff.trace{trace_id="9b62b9d694f8de20" label="picker"}:walk_filesystem: fff_search::file_picker: close time.busy=306ms time.idle=5.89µs
2026-06-27T10:19:04.432351Z INFO fff-scan fff.trace{trace_id="9b62b9d694f8de20" label="picker"}:run_post_scan{warmup=true indexing=true}: fff_search::scan: new
2026-06-27T10:19:05.766708Z INFO fff-scan fff.trace{trace_id="9b62b9d694f8de20" label="picker"}:run_post_scan{warmup=true indexing=true}: fff_search::scan: close time.busy=1.33s time.idle=4.99µs
2026-06-27T10:19:05.766748Z INFO fff-scan fff.trace{trace_id="9b62b9d694f8de20" label="picker"}: fff_search::background_watcher: Initializing background watcher for path: /home/karim, mode: Neovim
2026-06-27T10:19:05.891164Z INFO fff-scan fff.trace{trace_id="9b62b9d694f8de20" label="picker"}: fff_search::background_watcher: File watcher initialized for 4085 directories (NonRecursive) under /home/karim (aborted_early=false)
2026-06-27T10:19:05.891185Z INFO fff-scan fff.trace{trace_id="9b62b9d694f8de20" label="picker"}: fff_search::background_watcher: Background file watcher initialized successfully
```
### Description
It's not a big issue to begin with. However, I'll report it nonetheless.
steps:
- `mkdir test`
- `cd test`
- `rmdir test` (in another terminal.)
- Launch nvim, FFF will segfault.
Small side note:
The log path is `~/.local/state/nvim/logs` not `~/.local/state/nvim/log`
Thanks for the plugin!
Contributor guide
No contributing guide indexed for this repository
Research direction
Reproduce the listed mkdir, cd, and rmdir sequence before launching Neovim. Start with the fff_search::file_picker filesystem walk and background_watcher initialization shown in the log; done means FFF launches without a segfault when its working directory has been deleted.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- neovim, rust
- Domain
- tooling
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100