Skip to content

RC2 fixes - #791

Open
goatpig wants to merge 18 commits into
0.97_rc2from
rc2_fixes
Open

goatpig wants to merge 18 commits into
0.97_rc2from
rc2_fixes

Conversation

@goatpig

@goatpig goatpig commented Sep 5, 2026 •

Copy link
Copy Markdown
Owner
  • Fix blockxor file copy: DONE
  • Windows build
  • Implement txhint collision handling: DONE

@tomrobbo

tomrobbo commented Sep 6, 2026

Copy link
Copy Markdown

I built rc2_fixes + my three PRs to check they still work together. The DB loads, new blocks come in from misaligned offsets, and after a new block it only scans that block. Two things got in the way:

  1. Startup died right after "Enabling zero-conf tracking" with an empty "BDM thread failed". gdb on the BDM thread:

    loadZeroConfMempool -> ParsedTx::setTx -> Tx::unserialize -> TxCalcLength (throw)
    

    One of the mempool txs saved by my previous build (5b98eca) doesn't parse on this one. --clear-mempool didn't help - the entries get parsed before the flag is checked, so it dies first. Moving the zeroconf db aside got it running. I've kept the file if you want it.

  2. --rescan aborts straight away:

    BDM thread failed: unexpected db
    

    resetHistoryDatabases() asks for TXOUTS etc. before they've been opened.

One more thing I noticed: TxHintCollision is caught in the zc parser and broadcast paths but not in the scanner - the getDBKeyForHash call at BlockchainScanner.cpp:1062 has no try/catch. That's the path my first-scan crash (#788) came through, so a collision during a wallet scan would presumably still take the DB down. I couldn't re-test it with --rescan broken, short of a full rebuild.

Rotate xor key by file offset in FileCopy::xorMe
@goatpig

goatpig commented Sep 6, 2026

Copy link
Copy Markdown
Owner Author

Startup died right after "Enabling zero-conf tracking" with an empty "BDM thread failed". gdb on the BDM thread:

It would help me if you still had the mempool file. I'd would like to watch the tx in the debugger. If you don't or can't provide the file, could you provide a full backtrace from a debug build instead?

--rescan aborts straight away:

It's likely trying to run the db as DB_BARE, which is current default. Try to give it an explicit --db-type=DB_FULL argument along with --rescan

he getDBKeyForHash call at BlockchainScanner.cpp:1062 has no try/catch.

This code section is entirely disabled until I figure out what I want to do with the tx filters code. It has been so since the rework that reintroduced DB_BARE.

"generic signer error" when creating an unsigned tx with P2SH-P2WPKH inputs
@tomrobbo

tomrobbo commented Sep 6, 2026

Copy link
Copy Markdown

It would help me if you still had the mempool file. I'd would like to watch the tx in the debugger. If you don't or can't provide the file, could you provide a full backtrace from a debug build instead?

Mempool file (from ~/.armory/databases, written by the 5b98eca build): https://we.tl/t-738fezkzd2ZAQeXT

--rescan aborts straight away:

It's likely trying to run the db as DB_BARE, which is current default. Try to give it an explicit --db-type=DB_FULL argument along with --rescan

--rescan was with an explicit DB_FULL:

./ArmoryDB --db-type=DB_FULL --public --ram-usage=2 --rescan
...
dbmode: DB_FULL
Executing: doInitialSyncOnLoad
BDM thread failed: unexpected db

he getDBKeyForHash call at BlockchainScanner.cpp:1062 has no try/catch.

This code section is entirely disabled until I figure out what I want to do with the tx filters code. It has been so since the rework that reintroduced DB_BARE.

Understood

@goatpig

goatpig commented Sep 7, 2026

Copy link
Copy Markdown
Owner Author

latest commit tries to address rescan and zc load issues

This branch has not been deployed

No deployments
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

Successfully merging this pull request may close these issues.

2 participants