Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

UnserializeError: Checksum mismatch in addrStr #31

Closed
dmullaney opened this issue Dec 6, 2012 · 9 comments
Closed

UnserializeError: Checksum mismatch in addrStr #31

dmullaney opened this issue Dec 6, 2012 · 9 comments

Comments

@dmullaney
Copy link

Just installed armory and after syncing bitcoin-qt (latest version) with the network I launched Armory. I get a crash with the following error in the armory.exe.log :

(ERROR) ArmoryQt.py:649 - 3 attempts to load blockchain failed. Remove mempool.bin.
(ERROR) ArmoryQt.py:654 - File mempool.bin does not exist. Nothing deleted.
(ERROR) ArmoryQt.py:649 - 4 attempts to load blockchain failed. Remove mempool.bin.
(ERROR) ArmoryQt.py:654 - File mempool.bin does not exist. Nothing deleted.
(ERROR) ArmoryQt.py:649 - 5 attempts to load blockchain failed. Remove mempool.bin.
(ERROR) ArmoryQt.py:654 - File mempool.bin does not exist. Nothing deleted.
(ERROR) ArmoryQt.py:649 - 6 attempts to load blockchain failed. Remove mempool.bin.
(ERROR) ArmoryQt.py:654 - File mempool.bin does not exist. Nothing deleted.
(ERROR) ArmoryQt.py:649 - 7 attempts to load blockchain failed. Remove mempool.bin.
(ERROR) ArmoryQt.py:654 - File mempool.bin does not exist. Nothing deleted.
(ERROR) qtdialogs.pyc:3471 - User did not accept the EULA
(WARNING) ArmoryQt.py:115 - Armory startup was aborted. Closing.
(ERROR) armoryengine.pyc:7452 - Requested wallet is for a different blockchain!
(ERROR) armoryengine.pyc:7453 - Wallet is for: Main Network
(ERROR) armoryengine.pyc:7454 - ArmoryEngine: Test Network (testnet3)
(WARNING) armoryengine.pyc:1171 - ***Checksum error! Attempting to fix...
(WARNING) armoryengine.pyc:1195 - Checksum fix failed
Unhandled Error
Traceback (most recent call last):
File "ArmoryQt.py", line 3629, in

File "qt4reactor.pyc", line 329, in iterate

--- ---
File "twisted\internet\base.pyc", line 800, in runUntilCurrent

File "ArmoryQt.py", line 930, in execIntroDialog

File "ArmoryQt.py", line 2427, in execImportWallet

File "ArmoryQt.py", line 2442, in execGetImportWltName

File "armoryengine.pyc", line 7567, in readWalletFile

File "armoryengine.pyc", line 2594, in unserialize

armoryengine.UnserializeError: Checksum mismatch in addrStr
(ERROR) ArmoryQt.py:1042 - Could not access latest Armory version information
(ERROR) ArmoryQt.py:1043 - Tried: http://bitcoinarmory.com/versions.txt
(ERROR) armoryengine.pyc:7452 - Requested wallet is for a different blockchain!
(ERROR) armoryengine.pyc:7453 - Wallet is for: Main Network
(ERROR) armoryengine.pyc:7454 - ArmoryEngine: Test Network (testnet3)
(WARNING) armoryengine.pyc:1171 - ***Checksum error! Attempting to fix...
(WARNING) armoryengine.pyc:1195 - Checksum fix failed
(ERROR) Traceback (most recent call last):
File "ArmoryQt.py", line 2427, in execImportWallet
File "ArmoryQt.py", line 2442, in execGetImportWltName
File "armoryengine.pyc", line 7567, in readWalletFile
File "armoryengine.pyc", line 2594, in unserialize
UnserializeError: Checksum mismatch in addrStr

Traceback (most recent call last):
File "ArmoryQt.py", line 2427, in execImportWallet
self.execGetImportWltName()
File "ArmoryQt.py", line 2442, in execGetImportWltName
doScanNow=False)
File "armoryengine.pyc", line 7567, in readWalletFile
File "armoryengine.pyc", line 2594, in unserialize
armoryengine.UnserializeError: Checksum mismatch in addrStr
(ERROR) ArmoryQt.py:649 - 8 attempts to load blockchain failed. Remove mempool.bin.
(ERROR) ArmoryQt.py:654 - File mempool.bin does not exist. Nothing deleted.

