linux-0.1.6-test5 が Liberty のゾンビソケット問題を解決した。MSG_DONTWAIT が根本原因を修正し、スレッドの終了と再起動は必要ない。ソケットは既にノンブロッキングとしてマークされているので、なぜこうなるのか理解できない。忘れたのかもしれない。ソケットが失敗して OS が閉じたら、ノンブロッキングだったことを覚えているものは何もなくなると考えられるが、閉じたハンドルにアクセスすればすぐにエラーを返すはずだ。Windows には MSG_DONTWAIT がなく、ソケットをノンブロッキングとしてマークするのが唯一の方法なので、Wine で Windows 版を実行する場合はスレッドの終了に頼る必要がある。
現在の唯一の問題は彼が得ている DB 例外だ。
EXCEPTION: 11DbException Db::open: Bad file descriptor bitcoin in ThreadMessageHandler()
EXCEPTION: 11DbException Db::close: Bad file descriptor bitcoin in ThreadMessageHandler()
これは Wine の問題だと予想していたが、Linux でも同様に出ている。datadir を別のドライブに移動しても改善しなかった。私は一度も出たことがない。大量のアクティビティと DB アクセスを継続的に生成するストレステストを実行しているが、出たことがない。
彼は Ubuntu 64 ビットで、私は 32 ビットなので、それが違いだと推測している。あなたの Linux マシンは 64 ビットか、32 ビットか?DB 例外が出たことはあるか?(db.log も確認してくれ。)test5 でゾンビ問題が修正されたので、あなたの Linux マシンで実行を始めてもらえるか?ここで何に対処しているのか、より良く把握するために 3 票目が欲しいところだ。DB 例外はキャッチされないので、出るとプログラムが停止する。
ちなみに、Zetaboards は「Member #」を表示することにこだわっているので、早めにサインアップして良いアカウント番号を確保しておくといい。