かなり絞り込めた。debug.log に IRC の活動が一切出力されていないので、RecvUntil を通過できていないのだろう。目視では明らかな問題は見当たらない。ConnectSocket か RecvUntil のどちらかに問題があるはずだ。
添付の irc.cpp と net.cpp で試して、debug.log を送ってほしい。
あるいは、gdb で実行して ThreadIRCSeed をステップ実行することもできる。
gdb --args bitcoin [switches]
b ThreadIRCSeed
run
step
または u でステップオーバーしてルーチンから抜ける。
マルッティ・マルミのメール(2010年3月3日 01:50 UTC)getinfo に関係なくエラーが発生します。ThreadIRCSeed をコメントアウトしたら 問題が解決しましたよ。
サトシ・ナカモトのメール(2010年3月2日 22:27 UTC)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);
マルッティ・マルミのメール(2010年3月2日 19:36 UTC)送ります。クラッシュ時のエラーメッセージを伝え忘れていました:
terminate called after throwing an instance of ‘std::bad_alloc’ what(): std::bad_alloc
サトシ・ナカモトのメール(2010年2月28日 20:09 UTC)debug.log を送ってもらえるか?
マルッティ・マルミのメール(2010年2月28日 04:12 UTC)ddd デバッガーで自分の bitcoind ビルドのデバッグを試みましたが、まだうまくいっていないです。 常にシステムのメモリーをすべて使い切って、最終的にクラッシュしてしまいます。 問題が自分のビルドに起因するものか確認したいので、最新の 64 ビット版 bitcoind のビルドをもう一度送ってもらえますか?