@etotheipi
Copy link
Owner

That's a hell of a parade of errors. I didn't even know you could trigger that many consecutive errors in the log file!

It looks like the real source of the problem is that you are loading a main-network wallet into Armory-testnet.

+(ERROR) armoryengine.pyc:7452 - Requested wallet is for a different blockchain!
+(ERROR) armoryengine.pyc:7453 - Wallet is for: Main Network
+(ERROR) armoryengine.pyc:7454 - ArmoryEngine: Test Network (testnet3)

Somehow a main-network wallet has ended up in the .armory/testnet3 directory. I thought I handled that more elegantly, but I guess not. I recommend backing up everything in the .armory/testnet3 directory, and then you can remove it and it will be recreated without any wallets. Then manually import only the wallets you need.

You just made me realize I should have some kind of identifier in the wallet filename to identify the network for which it was created.

@dmullaney
Copy link
Author

Hey, so I updated to the latest version of the client (0.86 Beta) and cleared out the TestNet folder.
I then tried running again and am seeing the same issue. Logs:
2012-12-09 17:35 (INFO) -- armoryengine.pyc:573 -
2012-12-09 17:35 (INFO) -- armoryengine.pyc:574 -
2012-12-09 17:35 (INFO) -- armoryengine.pyc:575 -
2012-12-09 17:35 (INFO) -- armoryengine.pyc:576 - ************************************************************
2012-12-09 17:35 (INFO) -- armoryengine.pyc:577 - Invoked: C:\Program Files (x86)\Armory\Armory Bitcoin Client\Armory.exe
2012-12-09 17:35 (INFO) -- armoryengine.pyc:578 - ************************************************************
2012-12-09 17:35 (INFO) -- armoryengine.pyc:579 - Loading Armory Engine:
2012-12-09 17:35 (INFO) -- armoryengine.pyc:580 - Armory Version : 0.86
2012-12-09 17:35 (INFO) -- armoryengine.pyc:581 - PyBtcWallet Version : 1.35
2012-12-09 17:35 (INFO) -- armoryengine.pyc:582 - Detected Operating system: Windows
2012-12-09 17:35 (INFO) -- armoryengine.pyc:583 - User home-directory : C:\Users\dave\AppData\Roaming
2012-12-09 17:35 (INFO) -- armoryengine.pyc:584 - Satoshi BTC directory : C:\Users\dave\AppData\Roaming\Bitcoin
2012-12-09 17:35 (INFO) -- armoryengine.pyc:585 - Armory home dir : C:\Users\dave\AppData\Roaming\Armory
2012-12-09 17:35 (INFO) -- armoryengine.pyc:586 -
2012-12-09 17:35 (INFO) -- armoryengine.pyc:587 - Network Name: Main Network
2012-12-09 17:35 (INFO) -- armoryengine.pyc:588 - Satoshi Port: 8333
2012-12-09 17:35 (INFO) -- armoryengine.pyc:589 - Named options/arguments to armoryengine.py:
2012-12-09 17:35 (INFO) -- armoryengine.pyc:591 - logDisable : False
2012-12-09 17:35 (INFO) -- armoryengine.pyc:591 - satoshiPort : DEFAULT
2012-12-09 17:35 (INFO) -- armoryengine.pyc:591 - settingsPath : C:\Users\dave\AppData\Roaming\Armory\ArmorySettings.txt
2012-12-09 17:35 (INFO) -- armoryengine.pyc:591 - nettimeout : 2
2012-12-09 17:35 (INFO) -- armoryengine.pyc:591 - doDebug : False
2012-12-09 17:35 (INFO) -- armoryengine.pyc:591 - testnet : False
2012-12-09 17:35 (INFO) -- armoryengine.pyc:591 - netlog : False
2012-12-09 17:35 (INFO) -- armoryengine.pyc:591 - keypool : 100
2012-12-09 17:35 (INFO) -- armoryengine.pyc:591 - datadir : DEFAULT
2012-12-09 17:35 (INFO) -- armoryengine.pyc:591 - satoshiHome : DEFAULT
2012-12-09 17:35 (INFO) -- armoryengine.pyc:591 - forceOnline : False
2012-12-09 17:35 (INFO) -- armoryengine.pyc:591 - offline : False
2012-12-09 17:35 (INFO) -- armoryengine.pyc:591 - mtdebug : False
2012-12-09 17:35 (INFO) -- armoryengine.pyc:591 - interport : 8223
2012-12-09 17:35 (INFO) -- armoryengine.pyc:592 - Other arguments:
2012-12-09 17:35 (INFO) -- armoryengine.pyc:595 - ************************************************************
2012-12-09 17:35 (INFO) -- armoryengine.pyc:732 - C++ block utilities loaded successfully
2012-12-09 17:35 (INFO) -- armoryengine.pyc:11348 - Using the asynchronous/multi-threaded BlockDataManager.
2012-12-09 17:35 (INFO) -- armoryengine.pyc:11349 - Blockchain operations will happen in the background.
2012-12-09 17:35 (INFO) -- armoryengine.pyc:11350 - Devs: check TheBDM.getBDMState() before asking for data.
2012-12-09 17:35 (INFO) -- armoryengine.pyc:11351 - Registering addresses during rescans will queue them for
2012-12-09 17:35 (INFO) -- armoryengine.pyc:11352 - including after the current scan is completed.
2012-12-09 17:35 (INFO) -- armoryengine.pyc:9580 - Using settings file: C:\Users\dave\AppData\Roaming\Armory\ArmorySettings.txt
2012-12-09 17:35 (INFO) -- ArmoryQt.py:1421 - Loading wallets...
2012-12-09 17:35 (INFO) -- ArmoryQt.py:1469 - Number of wallets read in: 1
2012-12-09 17:35 (INFO) -- ArmoryQt.py:1474 - Wallet (21MJN7YyM): "Primary Wallet " (Encrypted)
2012-12-09 17:35 (INFO) -- ArmoryQt.py:1100 - Setting up networking...
2012-12-09 17:35 (INFO) -- ArmoryQt.py:1149 - Internet connection is Available: True
2012-12-09 17:35 (INFO) -- ArmoryQt.py:1150 - Bitcoin-Qt/bitcoind is Available: True
2012-12-09 17:35 (INFO) -- armoryengine.pyc:11293 - Reset Requested
2012-12-09 17:35 (INFO) -- armoryengine.pyc:11297 - Go online requested
2012-12-09 17:35 (INFO) -- ArmoryQt.py:3151 - Dashboard switched to "Scanning" mode
2012-12-09 17:35 (INFO) -- ArmoryQt.py:546 - Usermode: Expert
2012-12-09 17:35 (INFO) -- ArmoryQt.py:964 - Changing usermode:
2012-12-09 17:35 (INFO) -- ArmoryQt.py:965 - From: Expert
2012-12-09 17:35 (INFO) -- ArmoryQt.py:973 - To: Expert
2012-12-09 17:35 (INFO) -- armoryengine.pyc:9199 - Connection initiated. Start handshake
2012-12-09 17:35 (INFO) -- ArmoryQt.py:3151 - Dashboard switched to "Scanning" mode
2012-12-09 17:35 (INFO) -- ArmoryQt.py:1080 - You are running the latest version!
2012-12-09 17:36 (ERROR) -- armoryengine.pyc:9491 - ***Connection to Satoshi client LOST! Attempting to reconnect...
2012-12-09 17:36 (INFO) -- ArmoryQt.py:3151 - Dashboard switched to "Scanning" mode
2012-12-09 17:36 (INFO) -- armoryengine.pyc:9199 - Connection initiated. Start handshake
2012-12-09 17:36 (INFO) -- ArmoryQt.py:3151 - Dashboard switched to "Scanning" mode
2012-12-09 17:36 (INFO) -- armoryengine.pyc:9199 - Connection initiated. Start handshake
2012-12-09 17:36 (INFO) -- ArmoryQt.py:3151 - Dashboard switched to "Scanning" mode
2012-12-09 17:36 (INFO) -- armoryengine.pyc:9452 - Handshake finished, connection open!
2012-12-09 17:36 (INFO) -- armoryengine.pyc:9452 - Handshake finished, connection open!

