Post
Topic
Board Project Development
Re: [BOUNTY] Help test next major release of Armory! [0.04 BTC/bug]
by
SimonL
on 16/11/2013, 14:58:12 UTC

Here's a bug I've found since the last stable version, I've tried this on 0.89.99.10-beta and 0.89.99.14-beta and I've done a couple rescans too. It seems for me the transactions tab does not populate until it receives a new block after it has finished loading. It pretty much seems to stay like and looks like it is broken until I left it running for a while and then suddenly all the transactions in the window appears, everything else seems to work fine though. This only seemed to happen the first time it was run so, it might be that everything is catching up the first time and it is taking a really long time to reorganise itself. It does report errors in the log though so here they are.

Okay, so I haven't heard of this bug in a long time.  I thought it only happened when you have a corrupt wallet in your list.  If you isolate it better, I got a bounty for you!  What OS?  Can you try making a copy of the ARMORY_HOME_DIR (if you have the space for it), then remove the wallets, and run Armory with " --datadir=/new/directory/path".  Create a single new wallet, then restart and let it sync again.  I need to know if it goes away.  If so, then there's an issue with one of the wallets and I'll dig further.

I'm using Kubuntu 13.04, I'm only using watching only wallets but they are originally generated from a much older version of Armory. When the problem occurred initially in 0.89.90.10-beta I thought maybe the older files were causing problems so I removed everything but the watching only files and used a fresh .armory directory with the newer version 0.89.90.14-beta and the results seemed to be identical, so it is probably something to do with the older watching only wallet files.

I followed your directions, copied the original armory dir, removed everything but the databases directory. Fired up Armory, made a new wallet (no encryption enabled), set the settings to not manage Bitcoin-qt, restarted Armory, databases rebuilt and rescanned, then imported a private key with a tiny balance for testing, closed Armory and removed everything but the databases directory and the new wallet with the imported private key. The balance and transactions appeared immediately after the scan no problem, the priv key had around 90-ish transactions and it looked like it was all there. Re-ran it too just to be sure.

I went back to the original watching wallet files for my original wallets and tried running Armory for each of them separately, all but one loaded the wallet in offline mode. One of my watching wallets now fails to load and has this log output:

Code:
2013-11-17 00:29 (INFO) -- ArmoryQt.py:1633 - loadWalletsAndSettings
2013-11-17 00:29 (INFO) -- ArmoryQt.py:1680 - Loading wallets...
2013-11-17 00:29 (WARNING) -- armoryengine.py:9074 - ***WARNING: creation of backup was interrupted -- fixing
2013-11-17 00:29 (ERROR) -- ArmoryQt.py:1723 - ***WARNING: Wallet could not be loaded: /home/ferret/.armory/armory_35Fijn44X_.watchonly.wallet (skipping)
Traceback (most recent call last):
  File "/usr/lib/armory/ArmoryQt.py", line 1695, in loadWalletsAndSettings
    wltLoad = PyBtcWallet().readWalletFile(fpath)
  File "/usr/lib/armory/armoryengine.py", line 8776, in readWalletFile
    nError = self.doWalletFileConsistencyCheck()
  File "/usr/lib/armory/armoryengine.py", line 9075, in doWalletFileConsistencyCheck
    shutil.copy(self.walletPath, walletFileBackup)
  File "/usr/lib/python2.7/shutil.py", line 120, in copy
    copymode(src, dst)
  File "/usr/lib/python2.7/shutil.py", line 91, in copymode
    os.chmod(dst, mode)
OSError: [Errno 1] Operation not permitted: '/home/ferret/.armory/armory_35Fijn44X_.watchonly_backup.wallet'
2013-11-17 00:29 (ERROR) -- Traceback (most recent call last):
  File "/usr/lib/armory/ArmoryQt.py", line 5109, in
    form = ArmoryMainWindow()
  File "/usr/lib/armory/ArmoryQt.py", line 123, in __init__
    self.loadWalletsAndSettings()
  File "/usr/lib/armory/ArmoryQt.py", line 1695, in loadWalletsAndSettings
    wltLoad = PyBtcWallet().readWalletFile(fpath)
  File "/usr/lib/armory/armoryengine.py", line 8776, in readWalletFile
    nError = self.doWalletFileConsistencyCheck()
  File "/usr/lib/armory/armoryengine.py", line 9075, in doWalletFileConsistencyCheck
    shutil.copy(self.walletPath, walletFileBackup)
  File "/usr/lib/python2.7/shutil.py", line 120, in copy
    copymode(src, dst)
  File "/usr/lib/python2.7/shutil.py", line 91, in copymode
    os.chmod(dst, mode)
