Author

Topic: Wallet Corrupt Everytime When Close Armory (Read 886 times)

legendary
Activity: 3794
Merit: 1375
Armory Developer
June 18, 2016, 05:28:48 AM
#9
I'll look into it
sr. member
Activity: 292
Merit: 250
I managed to reproduce the problem I initially encountered. After a clean Armory installation + new wallet (did digital backup), everything works fine.

However delete the armory database directory but keep everything else (WALLET file, ArmorySettings.txt, multipliers.txt) and restart + rebuild the armory database, existing wallet can't be loaded.

Import digital backup, wallet loads. Quit and restart armory, wallet can't be loaded again.
legendary
Activity: 3794
Merit: 1375
Armory Developer
Sorry I haven't replied. I think its resolved now. One observation I saw was when I originally installed 0.94.1 and created a new wallet, the wallet size seems to be unusually (255Kb) large. Even the backup wallet is this large. There was 10 receiving addresses and perhaps only a dozen transactions.

Things I've tried:

1) Relocating armory datadir to another drive.
2) Repairing wallet which indicated no errors.
3) Reinstalling Armory (https://github.com/goatpig/BitcoinArmory/releases/tag/v0.94.1)

Finally what I did was uninstall every damn thing, Armory and Bitcoin core. Reinstall (default locations) and reindex everything (Bitcoin blockchain and Armoy db) and new wallet again. Finally seems to be ok now.

Conclusion, I've no idea why it's ok now Grin, however to all who read this I don't think its an issue with Armory.

The wallets you restore from a root are larger than wallets you just create. Created wallets have 100 address precomputed, restored wallets precompute 1000 addresses, thus the size difference.

Thinking about it, maybe your issue is permission access. If you were using a custom folder for your datadir and the user you were logged on as did not have credentials to access the path, it would have the data in RAM but fail to write it to disk. Although I expect the errors in the log file to be clearly signify this, so this doesn't exclude some sort of RAM or HDD issue.
sr. member
Activity: 292
Merit: 250
Sorry I haven't replied. I think its resolved now. One observation I saw was when I originally installed 0.94.1 and created a new wallet, the wallet size seems to be unusually (255Kb) large. Even the backup wallet is this large. There was 10 receiving addresses and perhaps only a dozen transactions.

Things I've tried:

1) Relocating armory datadir to another drive.
2) Repairing wallet which indicated no errors.
3) Reinstalling Armory (https://github.com/goatpig/BitcoinArmory/releases/tag/v0.94.1)

Finally what I did was uninstall every damn thing, Armory and Bitcoin core. Reinstall (default locations) and reindex everything (Bitcoin blockchain and Armoy db) and new wallet again. Finally seems to be ok now.

Conclusion, I've no idea why it's ok now Grin, however to all who read this I don't think its an issue with Armory.
legendary
Activity: 3794
Merit: 1375
Armory Developer
Is this a known problem with the armory wallet?

First time I see this. That code hasn't changed in 3 years or so, if it was common we'd know by now.
sr. member
Activity: 280
Merit: 250
Two heads are better than one.
Is this a known problem with the armory wallet?
full member
Activity: 159
Merit: 100
In addition to what goatpig suggest, run a diagnostic on your RAM.  memtest86 comes on most linux install disks, just download the lubuntu disk, boot from it and select memtest86.

legendary
Activity: 3794
Merit: 1375
Armory Developer
1) Make sure you are running the binary from the signed package.

2) Try to load that wallet from another disk.

3) Lastly, load the damaged wallet in the repair tool, see what it has to say.
sr. member
Activity: 292
Merit: 250
I'm using armory version 0.94.1 with bitcoin core 0.12.1 on windows 10. Everytime I close armory and reopen, the wallet gets corrupted and can't be loaded. And yes fortunately I've made a backup before. It is a fresh new wallet created after installing 0.94.1. The logs below.

