From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from sog-mx-4.v43.ch3.sourceforge.com ([172.29.43.194] helo=mx.sourceforge.net) by sfs-ml-1.v29.ch3.sourceforge.com with esmtp (Exim 4.76) (envelope-from ) id 1WqAGI-0006Cf-5o for bitcoin-development@lists.sourceforge.net; Fri, 30 May 2014 00:01:30 +0000 Received-SPF: pass (sog-mx-4.v43.ch3.sourceforge.com: domain of peernova.com designates 209.85.220.182 as permitted sender) client-ip=209.85.220.182; envelope-from=toshi@peernova.com; helo=mail-vc0-f182.google.com; Received: from mail-vc0-f182.google.com ([209.85.220.182]) by sog-mx-4.v43.ch3.sourceforge.com with esmtps (TLSv1:RC4-SHA:128) (Exim 4.76) id 1WqAGH-0001JN-8e for bitcoin-development@lists.sourceforge.net; Fri, 30 May 2014 00:01:30 +0000 Received: by mail-vc0-f182.google.com with SMTP id id10so1252640vcb.41 for ; Thu, 29 May 2014 17:01:23 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:date:message-id:subject:from:to :content-type; bh=DwbA6vQZCXaXq/jOP/K9NHDmkTcz2Ja5wE/jHYUK8rc=; b=mWvQJt9jeX6Z0P+iXny08wlYCt8coqhs9XFw9bHyIfTH4pvWIcRNUGX8VdujOO9ycC +xdVVDMifGL5JaiOlmjW94f1IIlXiEVyH2YEIdpGe0Si3RscR7YycR8bif4K4RtEGoQs edfuAidFUtlFuJVWGVaP8n8hdljScILvFEhHCUkp89tiYWLEdEV5b/cDdFA/7RyBRO/h o3DZll3m3eJKm7N2Hm30fmchqtj3UUwucEUsaXMykkZiFenQi2J5G3F64WDYUh04qo/m ZzjZ8O6/ywm0NwEHj3vVvWie7dxhNrDEBS65m9+amjqRodzWHSS363XawrEkyWODYOfy akmQ== X-Gm-Message-State: ALoCoQmP4Btud92OL3JQjEOWHywgCIOWyah17aFAUsF03tOhhZum/jiRn0xYX3F2JXJqRVkCbTKj MIME-Version: 1.0 X-Received: by 10.52.255.98 with SMTP id ap2mr8565326vdd.3.1401408083425; Thu, 29 May 2014 17:01:23 -0700 (PDT) Received: by 10.52.34.146 with HTTP; Thu, 29 May 2014 17:01:23 -0700 (PDT) Date: Thu, 29 May 2014 17:01:23 -0700 Message-ID: From: Toshi Morita To: bitcoin-development@lists.sourceforge.net Content-Type: multipart/alternative; boundary=047d7bd6c722ff8f3304fa92be9c X-Spam-Score: -0.5 (/) X-Spam-Report: Spam Filtering performed by mx.sourceforge.net. See http://spamassassin.org/tag/ for more details. -1.5 SPF_CHECK_PASS SPF reports sender host as permitted sender for sender-domain -0.0 SPF_PASS SPF: sender matches SPF record 1.0 HTML_MESSAGE BODY: HTML included in message X-Headers-End: 1WqAGH-0001JN-8e Subject: [Bitcoin-development] bitcoind minor bug in wallet and possible fix X-BeenThere: bitcoin-development@lists.sourceforge.net X-Mailman-Version: 2.1.9 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 30 May 2014 00:01:30 -0000 --047d7bd6c722ff8f3304fa92be9c Content-Type: text/plain; charset=UTF-8 I ran bitcoind under valgrind and found a place where it references an uninitialized variable in some cases: tm@tm-VirtualBox:~/bitcoind/bitcoin/src$ valgrind ./bitcoind ==2337== Memcheck, a memory error detector ==2337== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al. ==2337== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info ==2337== Command: ./bitcoind ==2337== ==2337== Conditional jump or move depends on uninitialised value(s) ==2337== at 0x319176: CWallet::LoadKeyMetadata(CPubKey const&, CKeyMetadata const&) (wallet.cpp:110) ==2337== by 0x33645A: ReadKeyValue(CWallet*, CDataStream&, CDataStream&, CWalletScanState&, std::string&, std::string&) (walletdb.cpp:509) ==2337== by 0x3374F0: CWalletDB::LoadWallet(CWallet*) (walletdb.cpp:623) ==2337== by 0x3218FD: CWallet::LoadWallet(bool&) (wallet.cpp:1485) ==2337== by 0x157F16: AppInit2(boost::thread_group&) (init.cpp:958) ==2337== by 0x140142: AppInit(int, char**) (bitcoind.cpp:143) ==2337== by 0x13649E: main (bitcoind.cpp:180) ==2337== The bug occurs here because nTimeFirstKey is not initialized when the wallet is instantiated: wallet.cpp:63 if (!nTimeFirstKey || nCreationTime < nTimeFirstKey) nTimeFirstKey = nCreationTime; I fixed it in my fork: diff --git a/src/wallet.h b/src/wallet.h index 9607415..b78045f 100644 --- a/src/wallet.h +++ b/src/wallet.h @@ -163,6 +163,7 @@ public: nOrderPosNext = 0; nNextResend = 0; nLastResend = 0; + nTimeFirstKey = 0; } If this fix is ok please pull from my GitHub fork; username on GitHub is tm314159. Toshi --047d7bd6c722ff8f3304fa92be9c Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
I ran bitcoind under valgrind and found a place = where it references an uninitialized variable in some cases:

