ソケットがエラーを起こしても切断されない可能性のあった箇所をいくつか修正した。接続が再びデッドになった場合、切断して再接続するようになるはずだ。フォールバックとして非活動タイムアウトも実装した。
初期ブロックダウンロードの遅さに対する部分的な修正も含まれている。
追加したdebug.log情報を得るために、「-debug」スイッチを付けて実行してくれ。問題がさらにある場合に役立つ。
linux-0.1.6-test2.tar.bz2 12,134,012バイト
ダウンロード:
http://rapidshare.com/files/305231818/linux-0.1.6-test2.tar.bz2.html
何が起こったか分かった。すべてのソケットが何らかの理由でデッドになった。 ネットワークとの通信がなかったのに、8つのゾンビ接続があったため、まだオンラインだと 思い込んでブロックの生成を続けていた。これが起きている時は、ブロックが他の人の ブロックが間に入ることなく連番になっていることで分かる:2/unconfirmed 3/unconfirmed 4/unconfirmed 5/unconfirmed 6 blocks 7 blocks
6ブロック連続であなただけがブロックを見つけるというのは現実的ではない。
終了して再起動した時、接続してあなたがいない間にネットワークが見つけた45ブロックをダウンロードした。 あなたのブロックはすぐにネットワークにブロードキャストされなかったため、ネットワークはそれらなしで進んだ。
Wine上でもまったく同じ問題があったようだな。Linuxのソケットハンドリングに何かがあり、いずれの場合もそれが影響しているようだ。
調査を始める。 最終的に問題の根本原因を見つけられない場合は、メッセージの不在を監視して切断する何らかのメカニズムを作る必要がある。 今のところの回避策は、より頻繁に終了して再起動することだけだ。
あなたのノード接続のうち1つを除いてすべてが同時にデッドになり、1つがその少し後にデッドになった。IRCはまだ動いていたので、インターネットからオフラインになったわけではない。
ブロックのステータスは熟成まで「#/unconfirmed」と表示すべきだろうか(119/unconfirmedから120 blocksへ)。 ブロックについては、数字の意味がトランザクションほど強くない。
自分自身のブロックを確認としてカウントしないようにすることは改善になると思う。 欠点は、異なるノードで表示されるステータス番号が一致しなくなることだ。 ステータス番号はブロックの熟成カウントダウンとも連動しなくなる。 より軽い選択肢としては、すべての確認が自分自身のものである場合のみ特別扱いすることだ。
NewLibertyStandardのメール(2009年11月10日15:10 UTC)熟成中のコインを6セットも失った ! 熟成中のビットコインが10セットあった。 最後のセットは0:22頃に生成されたものだ。 ビットコインが固まる前に2/未確認まで進んでいた。10:10の時点で、0:22に生成されたビットコインはまだ2/未確認のままだった。 あなたがコインを失うことはないと言ってくれていたので、ビットコインを終了して再起動した。 よかった点として、終了も起動も非常に滑らかだった。 しかし残念なことに、ブロックが更新された時に、6セット分のビットコインを失った。4セットはまだ未確認だったが、2セットは確認済みだった。 そして、そのどれもが跡形もなく消えている。 「Show Generated Coins」オプションが使えるようになった今、失敗したビットコイン生成も戻してくれるといいかもしれない。 あのビットコインたちが煙のように消えてしまったというのが、とにかく気に入らない。 今のところまだLinuxビルドを動かしているが、直近24時間に生成した10セットのうち6セットが消えた今、Wine版が急に魅力的に見え始めている。debug.logを添付した。
2009年11月10日午前1:45、Liberty Standard <newlibertystandard@gmail.com mailto:newlibertystandard@gmail.com> の書き込み:
Linuxビルドはこの20時間でビットコインを十分な量生成できているし、データベースエラーについてのあなたの説明も信じているので、今後はLinuxビルドを使い続けるつもりだ。 Linuxビルドで少し困った点が一つあって、ファンが50%から100%に上がってしまった。:-P CPU制限はかけられると分かっているので、耐えられなくなって生成量の減少を許容できるなら、そのうちCPU制限をかけるかもしれない。 あるいは、もっと音楽を聴くことにすべきかもしれない……
未確認の状態でシャットダウンしてもリスクはない。 トランザクションや新しいブロックを作成すると、すぐにネットワークにブロードキャストされる。その後の 確認数/#の増加は結果を監視しているだけだ。 その間にあなたのノードが承認を促進するために 何かをすることはない。
