본문으로 건너뛰기

이메일 #186 - #190

원본 출처: Satoshi - Sirius emails 2009-2011

이메일 #186

Date: Fri, 05 Mar 2010 00:54:40 +0000
From: Satoshi Nakamoto <[email protected]>
Subject: Re: Bitcoind
To: [email protected]

영어 원문

Actually, please try this instead, this is more correct:

void ParseString(const string& str, char c, vector<string>& v)
{
string::size_type i1 = 0;
string::size_type i2;
loop
{
i2 = str.find(c, i1);
if (i2 == str.npos)
{
v.push_back(str.substr(i1));
return;
}
v.push_back(str.substr(i1, i2-i1));
i1 = i2+1;
}
}



Satoshi Nakamoto wrote:
> It's in util.c ParseString. I'm guessing the problem is incompatibility
> between the type "unsigned int" and the type of str.npos, which is
> size_type.
>
> Try changing the two "unsigned int"s to "size_type".
>
> old:
> void ParseString(const string& str, char c, vector<string>& v)
> {
> unsigned int i1 = 0;
> unsigned int i2;
> do
> {
> i2 = str.find(c, i1);
> v.push_back(str.substr(i1, i2-i1));
> i1 = i2+1;
> }
> while (i2 != str.npos);
> }
>
> new:
> void ParseString(const string& str, char c, vector<string>& v)
> {
> size_type i1 = 0;
> size_type i2;
> do
> {
> i2 = str.find(c, i1);
> v.push_back(str.substr(i1, i2-i1));
> i1 = i2+1;
> }
> while (i2 != str.npos);
> }
>
>
> [email protected] wrote:
>> Here's another test run debug.log I got when debugging with gdb. The
>> program started eating memory after the debug line "irc 8" and within
>> a few seconds crashed with "terminate called after throwing an
>> instance of 'std::bad_alloc'".
>>
>>> It's in RecvUntil, but I still can't see anything wrong with it. The
>>> only thing I can think of is if the socket is receiving a spew of
>>> characters.
>>>
>>> Try this irc.cpp. debug.log may grow rapidly so be ready to kill it.
>>>
>>> [email protected] wrote:
>>>> debug.log attached
>>>>
>>>>> 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.
>>>>>
>>>>> Try it with the attached irc.cpp and net.cpp and send me the
>>>>> debug.log.
>>>>>
>>>>> 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.
>>>>>
>>>>> [email protected] wrote:
>>>>>> I get the error regardless of the getinfo. Commenting out
>>>>>> ThreadIRCSeed fixed the problem.
>>>>>>
>>>>>>> Does it still do it if you didn't do getinfo?
>>>>>>>
>>>>>>> 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, under // Start threads
>>>>>>> CreateThread(ThreadIRCSeed, NULL)
>>>>>>> CreateThread(ThreadSocketHandler, NULL, true)
>>>>>>> CreateThread(ThreadOpenConnections, NULL)
>>>>>>> CreateThread(ThreadMessageHandler, NULL)
>>>>>>>
>>>>>>> init.cpp:
>>>>>>> CreateThread(ThreadRPCServer, NULL);
>>>>>>>
>>>>>>> [email protected] wrote:
>>>>>>>> Here goes. I forgot to mention the crash error message:
>>>>>>>>
>>>>>>>> terminate called after throwing an instance of 'std::bad_alloc'
>>>>>>>> what(): std::bad_alloc
>>>>>>>>
>>>>>>>>> Could you send me the debug.log?
>>>>>>>>>
>>>>>>>>> [email protected] wrote:
>>>>>>>>>> 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?
>>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>
>>>>
>>>>
>>
>>
>>
>
>

이메일 #187

Date: Fri, 05 Mar 2010 03:33:34 +0200
From: [email protected]
To: Satoshi Nakamoto <[email protected]>
Subject: Re: Bitcoind

영어 원문

Great! Works fine now.

