Re: Bitcoind

RecvUntilの中で起きているが、まだ何が問題なのか分からない。考えられるのは、ソケットが大量の文字を受信している場合だ。

このirc.cppを試してみてほしい。debug.logが急速に大きくなる可能性があるので、すぐに停止できるようにしておいてほしい。

mmalmi@cc.hut.fi wrote:

debug.logを添付します。

かなり絞り込めました。debug.logにIRCの活動が一切出力されていないので、 RecvUntilを通過できていないのでしょう。目視では明らかな問題は見当たりません。 ConnectSocketかRecvUntilのどちらかに問題があるはずです。

添付のirc.cppとnet.cppで試して、debug.logを送ってください。

あるいは、gdbで実行してThreadIRCSeedをステップ実行することもできます。 gdb —args bitcoin [switches] b ThreadIRCSeed run step またはuでステップオーバーしてルーチンから抜けます。

mmalmi@cc.hut.fi wrote:

getinfoに関係なくエラーが発生します。ThreadIRCSeedをコメントアウトしたら 問題が解決しました。

getinfoを実行しなくても同じ現象が起きますか?

以下に挙げるCreateThreadをコメントアウトして、その後1つずつ有効に戻していき、 再び問題が発生するまで試してみてください。そうすればどのスレッドに問題がある か分かります。

net.cppの// Start threads以下: CreateThread(ThreadIRCSeed, NULL) CreateThread(ThreadSocketHandler, NULL, true) CreateThread(ThreadOpenConnections, NULL) CreateThread(ThreadMessageHandler, NULL)

init.cpp: CreateThread(ThreadRPCServer, NULL);

mmalmi@cc.hut.fi wrote:

送ります。クラッシュ時のエラーメッセージを伝え忘れていました:

terminate called after throwing an instance of ‘std::bad_alloc’ what(): std::bad_alloc

debug.logを送ってもらえますか?

mmalmi@cc.hut.fi wrote:

dddデバッガーで自分のbitcoindビルドのデバッグを試みましたが、まだうまく いっていません。常にシステムのメモリをすべて使い切って、最終的にクラッシュ します。問題が自分のビルドに起因するものか確認したいので、最新の64ビット版 bitcoindのビルドをもう一度送ってもらえますか?

出典:COPA対ライト裁判の証言の一環として、2024年2月にマルッティ・マルミによりGitHubで公開。完全な書簡アーカイブはmmalmi.github.io/satoshi/で閲覧可能。