Re: Linux - デッドソケット問題

何が起こったか分かった。すべてのソケットが何らかの理由でデッドになった。ネットワークとの通信がなかったのに、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 を添付しています。

NewLibertyStandardのメール(2009年11月10日 06:45 UTC)

Linux ビルドは過去 20時間でかなりの量の Bitcoin を生成しましたし、 データベースエラーについてのお話を信じているので、今後は Linux ビルドを 実行する方向に向かっています。Linux ビルドの唯一のちょっと困った点は、 コンピューターのファンが 50%から 100%になったことです。:-P CPU を制限 できることは分かっているので、あまりにも気になって少ない Bitcoin 生成で済ませるなら、そうするかもしれません。あるいは、もっと音楽を 聴き始めるべきかもしれません…

               未確認の状態でシャットダウンしてもリスクはない。トランザクションや新しいブロックを作成すると、すぐにネットワークにブロードキャストされる。
               その後の確認数/#の増加は結果を監視しているだけだ。
               その間にあなたのノードが承認を促進するために何かをすることはない。

原典の外部ソース

https://mmalmi.github.io/satoshi/
2024 年 2 月、COPA 対ライト裁判の証言の一環として GitHub で公開

他の外部ソース