Firefox終了時にformhistory.sqliteを閉じてない?

formhistory.sqliteでロックされているよという例外が投げられちゃう。

Fx終了時にSQLiteファイルのVACUUMとREINDEX - vimpな日々 - vimperatorグループ

これがどうにかならないかと、やってみたこと
Firefoxが終了時に投げる通知の中で最後のもの、xpcom-shutdown(Observer Notifications - MDC)というもの、を受け取ってVACUUMとREINDEXを実行してみた。
しかし、これでも例外が投げられてしまう。もしかすると、formhistory.sqliteFirefoxのプロセスが完全になくなるまでつかみっ放しなのかも。

ちょいと探ってみた

調査対象は

Fx終了時にDBのクローズ処理があるはずだ、という予想のもとに調査。
ソースを読んでいくと、前者は641行目から始まるFxからの通知を受け取る処理の中にプロファイルが失われる直前に呼ばれるprofile-before-changeというトピックを受け取ったらDB接続を切る処理がある。しかし、後者には存在しなかった。後者でクローズ処理をしているのはDBが壊れている場合にバックアップを作成してDBを作り直す処理の部分だけだ。
ロックと接続を切ることは違うのでモヤモヤするけど、この辺りが関係しているのではないかと思う。

結論、開いたら閉じましょう。

追記(2009-05-10)

調査する対象ソースが間違っていて、firefox mozilla/toolkit/components/satchel/src/nsStorageFormHistory.cppを調査すべきだった。今まで調査していたのは次期バージョンのソースだった。
2度書くのは面倒なので以下のリンク参照