Crash Dump from WinDbg:
0:002> !analyze -v


  •                                                                         *
    
  •                    Exception Analysis                                   *
    
  •                                                                         *
    

FAULTING_IP:
_CppBlockUtils+a4048
00000000`03aa4048 488b1a mov rbx,qword ptr [rdx]

EXCEPTION_RECORD: ffffffffffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 0000000003aa4048 (_CppBlockUtils+0x00000000000a4048)
ExceptionCode: c0000005 (Access violation)
ExceptionFlags: 00000000
NumberParameters: 2
Parameter[0]: 0000000000000000
Parameter[1]: 0000000009ce1000
Attempt to read from address 0000000009ce1000

FAULTING_THREAD: 0000000000000b40

DEFAULT_BUCKET_ID: INVALID_POINTER_READ

PROCESS_NAME: Armory.exe

ERROR_CODE: (NTSTATUS) 0xc0000005 - The instruction at 0x%08lx referenced memory at 0x%08lx. The memory could not be %s.

EXCEPTION_CODE: (NTSTATUS) 0xc0000005 - The instruction at 0x%08lx referenced memory at 0x%08lx. The memory could not be %s.

EXCEPTION_PARAMETER1: 0000000000000000

EXCEPTION_PARAMETER2: 0000000009ce1000

READ_ADDRESS: 0000000009ce1000

FOLLOWUP_IP:
_CppBlockUtils+a4048
00000000`03aa4048 488b1a mov rbx,qword ptr [rdx]

