追踪 Zsh 历史记录丢失 Bug:最终靠让它崩溃来找出真相
来源:michael.stapelberg.ch — 2026-08-09
📋 概述
Michael Stapelberg 多年间偶发发现自己明明执行过的命令从 ~/.zsh_history 中消失,Ctrl+R 搜不到。他一步步用 inotify、fatrace、strace、bpftrace 追踪行为,却始终难定位,最终获胜策略是给 Zsh 打补丁让它崩溃发出响亮错误,再分析崩溃核心转储。Zsh 5.9.2(2026-07-12 发布)已包含修复。文章末尾还讨论了导出 HISTFILE 的额外陷阱,以及 AI 能否在'症状+行为追踪'提示下找出该 bug。
🔑 核心要点
- 多年偶发出现已执行命令从 ~/.zsh_history 丢失、Ctrl+R 搜不到的问题。
- 依次使用 inotify、fatrace、strace、bpftrace 追踪行为,均难以稳定复现定位。
- 最终制胜策略是给 Zsh 打补丁让它崩溃并分析核心转储。
- Zsh 5.9.2 已修复该数据丢失问题,附上游修复链接与调试细节。
- 还讨论了导出 HISTFILE 的额外陷阱,以及 AI 参与定位该 bug 的实验评估。
💡 金句
有时为了让隐藏的 bug 现形,你得先逼它大声喊出来。
👍 0
👎 0
← 返回 Lobsters 首页