armorylog.txt
Code:
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1080 - C++ block utilities loaded successfully
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1190 -
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1191 -
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1192 -
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1193 - ************************************************************
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1194 - Invoked: C:\Program Files (x86)\Armory-0.94.1\ArmoryQt.exe --satoshi-datadir=C:\BlockChain\Bitcoin --datadir=C:\BlockChain\Armory
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1195 - ************************************************************
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1196 - Loading Armory Engine:
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1197 -    Armory Version        : 0.94.1
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1198 -    Armory Build:         : 811798a928
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1199 -    PyBtcWallet  Version  : 1.35
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1200 - Detected Operating system: Windows
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1201 -    OS Variant            : 8-6.2.9200--Multiprocessor Free
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1202 -    User home-directory   : C:\Users\Ronald\AppData\Roaming
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1203 -    Satoshi BTC directory : C:\BlockChain\Bitcoin
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1204 -    Armory home dir       : C:\BlockChain\Armory
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1205 - Detected System Specs    :
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1206 -    Total Available RAM   : 15.70 GB
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1207 -    CPU ID string         : Intel64 Family 6 Model 60 Stepping 3, GenuineIntel
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1208 -    Number of CPU cores   : 8 cores
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1209 -    System is 64-bit      : True
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1210 -    Preferred Encoding    : cp1252
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1211 -    Machine Arch          : amd64
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1212 -    Available HDD (ARM)   : 86 GB
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1213 -    Available HDD (BTC)   : 86 GB
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1214 -
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1215 - Network Name: Main Network
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1216 - Satoshi Port: 8333
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1217 - Do wlt check: True
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1218 - Named options/arguments to armoryengine.py:
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     nettimeout      : 2
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     rescan          : False
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     ignoreAllZC     : False
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     rescanBalance   : False
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     disableModules  : False
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     port            : None
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     interport       : 8223
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     skipStatsReport : False
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     forceWalletCheck: False
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     rebuild         : False
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     datadir         : C:\BlockChain\Armory
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     clearMempool    : False
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     offline         : False
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     coverageOutputDir: None
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     armoryDBDir     : DEFAULT
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     satoshiPort     : DEFAULT
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     useTorSettings  : False
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     netlog          : False
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     keypool         : 100
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     coverageInclude : None
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     forceOnline     : False
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     skipAnnounceCheck: False
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     redownload      : False
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     multisigFile    : DEFAULT
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     disableTorrent  : False
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     testAnnounceCode: False
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     mtdebug         : False
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     logDisable      : False
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     settingsPath    : C:\BlockChain\Armory\ArmorySettings.txt
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     verbosity       : None
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     doDebug         : False
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     enableDetSign   : True
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     testnet         : False
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     rpcport         : DEFAULT
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     satoshiHome     : C:\BlockChain\Bitcoin
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     satoshiRpcport  : DEFAULT
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     logFile         : C:\BlockChain\Armory\ArmoryQt.exe.log.txt
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     disableConfPermis: False
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1220 -     enableSupernode : False
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1221 - Other arguments:
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1224 - ************************************************************
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:1624 - C++ block utilities loaded successfully
2016-06-14 13:49 (INFO) -- BDM.pyc:420 - Using the asynchronous/multi-threaded BlockDataManager.
2016-06-14 13:49 (INFO) -- BDM.pyc:421 - Blockchain operations will happen in the background. 
2016-06-14 13:49 (INFO) -- BDM.pyc:422 - Devs: check TheBDM.getState() before asking for data.
2016-06-14 13:49 (INFO) -- BDM.pyc:423 - Registering addresses during rescans will queue them for
2016-06-14 13:49 (INFO) -- BDM.pyc:424 - inclusion after the current scan is completed.
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:3535 - Using settings file: C:\BlockChain\Armory\ArmorySettings.txt
2016-06-14 13:49 (INFO) -- ArmoryQt.py:2709 - loadWalletsAndSettings
2016-06-14 13:49 (INFO) -- ArmoryQt.py:2763 - Loading wallets...
2016-06-14 13:49 (ERROR) -- ArmoryQt.py:2817 - ***WARNING: Wallet could not be loaded: C:\BlockChain\Armory\armory_38zQWgnCf_encrypt.wallet.rootpubkey (skipping)
Traceback (most recent call last):
  File "ArmoryQt.py", line 2783, in loadWalletsAndSettings
  File "armoryengine\Timer.pyc", line 99, in inner
  File "armoryengine\PyBtcWallet.pyc", line 2104, in readWalletFile
  File "armoryengine\PyBtcWallet.pyc", line 2055, in unpackNextEntry
  File "armoryengine\BinaryUnpacker.pyc", line 122, in get
  File "armoryengine\BinaryUnpacker.pyc", line 61, in sizeCheck