NTGLOBALFLAG: 0

APPLICATION_VERIFIER_FLAGS: 0

PRIMARY_PROBLEM_CLASS: INVALID_POINTER_READ

BUGCHECK_STR: APPLICATION_FAULT_INVALID_POINTER_READ

LAST_CONTROL_TRANSFER: from 0000000003a66c29 to 0000000003aa4048

STACK_TEXT:
0000000003f8ea10 0000000003a66c29 : 0000000003f8eb88 0000000003e89de0 0000000003c839c8 0000000003e88ee0 : _CppBlockUtils+0xa4048
0000000003f8eac0 0000000003a656c3 : 0000000000000343 0000000003b6b6df 0000000003c83990 0000000000000000 : _CppBlockUtils+0x66c29
0000000003f8eaf0 0000000003a03f02 : 0000000003c83e00 000000000566950b 0000000003d02450 00000000318cd447 : _CppBlockUtils+0x656c3
0000000003f8ebd0 0000000003b6c528 : 000000004a81d380 000000000566950b 000000000770273b 0000000000000004 : _CppBlockUtils+0x3f02
0000000003f8ec10 0000000003b706a0 : 0000000003e88740 0000000003f8f048 0000000000000001 0000000000000000 : _CppBlockUtils!init_CppBlockUtils+0x734f8
0000000003f8edd0 0000000003b54029 : 0000000003084988 0000000003172260 00000000030358c8 0000000000000000 : _CppBlockUtils!init_CppBlockUtils+0x77670
0000000003f8f110 000000001e0c0509 : 00000000045157f0 0000000003e88740 0000000003084988 0000000003e88740 : _CppBlockUtils!init_CppBlockUtils+0x5aff9
0000000003f8f150 000000001e10fa1a : 00000000045157f0 0000000000000000 0000000001cd8048 000000001e0c1ec6 : PYTHON27!PyCFunction_Call+0x69
0000000003f8f180 000000001e1137bf : 00000000030358c8 0000000000000001 0000000004628a28 0000000000000001 : PYTHON27!PyEval_GetGlobals+0x42a
0000000003f8f1e0 000000001e114ee9 : 0000000004628888 fffffffffffffa98 0000000000000001 0000000000000000 : PYTHON27!PyEval_EvalFrameEx+0x377f
0000000003f8f2d0 000000001e10e659 : 000000000300dab0 0000000000000001 0000000000000000 000000001e0a0fb6 : PYTHON27!PyEval_EvalCodeEx+0x7e9
0000000003f8f380 000000001e10ffc4 : 0000000000000001 0000000003084988 0000000003050278 0000000004628318 : PYTHON27!PyEval_GetFuncDesc+0x1c9
0000000003f8f3f0 000000001e1136e4 : 0000000000000000 0000000000000083 0000000004621ca8 00000000046284a0 : PYTHON27!PyEval_GetGlobals+0x9d4
0000000003f8f450 000000001e10e5e8 : 0000000004628318 0000000000000001 0000000000000001 0000000000000000 : PYTHON27!PyEval_EvalFrameEx+0x36a4
0000000003f8f540 000000001e10ffc4 : 0000000000000001 00000000032eb588 00000000032ed908 00000000030d04e8 : PYTHON27!PyEval_GetFuncDesc+0x158
0000000003f8f5b0 000000001e1136e4 : 0000000000000000 0000000000000083 0000000004621ca8 00000000030d0710 : PYTHON27!PyEval_GetGlobals+0x9d4
0000000003f8f610 000000001e10e5e8 : 00000000030d04e8 0000000000000001 0000000000000001 0000000000000000 : PYTHON27!PyEval_EvalFrameEx+0x36a4
0000000003f8f700 000000001e10ffc4 : 0000000000000001 00000000032eb588 00000000032edcf8 00000000032ab718 : PYTHON27!PyEval_GetFuncDesc+0x158
0000000003f8f770 000000001e1136e4 : 0000000000000000 0000000000000083 000000000311d8b8 00000000032ab8b8 : PYTHON27!PyEval_GetGlobals+0x9d4
0000000003f8f7d0 000000001e10e5e8 : 00000000032ab718 0000000000000001 0000000000000001 0000000000000000 : PYTHON27!PyEval_EvalFrameEx+0x36a4
0000000003f8f8c0 000000001e10ffc4 : 0000000000000001 00000000032eb588 0000000001f08668 000000000328a7a8 : PYTHON27!PyEval_GetFuncDesc+0x158
0000000003f8f930 000000001e1136e4 : 0000000000000000 0000000000000083 000000000311d8b8 000000000328a930 : PYTHON27!PyEval_GetGlobals+0x9d4
0000000003f8f990 000000001e114ee9 : 000000000328a7a8 0000000000060bd8 0000000000000001 0000000000000000 : PYTHON27!PyEval_EvalFrameEx+0x36a4
0000000003f8fa80 000000001e0b20c3 : 0000000001ef9b30 0000000000000001 0000000000000000 0000000000000000 : PYTHON27!PyEval_EvalCodeEx+0x7e9
0000000003f8fb30 000000001e08a9b5 : 0000000001f08588 00000000032eb4e0 0000000000000000 00000000032eb4e0 : PYTHON27!PyFunction_SetClosure+0xa73
0000000003f8fbc0 000000001e098db1 : 00000000032eb4e0 0000000001f08588 0000000000000000 0000000000000000 : PYTHON27!PyObject_Call+0x65
0000000003f8fbf0 000000001e08a9b5 : 0000000002e48828 0000000001cd8048 0000000000000000 000000001e098c60 : PYTHON27!PyMethod_New+0x911
0000000003f8fe40 000000001e10e3e8 : 0000000001cd8048 0000000000000000 0000000002e48828 000000001e061ff0 : PYTHON27!PyObject_Call+0x65
0000000003f8fe70 000000001e062033 : 00000000031770b0 000000001e061ff0 0000000000000000 0000000000000000 : PYTHON27!PyEval_CallObjectWithKeywords+0xc8
0000000003f8fea0 000000001e148be5 : 00000000001e4140 0000000000000000 0000000000000000 0000000000000000 : PYTHON27!PyOS_InitInterrupts+0x2e93
0000000003f8fed0 00000000723e2fdf : 0000000001da5160 0000000000000000 0000000000000000 0000000000000000 : PYTHON27!PySys_WriteStderr+0x205
0000000003f8ff00 00000000723e3080 : 000000007246fad0 0000000001da5160 0000000000000000 0000000000000000 : MSVCR90!endthreadex+0x47
0000000003f8ff30 00000000776e652d : 0000000000000000 0000000000000000 0000000000000000 0000000000000000 : MSVCR90!endthreadex+0xe8
0000000003f8ff60 0000000077a7c521 : 0000000000000000 0000000000000000 0000000000000000 0000000000000000 : kernel32!BaseThreadInitThunk+0xd
0000000003f8ff90 0000000000000000 : 0000000000000000 0000000000000000 0000000000000000 0000000000000000 : ntdll!RtlUserThreadStart+0x1d

