RecvUntilの中で起きているが、まだ何が問題なのか分からない。考えられるのは、ソケットが大量の文字を受信している場合だ。
このirc.cppを試してみてほしい。debug.logが急速に大きくなる可能性があるので、すぐに停止できるようにしておいてほしい。
マルッティ・マルミのメール(2010年3月3日12:32 UTC)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でステップオーバーしてルーチンから抜ける。
サトシ・ナカモトのメール(2010年3月3日03:54 UTC)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);
マルッティ・マルミのメール(2010年3月3日01:50 UTC)送ります。クラッシュ時のエラーメッセージを伝え忘れていました:
terminate called after throwing an instance of ‘std::bad_alloc’ what(): std::bad_alloc
debug.logを送ってもらえるかな?
サトシ・ナカモトのメール(2010年3月2日22:27 UTC)dddデバッガーで自分のbitcoindビルドのデバッグを試みましたが、まだうまくいっていないです。 常にシステムのメモリーをすべて使い切って、最終的にクラッシュしてしまいます。 問題が自分のビルドに起因するものか確認したいので、最新の64ビット版bitcoindのビルドをもう一度送ってもらえますか?