bitcoin memory allocation bug, double linked list corrupted #944

issue guru777 opened this issue on March 17, 2012
  1. guru777 commented at 10:17 AM on March 17, 2012: none

    Hi, I have been doing tests with bitcoind version 0.6003 And for mosts tasks it works ok, however when I run a shopping cart, the bidcoind daemon crashes after a while, no money is lost, no addresses are lost, it simply crashes after about 1 hour of use, if it is being used lightly manual transactions and no shopping cart, it works fine.

    This bug can be reproduced by running the shoppping cart oscommerce and the weex module, however I do not think the bug is in the shopping cart module since all it is doing is using the same bitcoind daemon to check transactions repeatedly, and most of the time it works, if fails when the bitcoind crashes.

    There is another minor bug, that at times it takes a long time to do a simple transaction like bitcoind getinfo, most of the time it takes less than a second, but randomly sometimes takes almost a minute.

    To simply debuging, I compiled bitcoind without optimization, and debug enabled:

    Here is the console error log at crash, not the name of the daemon was bitcoind6003-notoptized-debug, meaning it has no optimizations and debug enabled:

    ./bitcoind6003-notoptized-debug -server -debug

    *** glibc detected *** ./bitcoind6003-notoptized-debug: malloc(): smallbin double linked list corrupted: 0x0000000004491930 *** ======= Backtrace: ========= [0x8b6c12] [0x8ba39f] [0x8bb838] [0x87ee6d] [0x85ddf9] [0x51f4a3] [0x85e9bb] [0x5e4e22] [0x53b69a] [0x53e25e] [0x53c58f] [0x53c568] ======= Memory map: ======== 00400000-00ad6000 r-xp 00000000 08:01 58997057 /usr/local/sbin/bitcoind6003-notoptized-debug 00cd6000-00cf6000 rw-p 006d6000 08:01 58997057 /usr/local/sbin/bitcoind6003-notoptized-debug 00cf6000-0452d000 rw-p 00cf6000 00:00 0 [heap] 3778a00000-3778a1c000 r-xp 00000000 08:01 54919481 /lib64/ld-2.5.so 3778a1c000-3778c1b000 ---p 0001c000 08:01 54919481 /lib64/ld-2.5.so 3778c1b000-3778c1c000 r--p 0001b000 08:01 54919481 /lib64/ld-2.5.so 3778c1c000-3778c1d000 rw-p 0001c000 08:01 54919481 /lib64/ld-2.5.so 3778e00000-3778f4e000 r-xp 00000000 08:01 54919515 /lib64/libc-2.5.so 3778f4e000-377914d000 ---p 0014e000 08:01 54919515 /lib64/libc-2.5.so 377914d000-3779151000 r--p 0014d000 08:01 54919515 /lib64/libc-2.5.so 3779151000-3779152000 rw-p 00151000 08:01 54919515 /lib64/libc-2.5.so 3779152000-3779157000 rw-p 3779152000 00:00 0 3783c00000-3783c11000 r-xp 00000000 08:01 54919520 /lib64/libresolv-2.5.so 3783c11000-3783e11000 ---p 00011000 08:01 54919520 /lib64/libresolv-2.5.so 3783e11000-3783e12000 r--p 00011000 08:01 54919520 /lib64/libresolv-2.5.so 3783e12000-3783e13000 rw-p 00012000 08:01 54919520 /lib64/libresolv-2.5.so 3783e13000-3783e15000 rw-p 3783e13000 00:00 0 7fa38c000000-7fa38c203000 rw-p 7fa38c000000 00:00 0 7fa38c203000-7fa390000000 ---p 7fa38c203000 00:00 0 7fa390276000-7fa39027a000 r-xp 00000000 08:01 54919189 /lib64/libnss_dns-2.5.so 7fa39027a000-7fa390479000 ---p 00004000 08:01 54919189 /lib64/libnss_dns-2.5.so 7fa390479000-7fa39047a000 r--p 00003000 08:01 54919189 /lib64/libnss_dns-2.5.so 7fa39047a000-7fa39047b000 rw-p 00004000 08:01 54919189 /lib64/libnss_dns-2.5.so 7fa39047b000-7fa39057b000 rw-p 7fa39047b000 00:00 0 7fa39057b000-7fa390585000 r-xp 00000000 08:01 54919483 /lib64/libnss_files-2.5.so 7fa390585000-7fa390784000 ---p 0000a000 08:01 54919483 /lib64/libnss_files-2.5.so 7fa390784000-7fa390785000 r--p 00009000 08:01 54919483 /lib64/libnss_files-2.5.so 7fa390785000-7fa390786000 rw-p 0000a000 08:01 54919483 /lib64/libnss_files-2.5.so 7fa3907b2000-7fa3907b3000 ---p 7fa3907b2000 00:00 0 7fa3907b3000-7fa390fb3000 rw-p 7fa3907b3000 00:00 0 7fa390fb3000-7fa390fb4000 ---p 7fa390fb3000 00:00 0 7fa390fb4000-7fa3917b4000 rw-p 7fa390fb4000 00:00 0 7fa3917b4000-7fa3917b5000 ---p 7fa3917b4000 00:00 0 7fa3917b5000-7fa391fb5000 rw-p 7fa3917b5000 00:00 0 7fa391fb5000-7fa391fb6000 ---p 7fa391fb5000 00:00 0 7fa391fb6000-7fa3927b6000 rw-p 7fa391fb6000 00:00 0 7fa3927b6000-7fa3927b7000 ---p 7fa3927b6000 00:00 0 7fa3927b7000-7fa392fb7000 rw-p 7fa3927b7000 00:00 0 7fa392fb7000-7fa392fb8000 ---p 7fa392fb7000 00:00 0 7fa392fb8000-7fa3937b8000 rw-p 7fa392fb8000 00:00 0 7fa3937b8000-7fa3937b9000 ---p 7fa3937b8000 00:00 0 7fa3937b9000-7fa393fb9000 rw-p 7fa3937b9000 00:00 0 7fa393fb9000-7fa393fba000 ---p 7fa393fb9000 00:00 0 7fa393fba000-7fa3947ba000 rw-p 7fa393fba000 00:00 0 7fa3947ba000-7fa3947bb000 ---p 7fa3947ba000 00:00 0 7fa3947bb000-7fa394fbb000 rw-p 7fa3947bb000 00:00 0 7fa394fbb000-7fa394fbc000 ---p 7fa394fbb000 00:00 0 7fa394fbc000-7fa3957f3000 rw-p 7fa394fbc000 00:00 0 7fa3957f3000-7fa3957ff000 rw-s 00000000 08:01 47255424 /root/.bitcoin/__db.006 7fa3957ff000-7fa395e03000 rw-s 00000000 08:01 47255420 /root/.bitcoin/__db.005 7fa395e03000-7fa395e2b000 rw-s 00000000 08:01 47255419 /root/.bitcoin/__db.004 7fa395e2b000-7fa395e6d000 rw-s 00000000 08:01 47255418 /root/.bitcoin/__db.003 7fa395e6d000-7fa395fcb000 rw-s 00000000 08:01 47255416 /root/.bitcoin/__db.002 7fa395fcb000-7fa395fd1000 rw-s 00000000 08:01 47255414 /root/.bitcoin/__db.001 7fa395fd1000-7fa395fd2000 rw-p 7fa395fd1000 00:00 0 7fff9dfbd000-7fff9dfd2000 rw-p 7ffffffea000 00:00 0 [stack] 7fff9dfff000-7fff9e000000 r-xp 7fff9dfff000 00:00 0 [vdso] ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall] Aborted

    Has anyone had similar problems with recent versions of bitcoind, and what was done to fix it?

    After doing some research, it appears that this bug depends on the wallet being used, with a clean new wallet it seems to be fine, however when I used my own wallet that has been around about a years and has gone though many bitcoin updates, I have a feeling is something on my wallet that causes this bug to trigger, and only happens are moderate or heavy use of bitcoind.

  2. laanwj commented at 10:21 AM on March 17, 2012: member

    To usefully debug this issue, we need function names/line numbers from those addresses in [backtrace]. I think you find these out this using the addr2line command and the (debug) executable.

  3. gavinandresen commented at 3:28 PM on March 17, 2012: contributor

    Function names/line numbers will help. I can also try to reproduce this running under 'valgrind' -- can you tell me what operating system you're running on and send me the output of:

    grep 'method=' ~/.bitcoin/debug.log | tail -500
    

    ... so we have an idea of what RPC calls might be triggering the bug?

  4. guru777 commented at 9:11 PM on March 17, 2012: none

    Hi Gavin,

    I will do that, but it takes time to reproduce the error, I appears that it depends o the wallet being used.

    once I reproduce the error I will send you the output of:

    grep 'method=' ~/.bitcoin/debug.log | tail -500

    Wladimir suggested using addr2line, and it is on my system, however I have never used it before, but I can give it a try.

    It was compiled on a debian 64 bit system version 6.0, the compile was done statically, since the goal was to use it on a Centos 64 bit version 5.5, the errors occurs when running on Centos, I have not tried to reproduced the error under debian, but I could try. The reason it was not compiled on Centos directly was that Centos is supplied with an incomplete openssl that has missing code such as ecc, not only that even though boost, and openssl compile just fine under centos, too many errros in regards to those libraries are trigered at compile time, in centos the bigger problem is ssl, that is why it is compiled under debian statically.

    The bug only triggers with moderate or heavy use, it does not trigger under light use.

    As soon as I have the debug information that you need, I will send it to you.

    Thanks,

    Sergio Riveros

    Date: Sat, 17 Mar 2012 08:28:04 -0700 From: reply@reply.github.com To: sergiori@hotmail.com Subject: Re: [bitcoin] bitcoin memory allocation bug, double linked list corrupted (#944)

    Function names/line numbers will help. I can also try to reproduce this running under 'valgrind' -- can you tell me what operating system you're running on and send me the output of:

    grep 'method=' ~/.bitcoin/debug.log | tail -500
    

    ... so we have an idea of what RPC calls might be triggering the bug?


    Reply to this email directly or view it on GitHub: #944 (comment)

  5. guru777 commented at 12:58 PM on March 20, 2012: none

    Gavin Here is the output you have respuested: [root@vpn3000 ~]# grep 'method=' ~/.bitcoin/debug.log | tail -500 ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getinfo ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=listaddress ThreadRPCServer method=listaddress ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=help ThreadRPCServer method=listaccounts ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance ThreadRPCServer method=getgenerate ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getreceivedbyaddress ThreadRPCServer method=getbalance

    If I can be of any further help to troubleshoot this bug please let me know, I have a feeling that it relates somehow to the wallet, since with a clean new wallet this proble does not occur.

    Sincerely,

    Sergio Riveros

    Date: Sat, 17 Mar 2012 08:28:04 -0700 From: reply@reply.github.com To: sergiori@hotmail.com Subject: Re: [bitcoin] bitcoin memory allocation bug, double linked list corrupted (#944)

    Function names/line numbers will help. I can also try to reproduce this running under 'valgrind' -- can you tell me what operating system you're running on and send me the output of:

    grep 'method=' ~/.bitcoin/debug.log | tail -500
    

    ... so we have an idea of what RPC calls might be triggering the bug?


    Reply to this email directly or view it on GitHub: #944 (comment)

  6. guru777 commented at 1:07 PM on March 20, 2012: none

    in regard to using addr2line, can you provide a few instructions on how to use it, and how to submit the binary of bitcoind with debug enabled?

  7. laanwj commented at 2:43 PM on March 20, 2012: member

    I've never used addr2line either but you can mail me the exact executable that caused the error at laanwj at gmail.com and I'll give it a try.

  8. laanwj commented at 5:49 PM on March 21, 2012: member

    Annotated stack trace using addr2line:

    [0x53c568] /home/minero/bitcoinmar2012/bitcoin/src/bitcoinrpc.cpp:2360 
               https://github.com/bitcoin/bitcoin/blob/v0.6.0rc3/src/bitcoinrpc.cpp#L2360
    [0x53c58f] /home/minero/bitcoinmar2012/bitcoin/src/bitcoinrpc.cpp:2365 
               https://github.com/bitcoin/bitcoin/blob/v0.6.0rc3/src/bitcoinrpc.cpp#L2365
    [0x53e25e] /home/minero/bitcoinmar2012/bitcoin/src/bitcoinrpc.cpp:2487 
               https://github.com/bitcoin/bitcoin/blob/v0.6.0rc3/src/bitcoinrpc.cpp#L2487
    [0x53b69a] /home/minero/bitcoinmar2012/bitcoin/src/bitcoinrpc.cpp:2248 
               https://github.com/bitcoin/bitcoin/blob/v0.6.0rc3/src/bitcoinrpc.cpp#L2248
    [0x5e4e22] /home/minero/bitcoinmar2012/bitcoin/src/util.cpp:696 
               https://github.com/bitcoin/bitcoin/blob/v0.6.0rc3/src/util.cpp#L696
    [0x85e9bb] std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, unsigned long, std::allocator<char> const&)
    [0x51f4a3] /usr/include/c++/4.4/bits/basic_string.tcc:139
    [0x85ddf9] std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&)
    [0x87ee6d] operator new(unsigned long)
    [0x8bb838] __malloc
    [0x8ba39f] events.c:0
    [0x8b6c12] events.c:0
    

    Seems that it happens after Base64 decoding (called from HTTPAuthorized), when constructing the string from char array. Doesn't help us much, I'm afraid... some time before this allocation the heap got corrupted. This could be in Base64Decode itself, or before that...

  9. laanwj commented at 1:34 PM on May 30, 2013: member

    Is this still an issue with more recent versions (0.8.2)?

  10. laanwj commented at 12:22 PM on January 10, 2014: member

    Closing due to inactivity.

  11. laanwj closed this on Jan 10, 2014

  12. suprnurd referenced this in commit de7b2b6c51 on Dec 5, 2017
  13. ptschip referenced this in commit 7e0066e4cb on Jan 25, 2018
  14. DrahtBot locked this on Sep 8, 2021
Labels

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-05-03 15:16 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me