かってきままな日々
2022-01-15 (Sa) [長年日記]
_ pgtk デバッグ
負荷高い状態で fido-mode 使って C-h v を使うと、 時々文字がダブる、ってことで…
font-wei
って入力したつもりが fofont-wei
になる。
負荷でキーリピートが効いてしまったんじゃね? とも考えたんだけど、
キーリピートではこうはならないんだよね。foont-wei
にはなるかもしれんが。
デバッグモードでビルドするとなりやすい、ってことで…
- デバッグモードでビルド
- root 権限で
while :; do true; done &
を 16個実行 - emacs -Q を起動
- M-x fido-mode
- C-h v
- 素早く font-weight-table と入力してみる。何度かやってみる
「root 権限で」ってのは、&
が付いてるので、
一般ユーザ権限だと勝手に nice されてしまって、影響が小さくなってしまうんだよね。
これで、確かに2つの文字が二重に入力されてしまうことがあるのが確認できた。
デバッグしていって、pgtkterm.c のイベントキューの処理まで行ったんだけど、 そこでかなり悩んだ。二重に key buffer に送るなんて、そんなことあるわけがない…
あるとすれば longjmp? printf を突っ込んだところ、確かにそれっぽい動作をしている。 longjmp すると、イベントが処理されてないことになってしまう。
いつ longjmp してもいいように、キューの状態をちゃんと変えてやることで回避。
wanderlust 練習のためパッチを wanderlust で送ってみた。