> Actually, please try this instead, this is more correct:
>
> void ParseString(const string& str, char c, vector<string>& v)
> {
> string::size_type i1 = 0;
> string::size_type i2;
> loop
> {
> i2 = str.find(c, i1);
> if (i2 == str.npos)
> {
> v.push_back(str.substr(i1));
> return;
> }
> v.push_back(str.substr(i1, i2-i1));
> i1 = i2+1;
> }
> }
>
>
>
> Satoshi Nakamoto wrote:
>> It's in util.c ParseString. I'm guessing the problem is
>> incompatibility between the type "unsigned int" and the type of
>> str.npos, which is size_type.
>>
>> Try changing the two "unsigned int"s to "size_type".
>>
>> old:
>> void ParseString(const string& str, char c, vector<string>& v)
>> {
>> unsigned int i1 = 0;
>> unsigned int i2;
>> do
>> {
>> i2 = str.find(c, i1);
>> v.push_back(str.substr(i1, i2-i1));
>> i1 = i2+1;
>> }
>> while (i2 != str.npos);
>> }
>>
>> new:
>> void ParseString(const string& str, char c, vector<string>& v)
>> {
>> size_type i1 = 0;
>> size_type i2;
>> do
>> {
>> i2 = str.find(c, i1);
>> v.push_back(str.substr(i1, i2-i1));
>> i1 = i2+1;
>> }
>> while (i2 != str.npos);
>> }
>>
>>
>> [email protected] wrote:
>>> Here's another test run debug.log I got when debugging with gdb.
>>> The program started eating memory after the debug line "irc 8" and
>>> within a few seconds crashed with "terminate called after
>>> throwing an instance of 'std::bad_alloc'".
>>>
>>>> It's in RecvUntil, but I still can't see anything wrong with it. The
>>>> only thing I can think of is if the socket is receiving a spew of
>>>> characters.
>>>>
>>>> Try this irc.cpp. debug.log may grow rapidly so be ready to kill it.
>>>>
>>>> [email protected] wrote:
>>>>> debug.log attached
>>>>>
>>>>>> 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.
>>>>>>
>>>>>> Try it with the attached irc.cpp and net.cpp and send me the debug.log.
>>>>>>
>>>>>> 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.
>>>>>>
>>>>>> [email protected] wrote:
>>>>>>> I get the error regardless of the getinfo. Commenting out
>>>>>>> ThreadIRCSeed fixed the problem.
>>>>>>>
>>>>>>>> Does it still do it if you didn't do getinfo?
>>>>>>>>
>>>>>>>> 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, under // Start threads
>>>>>>>> CreateThread(ThreadIRCSeed, NULL)
>>>>>>>> CreateThread(ThreadSocketHandler, NULL, true)
>>>>>>>> CreateThread(ThreadOpenConnections, NULL)
>>>>>>>> CreateThread(ThreadMessageHandler, NULL)
>>>>>>>>
>>>>>>>> init.cpp:
>>>>>>>> CreateThread(ThreadRPCServer, NULL);
>>>>>>>>
>>>>>>>> [email protected] wrote:
>>>>>>>>> Here goes. I forgot to mention the crash error message:
>>>>>>>>>
>>>>>>>>> terminate called after throwing an instance of 'std::bad_alloc'
>>>>>>>>> what(): std::bad_alloc
>>>>>>>>>
>>>>>>>>>> Could you send me the debug.log?
>>>>>>>>>>
>>>>>>>>>> [email protected] wrote:
>>>>>>>>>>> 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?
>>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>
>>>>>
>>>>>
>>>
>>>
>>>
>>
>>

이메일 #188

Date: Fri, 05 Mar 2010 01:42:00 +0000
From: Satoshi Nakamoto <[email protected]>
Subject: Re: Bitcoind
To: [email protected]

영어 원문

I confirmed that ParseString has this problem, and uploaded the fixed 
util.cpp to SVN.

string::npos == -1

Comparing unsigned int -1 (0xffffffff) with long unsigned int -1
(0xffffffffffffffff) results in the unsigned int being promoted to
64-bit, which is 0x00000000ffffffff != 0xffffffffffffffff.

[email protected] wrote:
> Here's another test run debug.log I got when debugging with gdb. The
> program started eating memory after the debug line "irc 8" and within a
> few seconds crashed with "terminate called after throwing an instance of
> 'std::bad_alloc'".
>
>> It's in RecvUntil, but I still can't see anything wrong with it. The
>> only thing I can think of is if the socket is receiving a spew of
>> characters.
>>
>> Try this irc.cpp. debug.log may grow rapidly so be ready to kill it.
>>
>> [email protected] wrote:
>>> debug.log attached
>>>
>>>> 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.
>>>>
>>>> Try it with the attached irc.cpp and net.cpp and send me the debug.log.
>>>>
>>>> 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.
>>>>
>>>> [email protected] wrote:
>>>>> I get the error regardless of the getinfo. Commenting out
>>>>> ThreadIRCSeed fixed the problem.
>>>>>
>>>>>> Does it still do it if you didn't do getinfo?
>>>>>>
>>>>>> 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, under // Start threads
>>>>>> CreateThread(ThreadIRCSeed, NULL)
>>>>>> CreateThread(ThreadSocketHandler, NULL, true)
>>>>>> CreateThread(ThreadOpenConnections, NULL)
>>>>>> CreateThread(ThreadMessageHandler, NULL)
>>>>>>
>>>>>> init.cpp:
>>>>>> CreateThread(ThreadRPCServer, NULL);
>>>>>>
>>>>>> [email protected] wrote:
>>>>>>> Here goes. I forgot to mention the crash error message:
>>>>>>>
>>>>>>> terminate called after throwing an instance of 'std::bad_alloc'
>>>>>>> what(): std::bad_alloc
>>>>>>>
>>>>>>>> Could you send me the debug.log?
>>>>>>>>
>>>>>>>> [email protected] wrote:
>>>>>>>>> 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?
>>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>
>>>>>
>>>>>
>>>
>>>
>>>
>
>
>

이메일 #189

Date: Sat, 06 Mar 2010 06:39:53 +0000
From: Satoshi Nakamoto <[email protected]>
Subject: Blog
To: Martti Malmi <[email protected]>

영어 원문

There's a blog writer who wants to write a story about Bitcoin, but I 
don't have time right now to answer his questions. Would you be
interested in answering his questions if I refer him to you? We might
get a good link out of it.

The blog is
http://themonetaryfuture.blogspot.com

이메일 #190

Date: Sun, 07 Mar 2010 02:46:35 +0200
From: [email protected]
To: Satoshi Nakamoto <[email protected]>
Subject: Re: Blog

영어 원문

Yes, I could do that.

> There's a blog writer who wants to write a story about Bitcoin, but I
> don't have time right now to answer his questions. Would you be
> interested in answering his questions if I refer him to you? We might
> get a good link out of it.
>
> The blog is
> http://themonetaryfuture.blogspot.com
링크 복사하기X에 공유페이스북에 공유쓰레드에 공유