致命的な問題ではないが、datadirオプションにピリオド(カレントディレクトリ)以外のものを指定すると、コンソールとdebug.logに必ず以下のエラーメッセージが出るのが不思議だ。Arch Linuxのターミナルのセッションでbitcoindを使っている。GUIはまったく使っていない(SSH経由でアクセスするヘッドレスのマシンだ)。
コンソールの出力:
EXCEPTION: 22DbRunRecoveryException DbEnv::open: DB_RUNRECOVERY: Fatal error, run database recovery bitcoin in AppInit()
terminate called after throwing an instance of ‘DbRunRecoveryException’ what(): DbEnv::open: DB_RUNRECOVERY: Fatal error, run database recovery
datadir内のdebug.logの出力:
Bitcoin version 0.3.4.0 beta Default data directory /home/psyvenrix/.bitcoin Bound to port 8333 Loading addresses… dbenv.open strLogDir=./datadir2/database strErrorFile=./datadir2/db.log
EXCEPTION: 22DbRunRecoveryException DbEnv::open: DB_RUNRECOVERY: Fatal error, run database recovery bitcoin in AppInit()
これはSVNのビルドだ。メインサイトのtar.gzはopenssl 0.9.8あたりにリンクされていると思うが、私のArch Linuxのシステムは1.0.0だと思うので、最新のSVNソースを取ってきてビルドした(Makefileを少しいじった以外は、問題なくコンパイルできた)。
バイナリのあるディレクトリと上のdatadirの両方のパーミッションを確認したが、どちらも私のログインユーザーで書き込める(裏でACL/SELinuxの仕掛けもない)。
ビットコインを使い始めたばかりなので、そのディレクトリの中身が新規生成されたもの(つまり、すべてをrm -rfしてから、存在しない新しいディレクトリでbitcoindを起動し、必要なファイルが作られるのを確認したあとにクラッシュする)なのに、リカバリ系のエラーが出るのは不思議だ。
誰か、何か心当たりはない?