AlethZero use private chain - endless loop

I'm trying to use the latest stable AlethZero client on a private test net. When I try to select the menu item "Special | Use Private Chain..." and enter the network name in the popup dialog and click OK, the GUI becomes unresponsive and I get an endless console loop of the following form:

ℹ 08:23:01 PM|alethzero Closing blockchain DB
ℹ 08:23:02 PM|alethzero Opened blockchain DB. Latest: #4ab1ef57… (rebuild not needed)
ℹ 08:23:02 PM|alethzero Opened state DB.
ℹ 08:23:05 PM|alethzero Closing blockchain DB
ℹ 08:23:05 PM|alethzero Opened blockchain DB. Latest: #d4e56740… (rebuild not needed)
ℹ 08:23:06 PM|alethzero Opened state DB.
ℹ 08:23:08 PM|alethzero Closing blockchain DB
ℹ 08:23:09 PM|alethzero Opened blockchain DB. Latest: #4ab1ef57… (rebuild not needed)
ℹ 08:23:09 PM|alethzero Opened state DB.
ℹ 08:23:12 PM|alethzero Closing blockchain DB
ℹ 08:23:12 PM|alethzero Opened blockchain DB. Latest: #d4e56740… (rebuild not needed)
ℹ 08:23:12 PM|alethzero Opened state DB.
ℹ 08:23:15 PM|alethzero Closing blockchain DB

... and on and on and on... the GUI never recovers. Is there something wrong with my setup or procedure?

FYI - I can also reproduce this on the cutting edge develop build on my machine.

