Martti Malmi 通信

回复:Bitcoind

中本聪 · 2010 年 3 月 3 日

SN-10159 附来源、原文与上下文。

阅读语言

这样就把范围缩小了很多。debug.log 中没有打印任何 IRC 活动,所以我猜它应该还没通过 RecvUntil。粗看没有发现明显问题。我想问题只能出在 ConnectSocket 或 RecvUntil 中。

That narrows it down a lot. It didn't print any IRC activity in debug.log, so I guess it couldn't have gotten past the RecvUntil. Eyeballing it I don't see anything obvious. I guess it would have to be either in ConnectSocket or RecvUntil.

试试附件中的 irc.cpp 和 net.cpp,然后把 debug.log 发给我。

Try it with the attached irc.cpp and net.cpp and send me the debug.log.

或者你可以在 gdb 中运行它,逐步执行 ThreadIRCSeed gdb --args bitcoin [switches] b ThreadIRCSeed run step 或者用 u 单步跳过,并退出子程序。

Or you could run it in gdb and step through ThreadIRCSeed gdb --args bitcoin [switches] b ThreadIRCSeed run step or u to step over and up out of routines.

引用 Martti Malmi 的文字Martti Malmi来源 ↗

不管是否执行 getinfo,我都会遇到这个错误。注释掉 ThreadIRCSeed 后,问题就解决了。

I get the error regardless of the getinfo. Commenting out ThreadIRCSeed fixed the problem.

引用中本聪此前的文字中本聪来源 ↗

如果你不执行 getinfo,它还会这样吗?

Does it still do it if you didn't do getinfo?

你可以把下面列出的 CreateThread 调用注释掉,然后逐个重新启用,直到它再次出问题。这样我们就知道问题在哪个线程里了。

You could comment out the CreateThreads listed below, then re-enable them one at a time until it does it again. Then we would know which thread the problem is in.

net.cpp 中,// Start threads 下方 CreateThread(ThreadIRCSeed, NULL) CreateThread(ThreadSocketHandler, NULL, true) CreateThread(ThreadOpenConnections, NULL) CreateThread(ThreadMessageHandler, NULL)

net.cpp, under // Start threads CreateThread(ThreadIRCSeed, NULL) CreateThread(ThreadSocketHandler, NULL, true) CreateThread(ThreadOpenConnections, NULL) CreateThread(ThreadMessageHandler, NULL)

init.cpp: CreateThread(ThreadRPCServer, NULL);

init.cpp: CreateThread(ThreadRPCServer, NULL);

引用 Martti Malmi 的文字Martti Malmi来源 ↗

发来了。我忘了说崩溃时的错误消息:

Here goes. I forgot to mention the crash error message:

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

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

引用中本聪此前的文字中本聪来源 ↗

能把 debug.log 发给我吗?

Could you send me the debug.log?

引用 Martti Malmi 的文字Martti Malmi来源 ↗

我试着用 ddd 调试器调试自己编译的 bitcoind,但还没取得多少进展。它总会占满系统的全部内存,最后崩溃。能否请你再次把最新的 64 位 bitcoind 构建发给我,让我看看问题是否出在自己编译的版本上?

I tried debugging my build of bitcoind with ddd debugger, but didn't have much success yet. It always ends up taking all the system's memory and finally crashes. Could you please send me again the latest 64 bit build of bitcoind, so I can see if the problem is about my build?

来源

阅读字号

选择适合你的字号,之后阅读会继续使用。