SYMBOL_STACK_INDEX: 0

SYMBOL_NAME: _CppBlockUtils+a4048

FOLLOWUP_NAME: MachineOwner

MODULE_NAME: _CppBlockUtils

DEBUG_FLR_IMAGE_TIMESTAMP: 50c2353e

STACK_COMMAND: ~2s ; kb

BUCKET_ID: X64_APPLICATION_FAULT_INVALID_POINTER_READ__CppBlockUtils+a4048

IMAGE_NAME: C:\Program Files (x86)\Armory\Armory Bitcoin Client_CppBlockUtils.pyd

FAILURE_BUCKET_ID: INVALID_POINTER_READ_c0000005_C:Program_Files(x86)_Armory_Armory_Bitcoin_Client__CppBlockUtils.pyd!Unknown

Followup: MachineOwner

@etotheipi
Copy link
Owner

That doesn't look like the same error, but it's definitely an error. Looks like a seg fault, probably while reading the blockchain files.

Can you please confirm whether offline mode works? (there is a launcher in the Start Menu, or create a shortcut and add " --offline" to the target

@dmullaney
Copy link
Author

Yea works perfect in offline mode. Anything I can do to try to resolve this my end?

@etotheipi
Copy link
Owner

If it's not too terrible for you, re-naming the blockchain files and letting it redownload would be useful -- but I know that can be extremely slow and inconvenient. I suggest it, because it looks like it could be one of these rare errors where blockchain scanning actually segfaults -- but I've never gotten ahold of such a blk file...

If redownloading the blockchain from the network helps, then I would pay you a BTC to upload the bad blk files to me (I'll arrange for the upload separately, once we know if that is it). I have seen this re-download resolve the seg fault issue a few times in the last 6 months. Unfortunately, with you in Windows, there's not a whole lot of useful debugging info I can get out of you... :(

@dmullaney
Copy link
Author

Yea, no worries. I've rar'd up the blk the files, so they're ready to go whenever you want them.

@etotheipi
Copy link
Owner

Before transferring, let's make sure that's the problem. Put the rar'd version aside, and delete the blk000_.dat files (and blkindex.dat). Next time you open Bitcoin-Qt it was start doing a fresh sync and redownload everything. When it's done (in 24 hr?) Armory will start if that happened to be the problem. If Armory works after that, *then_ send the files to me.

@dmullaney
Copy link
Author

That fixed it alright - Let me know if you still want the blk files.

Thanks a mil for your help!

@etotheipi
Copy link
Owner

Absolutely! Maybe I can finally figure out what is causing this mysterious problem (I get like one report of it every 2 months). Please email me etotheipi at gmail dot com. I appreciate you offering to upload it to me.

josephbisch pushed a commit to josephbisch/BitcoinArmory that referenced this issue Aug 18, 2016
Remove extraneous markup from Stack Overflow icon
TierNolan pushed a commit to TierNolan/BitcoinArmory that referenced this issue Nov 23, 2018
af2da22 Add new tests for invalid Bech32 strings (Clark Moody)

Pull request description:

  Similar updates in the vein of etotheipi#27, etotheipi#29, etotheipi#30, etotheipi#31, etotheipi#32

  Adds invalid Bech32 string test cases.

  Please note: Rust strings are UTF-8, so that the character literal `0xff` [turns into](https://codepoints.net/U+00FF) `0xc3bf` when accessed with the `bytes` function.

Tree-SHA512: 73f85762fc22059acb9c4b382068997fb0341354f1de26ecb2d75ba3c57aee80609fd2839967541c9a9f96ccdc04137140174396f5acfe62a6511fd9f18e703e
TierNolan pushed a commit to TierNolan/BitcoinArmory that referenced this issue Nov 23, 2018
91bd873 Update Go tests (Pieter Wuille)

Pull request description:

Tree-SHA512: e908de38f7a40bf9c0738012134ed2e8c42d18d9608b2cd335d6f08c0fc1166701ab47c363329e3a6a2fd354a00e112cfee52d50bfd7317064d8751cbbd28868
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants