dmtrKovalenko / dmtrKovalenko/fff

[Bug]: FFF segfaults when launching neovim from a deleted directory.

Open
#672 9 comments 0 reactions 0 assignees View on GitHub
bug
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.