Comments

  • mjackson001mjackson001 Member Posts: 9
    Some more information on this. There appears to be recursion going on, not an endless loop - every call to BlockChain::close() has a deeper stack with multiple nested calls to setPrivateChain() and readSettings(). This stack trace is on Ubuntu with a debug webthree-umbrella build from yesterday. I'm not familiar with the code (yet) but hoping someone who is might have some insight.

    Breakpoint 2, dev::eth::BlockChain::close (this=0x14a1cb0)
    at /home/mjackson/ethereum/webthree-umbrella/libethereum/libethereum/BlockChain.cpp:258
    258 delete m_extrasDB;
    (gdb) bt
    #0 dev::eth::BlockChain::close (this=0x14a1cb0)
    at /home/mjackson/ethereum/webthree-umbrella/libethereum/libethereum/BlockChain.cpp:258
    #1 0x00007ffff57c1600 in dev::eth::CanonBlockChain::reopen(dev::WithExisting, std::function const&) (this=0x14a1cb0, _we=dev::Trust, _pc=...)
    at /home/mjackson/ethereum/webthree-umbrella/libethereum/libethereum/CanonBlockChain.cpp:57
    #2 0x00007ffff571f367 in dev::eth::Client::reopenChain (this=0x149ed50, _we=dev::Trust)
    at /home/mjackson/ethereum/webthree-umbrella/libethereum/libethereum/Client.cpp:369
    #3 0x0000000000631254 in dev::aleth::zero::PrivateChain::setPrivateChain (this=0x1085df0,
    _private=..., _forceConfigure=false)
    at /home/mjackson/ethereum/webthree-umbrella/alethzero/alethzero/plugins/blockchain/PrivateChain.cpp:74
    #4 0x00000000006313fc in dev::aleth::zero::PrivateChain::readSettings (this=0x1085df0, _s=...)
    at /home/mjackson/ethereum/webthree-umbrella/alethzero/alethzero/plugins/blockchain/PrivateChain.cpp:83
    #5 0x00000000005806c5 in dev::aleth::zero::AlethZero::__lambda77::operator() (
    __closure=0x7fffffffce80, p=...)
    at /home/mjackson/ethereum/webthree-umbrella/alethzero/alethzero/AlethZero.cpp:237
    #6 0x00000000005872d9 in dev::aleth::zero::ZeroFace::forEach(const dev::aleth::zero::AlethZero::__lambda77 &) (this=0x7fffffffd760, _f=...)
    at /home/mjackson/ethereum/webthree-umbrella/alethzero/alethzero/ZeroFace.h:85
    #7 0x00000000005808b9 in dev::aleth::zero::AlethZero::readSettings (this=0x7fffffffd760,
    _skipGeometry=true, _onlyGeometry=false)
    at /home/mjackson/ethereum/webthree-umbrella/alethzero/alethzero/AlethZero.cpp:238
    #8 0x000000000057fd38 in dev::aleth::zero::AlethZero::carryOn (this=0x7fffffffd760)
    at /home/mjackson/ethereum/webthree-umbrella/alethzero/alethzero/AlethZero.cpp:165
    #9 0x00000000006312f7 in dev::aleth::zero::PrivateChain::setPrivateChain (this=0x1085df0,
    _private=..., _forceConfigure=false)
    at /home/mjackson/ethereum/webthree-umbrella/alethzero/alethzero/plugins/blockchain/PrivateChain.cpp:78
    #10 0x00000000006313fc in dev::aleth::zero::PrivateChain::readSettings (this=0x1085df0, _s=...)
    at /home/mjackson/ethereum/webthree-umbrella/alethzero/alethzero/plugins/blockchain/PrivateChain.cpp:83
    #11 0x00000000005806c5 in dev::aleth::zero::AlethZero::__lambda77::operator() (
    __closure=0x7fffffffd180, p=...)
    at /home/mjackson/ethereum/webthree-umbrella/alethzero/alethzero/AlethZero.cpp:237
    #12 0x00000000005872d9 in dev::aleth::zero::ZeroFace::forEach(const dev::aleth::zero::AlethZero::__lambda77 &) (this=0x7fffffffd760, _f=...)
    at /home/mjackson/ethereum/webthree-umbrella/alethzero/alethzero/ZeroFace.h:85
    #13 0x00000000005808b9 in dev::aleth::zero::AlethZero::readSettings (this=0x7fffffffd760,
    _skipGeometry=true, _onlyGeometry=false)
    at /home/mjackson/ethereum/webthree-umbrella/alethzero/alethzero/AlethZero.cpp:238
    #14 0x000000000057fd38 in dev::aleth::zero::AlethZero::carryOn (this=0x7fffffffd760)
    at /home/mjackson/ethereum/webthree-umbrella/alethzero/alethzero/AlethZero.cpp:165
    #15 0x00000000006312f7 in dev::aleth::zero::PrivateChain::setPrivateChain (this=0x1085df0,
    _private=..., _forceConfigure=false)
    at /home/mjackson/ethereum/webthree-umbrella/alethzero/alethzero/plugins/blockchain/PrivateChain.cpp:78
    #16 0x00000000006313fc in dev::aleth::zero::PrivateChain::readSettings (this=0x1085df0, _s=...)
    at /home/mjackson/ethereum/webthree-umbrella/alethzero/alethzero/plugins/blockchain/PrivateChain.cpp:83
    #17 0x000000000057faa4 in dev::aleth::zero::AlethZero::initPlugin (this=0x7fffffffd760, _p=0x1085e00)
    at /home/mjackson/ethereum/webthree-umbrella/alethzero/alethzero/AlethZero.cpp:139
    #18 0x000000000057f2f7 in dev::aleth::zero::AlethZero::AlethZero (this=0x7fffffffd760)
    at /home/mjackson/ethereum/webthree-umbrella/alethzero/alethzero/AlethZero.cpp:104
    #19 0x00000000005702db in main (argc=1, argv=0x7fffffffdc38)
    at /home/mjackson/ethereum/webthree-umbrella/alethzero/alethzero/main.cpp:7
  • mjackson001mjackson001 Member Posts: 9
    FWIW - I was able to break the recursion by commenting out the following line in webthree-umbrella/alethzero/alethzero/plugins/blockchain/PrivateChain.cpp

    // Rejig UI bits.
    //zero()->carryOn();

    I'm pretty sure this isn't a fix, but it does seem to get the GUI working again and I'm apparently using a private chain now. Hope it helps someone else who has the same issue.

  • mdjmdj Member Posts: 14
    There is an additional line I had to comment out in the same function as above to get mining and transactions to work:

    // Prep UI bits.
    // zero()->allStop();

    ...

    // Rejig UI bits.
    // zero()->carryOn();

    I can send transactions now and mine on a private chain, but this is not a fix because the plugin doesn't stop the network before starting a private chain. It does however seem to work fine when starting from a clean slate - rm ~/.ethereum, ~/.web3, etc.
  • rroschinrroschin Member Posts: 5
    edited February 2016
    Just to let everyone know: this is fixed in dev version: https://github.com/ethereum/alethzero/issues/78
    But is still present in 1.0.1 stable release.
Sign In or Register to comment.