UnpackerError
2016-06-14 13:49 (ERROR) -- ArmoryQt.py:2817 - ***WARNING: Wallet could not be loaded: C:\BlockChain\Armory\armory_38zQWgnCf_encrypt.wallet_backup.rootpubkey (skipping)
Traceback (most recent call last):
  File "ArmoryQt.py", line 2783, in loadWalletsAndSettings
  File "armoryengine\Timer.pyc", line 99, in inner
  File "armoryengine\PyBtcWallet.pyc", line 2104, in readWalletFile
  File "armoryengine\PyBtcWallet.pyc", line 2055, in unpackNextEntry
  File "armoryengine\BinaryUnpacker.pyc", line 122, in get
  File "armoryengine\BinaryUnpacker.pyc", line 61, in sizeCheck
UnpackerError
2016-06-14 13:49 (INFO) -- ArmoryQt.py:2822 - Number of wallets read in: 0
2016-06-14 13:49 (INFO) -- ArmoryQt.py:2268 - Setting up networking...
2016-06-14 13:49 (INFO) -- ArmoryQt.py:2297 - Internet status: 0
2016-06-14 13:49 (INFO) -- ArmoryQt.py:2412 - startBitcoindIfNecessary
2016-06-14 13:49 (INFO) -- ArmoryQt.py:2461 - setSatoshiPaths
2016-06-14 13:49 (INFO) -- SDM.pyc:321 - Found bitcoind in the following places:
2016-06-14 13:49 (INFO) -- SDM.pyc:323 -    C:\CryptoWallets\Bitcoin\bitcoind.exe
2016-06-14 13:49 (INFO) -- SDM.pyc:325 - Using: C:\CryptoWallets\Bitcoin\bitcoind.exe
2016-06-14 13:49 (INFO) -- SDM.pyc:496 - Reading bitcoin.conf file
2016-06-14 13:49 (INFO) -- SDM.pyc:502 - No bitcoin.conf available.  Creating it...
2016-06-14 13:49 (INFO) -- SDM.pyc:515 - Setting permissions on bitcoin.conf
2016-06-14 13:49 (INFO) -- SDM.pyc:524 - Setting permissions on bitcoin.conf
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:593 - Executing popen: [u'icacls', u'C:\\BlockChain\\Bitcoin\\bitcoin.conf', u'/inheritance:r', u'/grant:r', u'Ronald:F']
2016-06-14 13:49 (INFO) -- SDM.pyc:530 - icacls returned:
2016-06-14 13:49 (INFO) -- SDM.pyc:597 - Called startBitcoind
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:593 - Executing popen: [u'C:\\CryptoWallets\\Bitcoin\\bitcoind.exe', u'-datadir=C:\\BlockChain\\Bitcoin']
2016-06-14 13:49 (INFO) -- SDM.pyc:669 - PID of bitcoind: 8140
2016-06-14 13:49 (INFO) -- SDM.pyc:670 - PID of armory:   12252
2016-06-14 13:49 (INFO) -- ArmoryUtils.pyc:593 - Executing popen: ['.\\guardian.exe', '12252', '8140']
2016-06-14 13:49 (INFO) -- SDM.pyc:848 - Creating proxy in SDM: host=127.0.0.1, port=8332
2016-06-14 13:49 (INFO) -- ArmoryQt.py:1527 - setupUriRegistration
2016-06-14 13:49 (INFO) -- ArmoryQt.py:1595 - Armory already registered for current user.  Done!
2016-06-14 13:49 (INFO) -- ArmoryQt.py:664 - Usermode: Advanced
2016-06-14 13:49 (INFO) -- ArmoryQt.py:1823 - Changing usermode:
2016-06-14 13:49 (INFO) -- ArmoryQt.py:1824 -    From: Advanced
2016-06-14 13:49 (INFO) -- ArmoryQt.py:1832 -      To: Advanced
2016-06-14 13:49 (INFO) -- ArmoryQt.py:5812 - Dashboard switched to auto-InitSync
2016-06-14 13:49 (INFO) -- ArmoryQt.py:831 - MinimizeOnOpen is True
2016-06-14 13:49 (INFO) -- ArmoryQt.py:2498 - loadBlockchainIfNecessary
2016-06-14 13:49 (INFO) -- ArmoryQt.py:2519 - Setting netmode: 1
2016-06-14 13:49 (INFO) -- ArmoryQt.py:5935 - Dashboard switched to "Scanning" mode
2016-06-14 13:49 (INFO) -- Networking.pyc:64 - Connection initiated.  Start handshake
2016-06-14 13:49 (INFO) -- ArmoryQt.py:5935 - Dashboard switched to "Scanning" mode
2016-06-14 13:49 (INFO) -- Networking.pyc:155 - Received version message from peer:
2016-06-14 13:49 (INFO) -- Networking.pyc:156 -    Version:     70012
2016-06-14 13:49 (INFO) -- Networking.pyc:157 -    SubVersion:  /Satoshi:0.12.1/
2016-06-14 13:49 (INFO) -- Networking.pyc:158 -    TimeStamp:   1465883380
2016-06-14 13:49 (INFO) -- Networking.pyc:159 -    StartHeight: 416229
2016-06-14 13:49 (INFO) -- Networking.pyc:341 - Handshake finished, connection open!
2016-06-14 13:49 (INFO) -- ArmoryQt.py:3121 - Current block number: 416229