tm@tm-V= irtualBox:~/bitcoind/bitcoin/src$ valgrind ./bitcoind
=3D=3D2337=3D=3D M= emcheck, a memory error detector
=3D=3D2337=3D=3D Copyright (C) 2002-2012, and GNU GPL'd, by Julian Sewa= rd et al.
=3D=3D2337=3D=3D Using Valgrind-3.8.1 and LibVEX; rerun with -= h for copyright info
=3D=3D2337=3D=3D Command: ./bitcoind
=3D=3D2337= =3D=3D
=3D=3D2337=3D=3D Conditional jump or move depends on uninitialise= d value(s)
=3D=3D2337=3D=3D=C2=A0=C2=A0=C2=A0 at 0x319176: CWallet::LoadKeyMetadata(CP= ubKey const&, CKeyMetadata const&) (wallet.cpp:110)
=3D=3D2337= =3D=3D=C2=A0=C2=A0=C2=A0 by 0x33645A: ReadKeyValue(CWallet*, CDataStream&am= p;, CDataStream&, CWalletScanState&, std::string&, std::string&= amp;) (walletdb.cpp:509)
=3D=3D2337=3D=3D=C2=A0=C2=A0=C2=A0 by 0x3374F0: CWalletDB::LoadWallet(CWall= et*) (walletdb.cpp:623)
=3D=3D2337=3D=3D=C2=A0=C2=A0=C2=A0 by 0x3218FD: = CWallet::LoadWallet(bool&) (wallet.cpp:1485)
=3D=3D2337=3D=3D=C2=A0= =C2=A0=C2=A0 by 0x157F16: AppInit2(boost::thread_group&) (init.cpp:958)=
=3D=3D2337=3D=3D=C2=A0=C2=A0=C2=A0 by 0x140142: AppInit(int, char**) (bitco= ind.cpp:143)
=3D=3D2337=3D=3D=C2=A0=C2=A0=C2=A0 by 0x13649E: main (bitco= ind.cpp:180)
=3D=3D2337=3D=3D

The bug occurs here because n= TimeFirstKey is not initialized when the wallet is instantiated:

wallet.cpp:63
=C2=A0=C2=A0=C2=A0 if (!nTimeFirstKey || nCreationTime= < nTimeFirstKey)
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 nTimeFir= stKey =3D nCreationTime;


I fixed it in my fork:
diff --git a/src/wallet.h b/src/wallet.h
index 9607415..b78045f 100644=
--- a/src/wallet.h
+++ b/src/wallet.h
@@ -163,6 +163,7 @@ public:
= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 nOrderPosNext =3D 0;
= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 nNextResend =3D 0;
=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 nLastResend =3D 0;
+=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 nTimeFirstKey =3D 0;
=C2=A0=C2=A0= =C2=A0=C2=A0 }

If this fix is ok please pull from my GitHub fork; username on GitHub is tm= 314159.

Toshi

--047d7bd6c722ff8f3304fa92be9c--