OSError: [Errno 1] Operation not permitted: '/home/ferret/.armory/armory_35Fijn44X_.watchonly_backup.wallet'

After this I tried using a backup before I started using this new version and it too returns the same error. This is rather strange since the first time I ran it with all the watching wallets in the directory it loaded everything fine and simply had the strange behaviour of not loading the transactions until after a block was processed by Armory after it finished getting started. The watching wallet itself has a lot of imported addresses.

Removing all the files but the databases directory and leaving all the watching only wallet files will still result all of the files being loaded successfully, including the original watching only wallet that failed when loaded on it's own. I've also found that this results in exactly the same behaviour as mentioned in my previous post, none of the transactions in the transaction tab appear on this initial load. So it looks like this particular behaviour can be reproduced. 20 minutes and two blocks later the transactions appeared in full again. There were no errors in the log but here it is:

Code:
2013-11-17 00:54 (INFO) -- armoryengine.py:12479 - Reading blockchain, pct complete: 99.8
2013-11-17 00:54 (INFO) -- ArmoryQt.py:4463 - Dashboard switched to fully-online mode
2013-11-17 00:54 (INFO) -- ArmoryQt.py:3837 - Switching Armory state text to Mgmt:User, State:OnlineFull1
2013-11-17 00:54 (INFO) -- ArmoryQt.py:3779 - Switching Armory functional mode to "Online"
2013-11-17 00:54 (INFO) -- ArmoryQt.py:3837 - Switching Armory state text to Mgmt:User, State:OnlineFull2
2013-11-17 00:54 (INFO) -- ArmoryQt.py:1907 - Syncing wallet: 2pD6iHKkB
2013-11-17 00:54 (INFO) -- ArmoryQt.py:1907 - Syncing wallet: 35Fijn44X
2013-11-17 00:54 (INFO) -- ArmoryQt.py:1907 - Syncing wallet: 2H5X6XTGs
2013-11-17 00:54 (INFO) -- ArmoryQt.py:1907 - Syncing wallet: CSFC3QFR
2013-11-17 00:54 (INFO) -- ArmoryQt.py:1907 - Syncing wallet: 2ToSafqhH
2013-11-17 00:54 (INFO) -- ArmoryQt.py:1919 - Current block number: 269945
2013-11-17 00:55 (INFO) -- ArmoryQt.py:4463 - Dashboard switched to fully-online mode
2013-11-17 00:55 (INFO) -- ArmoryQt.py:3837 - Switching Armory state text to Mgmt:User, State:OnlineFull1
2013-11-17 00:55 (INFO) -- ArmoryQt.py:3779 - Switching Armory functional mode to "Online"
2013-11-17 00:55 (INFO) -- ArmoryQt.py:3837 - Switching Armory state text to Mgmt:User, State:OnlineFull2
2013-11-17 00:55 (INFO) -- ArmoryQt.py:4463 - Dashboard switched to fully-online mode
2013-11-17 00:55 (INFO) -- ArmoryQt.py:3837 - Switching Armory state text to Mgmt:User, State:OnlineFull1
2013-11-17 00:55 (INFO) -- ArmoryQt.py:3779 - Switching Armory functional mode to "Online"
2013-11-17 00:55 (INFO) -- ArmoryQt.py:3837 - Switching Armory state text to Mgmt:User, State:OnlineFull2
2013-11-17 00:55 (INFO) -- ArmoryQt.py:4779 - New Block! : 269946
2013-11-17 00:55 (INFO) -- ArmoryQt.py:4803 - Current block number: 269946
2013-11-17 01:12 (INFO) -- armoryengine.py:10634 - Received new block.  00000000000000047fad31c6ee41e60029ab005b22df147b49192067e33d926e
2013-11-17 01:12 (INFO) -- ArmoryQt.py:4779 - New Block! : 269947
2013-11-17 01:12 (INFO) -- ArmoryQt.py:4803 - Current block number: 269947
2013-11-17 01:17 (INFO) -- ArmoryQt.py:4779 - New Block! : 269948
2013-11-17 01:17 (INFO) -- ArmoryQt.py:4803 - Current block number: 269948

If you need anything else let me know.