armorycpplog.txt
Code:
Log file opened at 1465883354: C:\BlockChain\Armory\armorycpplog.txt
-INFO  - 1465883387: (..\BlockUtils.cpp:924) blkfile dir: C:\BlockChain\Bitcoin\blocks
-INFO  - 1465883387: (..\BlockUtils.cpp:925) lmdb dir: C:\BlockChain\Armory\databases
-INFO  - 1465883387: (..\lmdb_wrapper.cpp:387) Opening databases...
-INFO  - 1465883387: (..\BlockUtils.cpp:1105) Executing: doInitialSyncOnLoad
-INFO  - 1465883387: (..\DatabaseBuilder.cpp:162) Reading headers from db
-INFO  - 1465883388: (..\DatabaseBuilder.cpp:195) Found 416240 headers in db
-INFO  - 1465883390: (..\DatabaseBuilder.cpp:43) updating HEADERS db
-INFO  - 1465883390: (..\DatabaseBuilder.cpp:223) parsed block file #544
-DEBUG - 1465883390: (..\Blockchain.cpp:213) Organizing chain
-INFO  - 1465883390: (..\DatabaseBuilder.cpp:47) updated HEADERS db in 0.246s
-INFO  - 1465883390: (..\DatabaseBuilder.cpp:98) scanning new blocks from #416230 to #416229
-INFO  - 1465883390: (..\BlockchainScanner.cpp:65) no history to scan
-INFO  - 1465883390: (..\BlockchainScanner.cpp:788) no SSH to scan
-INFO  - 1465883390: (..\DatabaseBuilder.cpp:149) scanned new blocks in 0.001s
-INFO  - 1465883390: (..\DatabaseBuilder.cpp:153) init db in 3.165s
-INFO  - 1465883390: (..\BlockDataViewer.cpp:155) Enabling zero-conf tracking
Jump to: