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

Bug: electrs will not run on a big-endian machine. yes, i know, who would try to do that anyway other than an IBMer! :) #414

Closed
jlatone opened this issue Jun 19, 2021 · 17 comments
Labels
bug Something isn't working

Comments

@jlatone
Copy link

jlatone commented Jun 19, 2021

Describe the bug
electrs effectively stops running after the following error message:

thread 'bulk_index' panicked at 'index 2497364531 out of range for slice of length 133729722', src/libcore/slice/mod.rs:2674:5

To Reproduce
Steps to reproduce the behavior:

  1. start electrs
  2. it waits for a locally running bitcoind to sync

electrs | WARN - wait until IBD is over: headers=688177 blocks=688052 progress=0.9994805920510615
electrs | WARN - wait until IBD is over: headers=688177 blocks=688058 progress=0.9995014055113616

  1. once bitcoind sync'd, it starts building the index

electrs | DEBUG - opening DB at "/data/db/mainnet"
electrs | TRACE - latest indexed blockhash: 0000000000000000000000000000000000000000000000000000000000000000
electrs | INFO - listing block files at "/data/.bitcoin/blocks/blk*.dat"
electrs | INFO - indexing 2627 blk*.dat files
electrs | DEBUG - found 0 indexed blocks
electrs | TRACE - downloading 100000 block headers
...
electrs | DEBUG - applying 688073 new headers from height 0
electrs | TRACE - indexed "/data/.bitcoin/blocks/blk00000.dat": 0 rows
electrs | TRACE - indexed "/data/.bitcoin/blocks/blk00001.dat": 0 rows
electrs | TRACE - indexed "/data/.bitcoin/blocks/blk00002.dat": 0 rows

  1. the following errors are logged and electrs sleeps forever after the last one

electrs | TRACE - indexed "/data/.bitcoin/blocks/blk00040.dat": 0 rows
electrs | thread 'bulk_index' panicked at 'index 1457594409 out of range for slice of length 134058325', src/libcore/slice/mod.rs:2674:5
...
electrs | TRACE - indexed "/data/.bitcoin/blocks/blk00077.dat": 0 rows
electrs | thread 'bulk_index' panicked at 'index 3347378801 out of range for slice of length 133998011', src/libcore/slice/mod.rs:2674:5
...
electrs | TRACE - indexed "/data/.bitcoin/blocks/blk00260.dat": 0 rows
electrs | thread 'bulk_index' panicked at 'index 613586893 out of range for slice of length 133644501', src/libcore/slice/mod.rs:2674:5
...electrs | TRACE - indexed "/data/.bitcoin/blocks/blk00352.dat": 0 rows
electrs | thread 'bulk_index' panicked at 'index 2497364531 out of range for slice of length 133729722', src/libcore/slice/mod.rs:2674:5

Expected behavior
No "panicked" error messages about indexes out of range from rust.

System running electrs

  • Deployment method: Docker
  • OS name and version (name of distribution and version in case of Linux)
    Operating System: Ubuntu 20.04.2 LTS
    Kernel: Linux 5.4.0-74-generic
    Architecture: s390x

Additional context
This is running on an IBM Z (mainframe, 64-bit, big endian) running Linux. I mention this because the machine is big endian and I wonder if there's a endian issue somewhere (in a dependent library, in rust, etc) causing the above problem. I'm only looking for a pointer to where I should start looking if the error messages above might indicate anything obvious (googling it related to electrs/electrum didn't turn up much of anything).

@jlatone jlatone added the bug Something isn't working label Jun 19, 2021
@jlatone
Copy link
Author

jlatone commented Jun 22, 2021

I did verify the endian-ness issue, e.g., Bitcoin's block magic number isn't matched in src/bulk.rs (HERE below), not to mention other places in this function and perhaps elsewhere in electrs where endian-ness needs to be addressed. I don't know Rust but I'll look into its set of byte-ordering functions to fix this one, though I'm not sure how wide-spread the issue is.

(I may change the title on this issue to make it more pertinent. I suspect the exception in the issue description above gets thrown when the magic number happens to match 4-bytes somewhere in the .dat file and then it's over.)

fn parse_blocks(blob: Vec<u8>, magic: u32) -> Result<Vec<Block>> {
    let mut cursor = Cursor::new(&blob);
    let mut blocks = vec![];
    let max_pos = blob.len() as u64;
    while cursor.position() < max_pos {
        let offset = cursor.position();
        match u32::consensus_decode(&mut cursor) {
            Ok(value) => {
                if magic != value {    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< HERE
                    cursor.set_position(offset + 1);
                    continue;
                }
            }
            Err(_) => break, // EOF
        };
        let block_size = u32::consensus_decode(&mut cursor).chain_err(|| "no block size")?;
        let start = cursor.position();
        let end = start + block_size as u64;

        // If Core's WriteBlockToDisk ftell fails, only the magic bytes and size will be written
        // and the block body won't be written to the blk*.dat file.
        // Since the first 4 bytes should contain the block's version, we can skip such blocks
        // by peeking the cursor (and skipping previous `magic` and `block_size`).
        match u32::consensus_decode(&mut cursor) {
            Ok(value) => {
                if magic == value {
                    cursor.set_position(start);
                    continue;
                }
            }
            Err(_) => break, // EOF
        }
        let block: Block = deserialize(&blob[start as usize..end as usize])
            .chain_err(|| format!("failed to parse block at {}..{}", start, end))?;
        blocks.push(block);
        cursor.set_position(end as u64);
    }
    Ok(blocks)
}

@jlatone jlatone changed the title Bug: "out of range for slice of length" error Bug: electrs will not run on a big-endian machine. yes, i know, who would try to do that anyway other than an IBMer! :) Jun 22, 2021
@jlatone
Copy link
Author

jlatone commented Jun 23, 2021

Until I get around to testing and contributing it, this patch appears to address at least part of the endian issue (look for "endian"...there may be a less verbose way to express it in Rust). There are other areas, too, e.g., in mempool.rs (txid).

--- ../../electrs/src/bulk.rs	2021-06-22 18:29:27.407193120 -0400
+++ src/bulk.rs	2021-06-22 19:15:06.566836862 -0400
@@ -121,8 +121,7 @@
     while cursor.position() < max_pos {
         let offset = cursor.position();
         match u32::consensus_decode(&mut cursor) {
-            Ok(_value) => {
-                let value = if cfg!(target_endian = "big") { _value.to_le() } else { _value };
+            Ok(value) => {
                 if magic != value {
                     cursor.set_position(offset + 1);
                     continue;
@@ -130,8 +129,7 @@
             }
             Err(_) => break, // EOF
         };
-        let _block_size = u32::consensus_decode(&mut cursor).chain_err(|| "no block size")?;
-        let block_size = if cfg!(target_endian = "big") { _block_size.to_le() } else { _block_size };
+        let block_size = u32::consensus_decode(&mut cursor).chain_err(|| "no block size")?;
         let start = cursor.position();
         let end = start + block_size as u64;

@@ -140,8 +138,7 @@
         // Since the first 4 bytes should contain the block's version, we can skip such blocks
         // by peeking the cursor (and skipping previous `magic` and `block_size`).
         match u32::consensus_decode(&mut cursor) {
-            Ok(_value) => {
-                let value = if cfg!(target_endian = "big") { _value.to_le() } else { _value };
+            Ok(value) => {
                 if magic == value {
                     cursor.set_position(start);
                     continue;

@Kixunil
Copy link
Contributor

Kixunil commented Jun 23, 2021

Perhaps send it in the form of PR? It's easier to review that way.

@romanz
Copy link
Owner

romanz commented Jun 23, 2021

@jlatone could you please test p2p branch? It doesn't read blk*.dat files - so it should work also on big-endian platforms.

@romanz
Copy link
Owner

romanz commented Jun 23, 2021

There are other areas, too, e.g., in mempool.rs (txid).

Could you please share the error you're getting there?

@jlatone
Copy link
Author

jlatone commented Jun 23, 2021

Perhaps send it in the form of PR? It's easier to review that way.

I will, I want to test it more for completeness and make sure it's ok rust code (I don't know the language). So far so good, though, other than the issue raised in mempool.rs (I'll reply to @romanz).

@jlatone
Copy link
Author

jlatone commented Jun 23, 2021

@jlatone could you please test p2p branch? It doesn't read blk*.dat files - so it should work also on big-endian platforms.

Oh, I didn't know about it, I'll try it today.

@jlatone
Copy link
Author

jlatone commented Jun 23, 2021

Could you please share the error you're getting there?

Sure, and this may be obvious but I haven't spotted it, yet: the following assertion fails (full stack trace follows).

src/mempool.rs:218 assert_eq!(tx.txid(), *txid);

I thought it may be a byte ordering issue with the assertion only, but it doesn't appear to be judging from the left/right values (I looked up the hash values on blockchain.com and the left one doesn't exist and the right one is unconfirmed in the mempool at the time of this post). I suspect there's something more fundamental wrong with byte ordering here, even if electrs seems to be working (I do connect to it from an electrum wallet and it does simple things correctly, like txn lookups).

[Edit: Oh, I should have mentioned: I "fixed" the above problem by commenting it out, :), just to get electrs to continue...]

$ RUST_BACKTRACE=full target/release/electrs --conf electrs.toml
Config { log: StdErrLog { verbosity: Trace, quiet: false, show_level: true, timestamp: Millisecond, modules: [], writer: "stderr", color_choice: Auto }, network_type: Bitcoin, db_path: "/home1/umbrels390x/umbrel/electrs/db/mainnet", daemon_dir: "/home1/umbrels390x/umbrel/bitcoin", blocks_dir: "/home1/umbrels390x/umbrel/bitcoin//blocks", daemon_rpc_addr: 10.21.21.8:8332, electrum_rpc_addr: 0.0.0.0:50001, monitoring_addr: 127.0.0.1:4224, jsonrpc_import: false, index_batch_size: 10, bulk_index_threads: 4, tx_cache_size: 10485760, txid_limit: 100, server_banner: "Joe Test", blocktxids_cache_size: 10485760 }
2021-06-23T15:08:57.118-04:00 - DEBUG - Server listening on 127.0.0.1:4224
2021-06-23T15:08:57.119-04:00 - DEBUG - Running accept thread
2021-06-23T15:08:57.119-04:00 - INFO - NetworkInfo { version: 210100, subversion: "/Satoshi:0.21.1/", relayfee: 0.00001 }
2021-06-23T15:08:57.120-04:00 - INFO - BlockchainInfo { chain: "main", blocks: 688608, headers: 688608, verificationprogress: 0.9999976559118524, bestblockhash: "0000000000000000000a21b866fc1e2d10ac91c6a7ce2aa24d8320fafa827d45", pruned: false, initialblockdownload: false }
2021-06-23T15:08:57.120-04:00 - DEBUG - opening DB at "/home1/umbrels390x/umbrel/electrs/db/mainnet"
2021-06-23T15:08:57.131-04:00 - TRACE - latest indexed blockhash: 0000000000000000000a21b866fc1e2d10ac91c6a7ce2aa24d8320fafa827d45
2021-06-23T15:08:59.269-04:00 - DEBUG - applying 688609 new headers from height 0
2021-06-23T15:08:59.496-04:00 - INFO - enabling auto-compactions
2021-06-23T15:08:59.501-04:00 - DEBUG - relayfee: 0.00001 BTC
2021-06-23T15:08:59.501-04:00 - DEBUG - downloading new block headers (688609 already indexed) from 0000000000000000000a21b866fc1e2d10ac91c6a7ce2aa24d8320fafa827d45
2021-06-23T15:08:59.501-04:00 - TRACE - downloaded 0 block headers
2021-06-23T15:08:59.502-04:00 - DEBUG - applying 0 new headers from height 688609
2021-06-23T15:09:11.559-04:00 - INFO - Electrum RPC server running on 0.0.0.0:50001 (protocol 1.4)
^C2021-06-23T15:09:19.880-04:00 - TRACE - notified via SIG2
2021-06-23T15:09:19.880-04:00 - INFO - stopping server: Interrupted by signal 2
2021-06-23T15:09:19.880-04:00 - TRACE - stop accepting new RPCs
2021-06-23T15:09:19.880-04:00 - TRACE - closing 0 RPC connections
2021-06-23T15:09:19.880-04:00 - TRACE - RPC connections are closed
2021-06-23T15:09:19.880-04:00 - TRACE - RPC server is stopped
2021-06-23T15:09:20.043-04:00 - TRACE - closing DB at "/home1/umbrels390x/umbrel/electrs/db/mainnet"
here 1here 2here 3here 4here 5here 6here numbrel@silusa03:/home1/umbrels390x/my-repos/electrs$ vi src/mempool.rs
umbrel@silusa03:/home1/umbrels390x/my-repos/electrs$ ROCKSDB_INCLUDE_DIR=/usr/include ROCKSDB_LIB_DIR=/usr/lib cargo build --locked --no-default-features --release
   Compiling electrs v0.8.10 (/home1/umbrels390x/my-repos/electrs)
    Finished release [optimized] target(s) in 2m 03s
umbrel@silusa03:/home1/umbrels390x/my-repos/electrs$ vi src/mempool.rs
umbrel@silusa03:/home1/umbrels390x/my-repos/electrs$ RUST_BACKTRACE=full target/release/electrs --conf electrs.toml
Config { log: StdErrLog { verbosity: Trace, quiet: false, show_level: true, timestamp: Millisecond, modules: [], writer: "stderr", color_choice: Auto }, network_type: Bitcoin, db_path: "/home1/umbrels390x/umbrel/electrs/db/mainnet", daemon_dir: "/home1/umbrels390x/umbrel/bitcoin", blocks_dir: "/home1/umbrels390x/umbrel/bitcoin//blocks", daemon_rpc_addr: 10.21.21.8:8332, electrum_rpc_addr: 0.0.0.0:50001, monitoring_addr: 127.0.0.1:4224, jsonrpc_import: false, index_batch_size: 10, bulk_index_threads: 4, tx_cache_size: 10485760, txid_limit: 100, server_banner: "Joe Test", blocktxids_cache_size: 10485760 }
2021-06-23T15:14:09.743-04:00 - DEBUG - Server listening on 127.0.0.1:4224
2021-06-23T15:14:09.743-04:00 - DEBUG - Running accept thread
2021-06-23T15:14:09.744-04:00 - INFO - NetworkInfo { version: 210100, subversion: "/Satoshi:0.21.1/", relayfee: 0.00001 }
2021-06-23T15:14:09.744-04:00 - INFO - BlockchainInfo { chain: "main", blocks: 688609, headers: 688609, verificationprogress: 0.9999986258823316, bestblockhash: "0000000000000000000249a8dfd2848369f05efb1bf22627df117ace840d2118", pruned: false, initialblockdownload: false }
2021-06-23T15:14:09.745-04:00 - DEBUG - opening DB at "/home1/umbrels390x/umbrel/electrs/db/mainnet"
2021-06-23T15:14:09.756-04:00 - TRACE - latest indexed blockhash: 0000000000000000000a21b866fc1e2d10ac91c6a7ce2aa24d8320fafa827d45
2021-06-23T15:14:11.789-04:00 - DEBUG - applying 688609 new headers from height 0
2021-06-23T15:14:12.016-04:00 - INFO - enabling auto-compactions
2021-06-23T15:14:12.020-04:00 - DEBUG - relayfee: 0.00001 BTC
2021-06-23T15:14:12.020-04:00 - DEBUG - downloading new block headers (688609 already indexed) from 0000000000000000000249a8dfd2848369f05efb1bf22627df117ace840d2118
2021-06-23T15:14:12.021-04:00 - TRACE - downloaded 1 block headers
2021-06-23T15:14:12.021-04:00 - INFO - best=0000000000000000000249a8dfd2848369f05efb1bf22627df117ace840d2118 height=688609 @ 1971-05-07T09:18:24Z (1 left to index)
2021-06-23T15:14:12.104-04:00 - DEBUG - applying 1 new headers from height 688609
thread 'main' panicked at 'assertion failed: `(left == right)`
  left: `f65a7258b9e0f743d5bc3c4c81c28b70a5dd590795796fb867361da5326f6401`,
 right: `49c7e9860f6af47eec81b44b72d541444eb06e5c93ae7bc8b696647f9221903a`', src/mempool.rs:219:21
stack backtrace:
   0:      0x2aa1d75e5ae - std::backtrace_rs::backtrace::libunwind::trace::h689880d970358ed7
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/../../backtrace/src/backtrace/libunwind.rs:96
   1:      0x2aa1d75e5ae - std::backtrace_rs::backtrace::trace_unsynchronized::hb9ab8a9039808186
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/../../backtrace/src/backtrace/mod.rs:66
   2:      0x2aa1d75e5ae - std::sys_common::backtrace::_print_fmt::hbb074995e5f46bb9
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/sys_common/backtrace.rs:79
   3:      0x2aa1d75e5ae - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h166a3435f1ebe346
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/sys_common/backtrace.rs:58
   4:      0x2aa1d3a75aa - core::fmt::write::h8b4108697d5241f2
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/core/src/fmt/mod.rs:1082
   5:      0x2aa1d78adee - std::io::Write::write_fmt::h3403d93f9caf93cc
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/io/mod.rs:1514
   6:      0x2aa1d78adee - std::sys_common::backtrace::_print::hcf657fa446f51fed
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/sys_common/backtrace.rs:61
   7:      0x2aa1d78adee - std::sys_common::backtrace::print::hcd881c8f1eb6560d
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/sys_common/backtrace.rs:48
   8:      0x2aa1d78adee - std::panicking::default_hook::{{closure}}::h4e1fb170e2733b87
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/panicking.rs:200
   9:      0x2aa1d78adee - std::panicking::default_hook::h7ada06cabfc90b05
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/panicking.rs:219
  10:      0x2aa1d78adee - std::panicking::rust_panic_with_hook::h6b0223f79e36ee07
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/panicking.rs:569
  11:      0x2aa1d75f804 - std::panicking::begin_panic_handler::{{closure}}::h8431d8d166b433f8
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/panicking.rs:476
  12:      0x2aa1d75f7c6 - std::sys_common::backtrace::__rust_end_short_backtrace::h6b95ca77725bc954
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/sys_common/backtrace.rs:153
  13:      0x2aa1d789eec - rust_begin_unwind
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/panicking.rs:475
  14:      0x2aa1d789ea8 - std::panicking::begin_panic_fmt::hb7513fc411d5bfe8
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/panicking.rs:429
  15:      0x2aa1d3e6998 - electrs::mempool::Tracker::update::h37c9f59fa86ce7a5
  16:      0x2aa1d4bbf3c - electrs::query::Query::update_mempool::hf1d66dda2325d841
  17:      0x2aa1d352656 - electrs::main::h32ccbb69d52bfc03
  18:      0x2aa1d52202c - std::sys_common::backtrace::__rust_begin_short_backtrace::he93c6f1bde289991
  19:      0x2aa1d5313b6 - std::rt::lang_start::{{closure}}::h0d65ea4e8e4e7c2c
  20:      0x2aa1d789d72 - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::h7aa3f9caabfca7a6
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/core/src/ops/function.rs:259
  21:      0x2aa1d789d72 - std::panicking::try::do_call::h671152cfe35f0c58
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/panicking.rs:373
  22:      0x2aa1d789d24 - __rust_try.llvm.8933322167181837671
  23:      0x2aa1d530fd8 - std::rt::lang_start::h87700668465d4d41
  24:      0x3ffae8ab39a - __libc_start_main
  25:      0x2aa1d34a964 - <unknown>
  26:                0x0 - <unknown>
2021-06-23T15:14:12.280-04:00 - TRACE - closing DB at "/home1/umbrels390x/umbrel/electrs/db/mainnet"

@jlatone
Copy link
Author

jlatone commented Jun 25, 2021

@jlatone could you please test p2p branch? It doesn't read blk*.dat files - so it should work also on big-endian platforms.

OK, I tried the p2p branch of electrs and ran into 2 problems that appear to be byte-order issues:

  1. electrs immediately fails with this error:
Error: failed to get headers
Caused by:
    0: p2p failed to recv
    1: I/O error: unexpected end of file

The bitcoind log show this:

2021-06-25T02:54:48Z Added connection peer=23
2021-06-25T02:54:48Z connection from 127.0.0.1:54400 accepted
2021-06-25T02:54:48Z HEADER ERROR - MESSAGESTART (version, 1560281088 bytes), received d9b4bef9, peer=23
2021-06-25T02:54:48Z disconnecting peer=23
2021-06-25T02:54:48Z Cleared nodestate for peer=23
  1. I ran the tests, and test_scripthash_row failed because of byte ordering (note the lower 4 bytes in "a384491d38929fcc40e20100" and the values of right & left in the assert error message just below).
    #[test]
    fn test_scripthash_row() {
        let hex = "\"4b3d912c1523ece4615e91bf0d27381ca72169dbf6b1c2ffcc9f92381d4984a3\"";
        let scripthash: ScriptHash = from_str(&hex).unwrap();
        let row1 = ScriptHashRow::new(scripthash, 123456);
        let db_row = row1.to_db_row();
        assert_eq!(db_row[..].to_hex(), "a384491d38929fcc40e20100");
        let row2 = ScriptHashRow::from_db_row(&db_row);
        assert_eq!(row1, row2);
    }

$ RUST_BACKTRACE=full cargo test --locked --release --all
    Finished release [optimized] target(s) in 0.07s
     Running target/release/deps/electrs-5310156c594f0bab

running 8 tests
test chain::tests::test_genesis ... ok
test mempool::tests::test_histogram ... ok
test types::tests::test_scripthash ... ok
test types::tests::test_scripthash_serde ... ok
test types::tests::test_spending_prefix ... ok
test chain::tests::test_updates ... ok
test types::tests::test_scripthash_row ... FAILED
test merkle::tests::test_merkle ... FAILED

failures:

---- types::tests::test_scripthash_row stdout ----
thread 'types::tests::test_scripthash_row' panicked at 'assertion failed: `(left == right)`
  left: `"a384491d38929fcc0001e240"`,
 right: `"a384491d38929fcc40e20100"`', src/types.rs:258:9
stack backtrace:
   0:      0x2aa2501d098 - std::backtrace_rs::backtrace::libunwind::trace::h689880d970358ed7
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/../../backtrace/src/backtrace/libunwind.rs:96
   1:      0x2aa2501d098 - std::backtrace_rs::backtrace::trace_unsynchronized::hb9ab8a9039808186
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/../../backtrace/src/backtrace/mod.rs:66
   2:      0x2aa2501d098 - std::sys_common::backtrace::_print_fmt::hbb074995e5f46bb9
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/sys_common/backtrace.rs:79
   3:      0x2aa2501d098 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h166a3435f1ebe346
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/sys_common/backtrace.rs:58
   4:      0x2aa250658fa - core::fmt::write::h8b4108697d5241f2
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/core/src/fmt/mod.rs:1082
   5:      0x2aa24fb6e22 - std::io::Write::write_fmt::h47d354c3d7b9e04d
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/io/mod.rs:1514
   6:      0x2aa2503fc76 - std::io::impls::<impl std::io::Write for alloc::boxed::Box<W>>::write_fmt::h59012aafbd9238b7
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/io/impls.rs:176
   7:      0x2aa2503fc76 - std::sys_common::backtrace::_print::hcf657fa446f51fed
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/sys_common/backtrace.rs:61
   8:      0x2aa2503fc76 - std::sys_common::backtrace::print::hcd881c8f1eb6560d
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/sys_common/backtrace.rs:48
   9:      0x2aa2503fc76 - std::panicking::default_hook::{{closure}}::h4e1fb170e2733b87
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/panicking.rs:200
  10:      0x2aa2503fc76 - std::panicking::default_hook::h7ada06cabfc90b05
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/panicking.rs:216
  11:      0x2aa250408f8 - std::panicking::rust_panic_with_hook::h6b0223f79e36ee07
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/panicking.rs:569
  12:      0x2aa2501d3b0 - std::panicking::begin_panic_handler::{{closure}}::h8431d8d166b433f8
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/panicking.rs:476
  13:      0x2aa2501d36a - std::sys_common::backtrace::__rust_end_short_backtrace::h6b95ca77725bc954
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/sys_common/backtrace.rs:153
  14:      0x2aa250404ca - rust_begin_unwind
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/panicking.rs:475
  15:      0x2aa25040476 - std::panicking::begin_panic_fmt::hb7513fc411d5bfe8
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/panicking.rs:429
  16:      0x2aa24f99e84 - electrs::types::tests::test_scripthash_row::h2e6b34aeace3194b
  17:      0x2aa24fb4c5c - core::ops::function::FnOnce::call_once::h328e64916fd1ee34
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/core/src/ops/function.rs:227
  18:      0x2aa24fb4c5c - test::__rust_begin_short_backtrace::hf1881f60b3ac6e80
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/test/src/lib.rs:517
  19:      0x2aa24fb70f2 - <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once::h459f09e7c3b7b1bb
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/alloc/src/boxed.rs:1042
  20:      0x2aa24fb70f2 - <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h653079b4eb6a4b2d
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/panic.rs:308
  21:      0x2aa24fb70f2 - std::panicking::try::do_call::hae8757eb918fdce9
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/panicking.rs:373
  22:      0x2aa24fba44c - __rust_try.llvm.4074801633764803404
  23:      0x2aa24fb4e82 - std::panicking::try::h35d359795664d2d8
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/panicking.rs:337
  24:      0x2aa24fb4e82 - std::panic::catch_unwind::h04ca1441b1752b08
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/panic.rs:379
  25:      0x2aa24fb4e82 - test::run_test_in_process::hb8721f753ce2b4cf
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/test/src/lib.rs:544
  26:      0x2aa24fba592 - test::run_test::run_test_inner::{{closure}}::h5d87ed72b7fb5ad1
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/test/src/lib.rs:450
  27:      0x2aa24fba592 - std::sys_common::backtrace::__rust_begin_short_backtrace::hf5295fdc5843b084
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/sys_common/backtrace.rs:137
  28:      0x2aa24fb702a - std::thread::Builder::spawn_unchecked::{{closure}}::{{closure}}::hbd28861ce68488de
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/thread/mod.rs:458
  29:      0x2aa24fb702a - <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h36e3663b4c20f3f0
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/panic.rs:308
  30:      0x2aa24fb702a - std::panicking::try::do_call::h187ec7a5b71c784d
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/panicking.rs:373
  31:      0x2aa24fba44c - __rust_try.llvm.4074801633764803404
  32:      0x2aa24fba966 - std::panicking::try::h56521f35684b1cad
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/panicking.rs:337
  33:      0x2aa24fba966 - std::panic::catch_unwind::hcd7d62b8eaaba7f9
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/panic.rs:379
  34:      0x2aa24fba966 - std::thread::Builder::spawn_unchecked::{{closure}}::hcd2cbb468ece7341
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/thread/mod.rs:457
  35:      0x2aa24fba966 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h6a521a4eeb51836d
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/core/src/ops/function.rs:227
  36:      0x2aa250415be - <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once::h2574e0f2a778d3e2
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/alloc/src/boxed.rs:1042
  37:      0x2aa250415be - <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once::he7fd444ac6a444f0
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/alloc/src/boxed.rs:1042
  38:      0x2aa250415be - std::sys::unix::thread::Thread::new::thread_start::h1e5667e558bf5f40
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/sys/unix/thread.rs:87
  39:      0x3ffa8609986 - start_thread
  40:      0x3ffa8483cc6 - <unknown>
  41:                0x0 - <unknown>

---- merkle::tests::test_merkle stdout ----
"src/tests/blocks/00000000000000001203c1ea455e38612bdf36e9967fdead11935c8e22283ecc"
thread 'merkle::tests::test_merkle' panicked at 'assertion failed: `(left == right)`
  left: `["5d8cfb001d9ec17861ad9c158244239cb6e3298a619b2a5f7b176ddd54459c75", "06811172e13312f2e496259d2c8a7262f1192be5223fcf4d6a9ed7f58a2175ba", "cbcec841dea3294706809d1510c72b4424d141fac89106af65b70399b1d79f3f", "a24d6c3601a54d40f4350e6c8887bf82a873fe8619f95c772b573ec0373119d3", "2015c1bb133ee2c972e55fdcd205a9aee7b0122fd74c2f5d5d27b24a562c7790", "44070a9a72d04d9bbc62ceb06f1911e33334ff1bc0f14a019c23b22c6e743e60", "7a798d6529663fd472d26cc90c434b64f78955747ac2f93c8dcd35b8f684946e", "ad3811062b8db664f2342cbff1b491865310b74416dd7b901f14d980886821f8"]`,
 right: `["5d8cfb001d9ec17861ad9c158244239cb6e3298a619b2a5f7b176ddd54459c75", "06811172e13312f2e496259d2c8a7262f1192be5223fcf4d6a9ed7f58a2175ba", "cbcec841dea3294706809d1510c72b4424d141fac89106af65b70399b1d79f3f", "a24d6c3601a54d40f4350e6c8887bf82a873fe8619f95c772b573ec0373119d3", "2015c1bb133ee2c972e55fdcd205a9aee7b0122fd74c2f5d5d27b24a562c7790", "f379496fef2e603c4e1c03e2179ebaf5153d6463b8d61aa16d41db3321a18165", "7a798d6529663fd472d26cc90c434b64f78955747ac2f93c8dcd35b8f684946e", "ad3811062b8db664f2342cbff1b491865310b74416dd7b901f14d980886821f8"]`', src/merkle.rs:68:9
stack backtrace:
   0:      0x2aa2501d098 - std::backtrace_rs::backtrace::libunwind::trace::h689880d970358ed7
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/../../backtrace/src/backtrace/libunwind.rs:96
   1:      0x2aa2501d098 - std::backtrace_rs::backtrace::trace_unsynchronized::hb9ab8a9039808186
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/../../backtrace/src/backtrace/mod.rs:66
   2:      0x2aa2501d098 - std::sys_common::backtrace::_print_fmt::hbb074995e5f46bb9
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/sys_common/backtrace.rs:79
   3:      0x2aa2501d098 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h166a3435f1ebe346
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/sys_common/backtrace.rs:58
   4:      0x2aa250658fa - core::fmt::write::h8b4108697d5241f2
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/core/src/fmt/mod.rs:1082
   5:      0x2aa24fb6e22 - std::io::Write::write_fmt::h47d354c3d7b9e04d
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/io/mod.rs:1514
   6:      0x2aa2503fc76 - std::io::impls::<impl std::io::Write for alloc::boxed::Box<W>>::write_fmt::h59012aafbd9238b7
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/io/impls.rs:176
   7:      0x2aa2503fc76 - std::sys_common::backtrace::_print::hcf657fa446f51fed
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/sys_common/backtrace.rs:61
   8:      0x2aa2503fc76 - std::sys_common::backtrace::print::hcd881c8f1eb6560d
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/sys_common/backtrace.rs:48
   9:      0x2aa2503fc76 - std::panicking::default_hook::{{closure}}::h4e1fb170e2733b87
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/panicking.rs:200
  10:      0x2aa2503fc76 - std::panicking::default_hook::h7ada06cabfc90b05
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/panicking.rs:216
  11:      0x2aa250408f8 - std::panicking::rust_panic_with_hook::h6b0223f79e36ee07
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/panicking.rs:569
  12:      0x2aa2501d3b0 - std::panicking::begin_panic_handler::{{closure}}::h8431d8d166b433f8
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/panicking.rs:476
  13:      0x2aa2501d36a - std::sys_common::backtrace::__rust_end_short_backtrace::h6b95ca77725bc954
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/sys_common/backtrace.rs:153
  14:      0x2aa250404ca - rust_begin_unwind
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/panicking.rs:475
  15:      0x2aa25040476 - std::panicking::begin_panic_fmt::hb7513fc411d5bfe8
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/panicking.rs:429
  16:      0x2aa24faeb06 - electrs::merkle::tests::test_merkle::hd627dab83404f0c8
  17:      0x2aa24fb4c5c - core::ops::function::FnOnce::call_once::h328e64916fd1ee34
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/core/src/ops/function.rs:227
  18:      0x2aa24fb4c5c - test::__rust_begin_short_backtrace::hf1881f60b3ac6e80
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/test/src/lib.rs:517
  19:      0x2aa24fb70f2 - <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once::h459f09e7c3b7b1bb
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/alloc/src/boxed.rs:1042
  20:      0x2aa24fb70f2 - <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h653079b4eb6a4b2d
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/panic.rs:308
  21:      0x2aa24fb70f2 - std::panicking::try::do_call::hae8757eb918fdce9
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/panicking.rs:373
  22:      0x2aa24fba44c - __rust_try.llvm.4074801633764803404
  23:      0x2aa24fb4e82 - std::panicking::try::h35d359795664d2d8
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/panicking.rs:337
  24:      0x2aa24fb4e82 - std::panic::catch_unwind::h04ca1441b1752b08
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/panic.rs:379
  25:      0x2aa24fb4e82 - test::run_test_in_process::hb8721f753ce2b4cf
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/test/src/lib.rs:544
  26:      0x2aa24fba592 - test::run_test::run_test_inner::{{closure}}::h5d87ed72b7fb5ad1
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/test/src/lib.rs:450
  27:      0x2aa24fba592 - std::sys_common::backtrace::__rust_begin_short_backtrace::hf5295fdc5843b084
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/sys_common/backtrace.rs:137
  28:      0x2aa24fb702a - std::thread::Builder::spawn_unchecked::{{closure}}::{{closure}}::hbd28861ce68488de
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/thread/mod.rs:458
  29:      0x2aa24fb702a - <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h36e3663b4c20f3f0
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/panic.rs:308
  30:      0x2aa24fb702a - std::panicking::try::do_call::h187ec7a5b71c784d
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/panicking.rs:373
  31:      0x2aa24fba44c - __rust_try.llvm.4074801633764803404
  32:      0x2aa24fba966 - std::panicking::try::h56521f35684b1cad
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/panicking.rs:337
  33:      0x2aa24fba966 - std::panic::catch_unwind::hcd7d62b8eaaba7f9
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/panic.rs:379
  34:      0x2aa24fba966 - std::thread::Builder::spawn_unchecked::{{closure}}::hcd2cbb468ece7341
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/thread/mod.rs:457
  35:      0x2aa24fba966 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h6a521a4eeb51836d
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/core/src/ops/function.rs:227
  36:      0x2aa250415be - <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once::h2574e0f2a778d3e2
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/alloc/src/boxed.rs:1042
  37:      0x2aa250415be - <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once::he7fd444ac6a444f0
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/alloc/src/boxed.rs:1042
  38:      0x2aa250415be - std::sys::unix::thread::Thread::new::thread_start::h1e5667e558bf5f40
                               at /build/rustc-veRuhV/rustc-1.47.0+dfsg1+llvm/library/std/src/sys/unix/thread.rs:87
  39:      0x3ffa8609986 - start_thread
  40:      0x3ffa8483cc6 - <unknown>
  41:                0x0 - <unknown>


failures:
    merkle::tests::test_merkle
    types::tests::test_scripthash_row

test result: FAILED. 6 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out

error: test failed, to rerun pass '--lib'

@romanz
Copy link
Owner

romanz commented Jun 25, 2021

Thanks!
BTW, could you please also run rust-bitcoin tests on this machine please?

@jlatone
Copy link
Author

jlatone commented Jun 25, 2021

Thanks!
BTW, could you please also run rust-bitcoin tests on this machine please?

Ah, thanks! This exposes a lot:

TL;DR: test result: FAILED. 118 passed; 50 failed; 0 ignored; 0 measured; 0 filtered out

$ cargo test
running 168 tests
test blockdata::block::tests::block_version_test ... FAILED
test blockdata::block::tests::compact_roundrtip_test ... FAILED
test blockdata::block::tests::block_test ... FAILED
test blockdata::block::tests::validate_pow_test ... FAILED
test blockdata::block::tests::test_coinbase_and_bip34 ... ok
test blockdata::constants::test::bitcoin_genesis_first_transaction ... FAILED
test blockdata::constants::test::bitcoin_genesis_full_block ... FAILED
test blockdata::constants::test::testnet_genesis_full_block ... FAILED
test blockdata::constants::test::signet_genesis_full_block ... FAILED
test blockdata::script::test::defult_dust_value_tests ... ok
test blockdata::script::test::op_return_test ... ok
test blockdata::script::test::p2sh_p2wsh_conversion ... ok
test blockdata::script::test::provably_unspendable_test ... ok
test blockdata::block::tests::segwit_block_test ... FAILED
test blockdata::script::test::script ... ok
test blockdata::script::test::script_builder ... ok
test blockdata::script::test::script_builder_verify ... ok
test blockdata::script::test::script_hashes ... ok
test blockdata::script::test::script_asm ... ok
test blockdata::script::test::script_ord ... ok
test blockdata::script::test::script_generators ... ok
test blockdata::script::test::script_p2pk ... ok
test blockdata::script::test::script_p2sh_p2p2k_template ... ok
test blockdata::script::test::script_serialize ... ok
test blockdata::script::test::scriptint_round_trip ... ok
test blockdata::script::test::test_iterator ... ok
test blockdata::transaction::tests::test_nonsegwit_transaction ... FAILED
test blockdata::transaction::tests::test_is_coinbase ... ok
test blockdata::transaction::tests::test_outpoint ... ok
test blockdata::transaction::tests::test_segwit_transaction ... FAILED
test blockdata::transaction::tests::test_ntxid ... ok
test blockdata::transaction::tests::test_sighashtype_standard ... ok
test blockdata::transaction::tests::test_transaction_version ... FAILED
test blockdata::opcodes::tests::str_roundtrip ... ok
test blockdata::transaction::tests::test_sighashtype_fromstr_display ... ok
test blockdata::transaction::tests::test_txin_default ... ok
test blockdata::transaction::tests::tx_no_input_deserialization ... ok
test consensus::encode::tests::deserialize_checkeddata_test ... FAILED
test blockdata::transaction::tests::test_txin ... ok
test consensus::encode::tests::deserialize_int_test ... FAILED
test consensus::encode::tests::deserialize_nonminimal_vec ... ok
test consensus::encode::tests::deserialize_strbuf_test ... ok
test consensus::encode::tests::deserialize_vec_test ... FAILED
test blockdata::transaction::tests::test_txid ... ok
test consensus::encode::tests::serialize_checkeddata_test ... FAILED
test consensus::encode::tests::serialize_int_test ... FAILED
test consensus::encode::tests::serialize_strbuf_test ... ok
test consensus::encode::tests::serialize_varint_test ... FAILED
test consensus::encode::tests::serialize_vector_test ... ok
test network::address::test::addrv2message_test ... FAILED
test network::address::test::debug_format_test ... ok
test network::address::test::deserialize_address_test ... FAILED
test network::address::test::deserialize_addrv2_test ... FAILED
test network::address::test::onion_test ... ok
test network::address::test::serialize_address_test ... FAILED
test network::address::test::serialize_addrv2_test ... ok
test network::address::test::test_socket_addr ... ok
test network::constants::tests::serialize_test ... FAILED
test network::constants::tests::service_flags_test ... ok
test network::constants::tests::string_test ... ok
test network::message::test::commandstring_test ... ok
test network::message::test::deserialize_getaddr_test ... FAILED
test network::message::test::deserialize_partial_message_test ... FAILED
test network::message::test::deserialize_version_test ... FAILED
test consensus::encode::tests::serialization_round_trips ... ok
test network::message::test::serialize_getaddr_test ... FAILED
test network::message::test::serialize_mempool_test ... FAILED
test network::message::test::serialize_ping_test ... FAILED
test network::message::test::serialize_verack_test ... FAILED
test network::message::test::full_round_ser_der_raw_network_message_test ... FAILED
test network::message_blockdata::tests::getblocks_message_test ... FAILED
test network::message_blockdata::tests::getheaders_message_test ... FAILED
test network::message_network::tests::version_message_test ... FAILED
test network::stream_reader::test::parse_multipartmsg_test ... FAILED
test network::stream_reader::test::read_doublemsgs_test ... FAILED
test consensus::encode::tests::limit_read_test ... ok
test network::stream_reader::test::read_block_from_file_test ... FAILED
test network::stream_reader::test::read_singlemsg_test ... FAILED
test util::address::tests::test_bip173_350_vectors ... ok
test util::address::tests::test_non_existent_segwit_version ... ok
test util::address::tests::test_p2pkh_address_58 ... ok
test util::address::tests::test_p2pkh_from_key ... ok
test util::address::tests::test_p2sh_address_58 ... ok
test util::address::tests::test_p2sh_parse ... ok
test util::address::tests::test_p2shwpkh ... ok
test util::address::tests::test_p2shwsh ... ok
test util::address::tests::test_p2wpkh ... ok
test util::address::tests::test_p2wsh ... ok
test util::address::tests::test_qr_string ... ok
test util::amount::tests::add_sub_mul_div ... ok
test util::amount::tests::checked_arithmetic ... ok
test util::amount::tests::floating_point ... ok
test util::amount::tests::from_str ... ok
test util::amount::tests::parsing ... ok
test util::amount::tests::test_unsigned_signed_conversion ... ok
test util::amount::tests::to_from_string_in ... ok
test util::amount::tests::to_string ... ok
test util::amount::tests::to_string_with_denomination_from_str_roundtrip ... ok
test util::base58::tests::test_base58_decode ... ok
test util::base58::tests::test_base58_encode ... ok
test util::base58::tests::test_base58_roundtrip ... ok
test util::bip143::tests::bip143_p2wpkh ... FAILED
test util::bip143::tests::bip143_p2wpkh_nested_in_p2sh ... FAILED
test util::bip143::tests::bip143_p2wsh_nested_in_p2sh ... FAILED
test util::bip143::tests::bip143_sighash_flags ... FAILED
test util::bip158::test::test_bit_stream ... ok
test util::bip158::test::test_blockfilters ... ok
test util::bip158::test::test_filter ... ok
test util::bip32::tests::fmt_child_number ... ok
test util::bip32::tests::test_derivation_path_conversion_index ... ok
test util::bip32::tests::test_increment ... ok
test util::bip32::tests::test_parse_derivation_path ... ok
test blockdata::transaction::tests::test_sighash ... ok
test util::bip32::tests::test_vector_1 ... ok
test util::bip32::tests::test_vector_2 ... ok
test util::contracthash::tests::bad_key_number ... ok
test util::bip32::tests::test_vector_3 ... ok
test util::contracthash::tests::script ... ok
test util::contracthash::tests::sanity ... ok
test util::contracthash::tests::tweak_fixed_vector ... ok
test util::ecdsa::tests::pubkey_read_write ... ok
test util::contracthash::tests::tweak_secret ... ok
test util::ecdsa::tests::test_pubkey_hash ... ok
test util::ecdsa::tests::test_wpubkey_hash ... ok
test util::endian::tests::endian_chunk_test ... ok
test util::endian::tests::endianness_test ... ok
test util::merkleblock::tests::merkleblock_construct_from_txids_found ... ok
test util::merkleblock::tests::merkleblock_construct_from_txids_not_found ... ok
test util::merkleblock::tests::merkleblock_serialization ... FAILED
test util::merkleblock::tests::pmt_malleability ... ok
test util::ecdsa::tests::test_key_derivation ... ok
test util::misc::tests::test_script_codesep_remove ... ok
test util::misc::tests::test_script_find_and_remove ... ok
test util::misc::tests::test_signed_msg_hash ... ok
test util::psbt::tests::bip_vectors::invalid_vector_1 ... ok
test util::psbt::tests::bip_vectors::invalid_vector_2 ... ok
test util::psbt::tests::bip_vectors::invalid_vector_3 ... ok
test util::psbt::tests::bip_vectors::invalid_vector_4 ... ok
test util::psbt::tests::bip_vectors::invalid_vector_5 ... ok
test util::psbt::tests::bip_vectors::valid_vector_1 ... FAILED
test util::psbt::tests::bip_vectors::valid_vector_2 ... ok
test util::psbt::tests::bip_vectors::valid_vector_3 ... FAILED
test util::psbt::tests::bip_vectors::valid_vector_4 ... ok
test util::psbt::tests::bip_vectors::valid_vector_5 ... ok
test util::psbt::tests::bip_vectors::valid_vector_6 ... ok
test util::psbt::tests::deserialize_and_serialize_psbt_with_two_partial_sigs ... ok
test util::psbt::tests::serialize_and_deserialize_preimage_psbt ... FAILED
test util::psbt::tests::serialize_and_deserialize_proprietary ... ok
test util::psbt::tests::serialize_then_deserialize_global ... ok
test util::psbt::tests::serialize_then_deserialize_output ... ok
test util::psbt::tests::serialize_then_deserialize_psbtkvpair ... ok
test util::psbt::tests::trivial_psbt ... FAILED
test util::taproot::test::test_midstates ... ok
test util::taproot::test::test_vectors_core ... ok
test util::uint::tests::mul_u32_test ... ok
test util::uint::tests::multiplication_test ... ok
test util::uint::tests::uint256_arithmetic_test ... ok
test util::uint::tests::uint256_bits_test ... ok
test util::uint::tests::uint256_bitslice_test ... ok
test util::uint::tests::uint256_comp_test ... ok
test util::uint::tests::uint256_display_test ... ok
test util::uint::tests::uint256_extreme_bitshift_test ... ok
test util::uint::tests::uint256_serialize_test ... ok
test util::uint::tests::uint_from_be_bytes ... ok
test util::uint::tests::uint_to_be_bytes ... ok
test util::merkleblock::tests::pmt_tests ... FAILED
test network::stream_reader::test::read_multipartmsg_test ... FAILED
test network::stream_reader::test::read_sequencemsg_test ... FAILED

failures:

---- blockdata::block::tests::block_version_test stdout ----
thread 'blockdata::block::tests::block_version_test' panicked at 'assertion failed: `(left == right)`
  left: `-129`,
 right: `2147483647`', src/blockdata/block.rs:419:9

---- blockdata::block::tests::compact_roundrtip_test stdout ----
thread 'blockdata::block::tests::compact_roundrtip_test' panicked at 'assertion failed: `(left == right)`
  left: `4294901789`,
 right: `0`', src/blockdata/block.rs:455:9
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

---- blockdata::block::tests::block_test stdout ----
thread 'blockdata::block::tests::block_test' panicked at 'assertion failed: `(left == right)`
  left: `16777216`,
 right: `1`', src/blockdata/block.rs:359:9

---- blockdata::block::tests::validate_pow_test stdout ----
thread 'blockdata::block::tests::validate_pow_test' panicked at 'called `Result::unwrap()` on an `Err` value: BlockBadProofOfWork', src/blockdata/block.rs:432:68

---- blockdata::constants::test::bitcoin_genesis_first_transaction stdout ----
thread 'blockdata::constants::test::bitcoin_genesis_first_transaction' panicked at 'assertion failed: `(left == right)`
  left: `"79a8e69a392983a449d680fe41805aa6ae20829284b1dcbb311264e2be1345d7"`,
 right: `"4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"`', src/blockdata/constants.rs:189:9

---- blockdata::constants::test::bitcoin_genesis_full_block stdout ----
thread 'blockdata::constants::test::bitcoin_genesis_full_block' panicked at 'assertion failed: `(left == right)`
  left: `"79a8e69a392983a449d680fe41805aa6ae20829284b1dcbb311264e2be1345d7"`,
 right: `"4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"`', src/blockdata/constants.rs:199:9

---- blockdata::constants::test::testnet_genesis_full_block stdout ----
thread 'blockdata::constants::test::testnet_genesis_full_block' panicked at 'assertion failed: `(left == right)`
  left: `"79a8e69a392983a449d680fe41805aa6ae20829284b1dcbb311264e2be1345d7"`,
 right: `"4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"`', src/blockdata/constants.rs:213:9

---- blockdata::constants::test::signet_genesis_full_block stdout ----
thread 'blockdata::constants::test::signet_genesis_full_block' panicked at 'assertion failed: `(left == right)`
  left: `"79a8e69a392983a449d680fe41805aa6ae20829284b1dcbb311264e2be1345d7"`,
 right: `"4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"`', src/blockdata/constants.rs:227:9

---- blockdata::block::tests::segwit_block_test stdout ----
thread 'blockdata::block::tests::segwit_block_test' panicked at 'assertion failed: `(left == right)`
  left: `32`,
 right: `536870912`', src/blockdata/block.rs:393:9

---- blockdata::transaction::tests::test_nonsegwit_transaction stdout ----
thread 'blockdata::transaction::tests::test_nonsegwit_transaction' panicked at 'assertion failed: `(left == right)`
  left: `16777216`,
 right: `1`', src/blockdata/transaction.rs:840:9

---- blockdata::transaction::tests::test_segwit_transaction stdout ----
thread 'blockdata::transaction::tests::test_segwit_transaction' panicked at 'assertion failed: `(left == right)`
  left: `33554432`,
 right: `2`', src/blockdata/transaction.rs:872:9

---- blockdata::transaction::tests::test_transaction_version stdout ----
thread 'blockdata::transaction::tests::test_transaction_version' panicked at 'assertion failed: `(left == right)`
  left: `-129`,
 right: `2147483647`', src/blockdata/transaction.rs:896:9

---- consensus::encode::tests::deserialize_checkeddata_test stdout ----
thread 'consensus::encode::tests::deserialize_checkeddata_test' panicked at 'assertion failed: `(left == right)`
  left: `None`,
 right: `Some(CheckedData([1, 2, 3, 4, 5]))`', src/consensus/encode.rs:998:9

---- consensus::encode::tests::deserialize_int_test stdout ----
thread 'consensus::encode::tests::deserialize_int_test' panicked at 'assertion failed: `(left == right)`
  left: `Some(258)`,
 right: `Some(513)`', src/consensus/encode.rs:923:9

---- consensus::encode::tests::deserialize_vec_test stdout ----
thread 'consensus::encode::tests::deserialize_vec_test' panicked at 'assertion failed: `(left == right)`
  left: `Discriminant(3)`,
 right: `Discriminant(0)`', src/consensus/encode.rs:983:9

---- consensus::encode::tests::serialize_checkeddata_test stdout ----
thread 'consensus::encode::tests::serialize_checkeddata_test' panicked at 'assertion failed: `(left == right)`
  left: `[0, 0, 0, 5, 162, 107, 175, 90, 1, 2, 3, 4, 5]`,
 right: `[5, 0, 0, 0, 162, 107, 175, 90, 1, 2, 3, 4, 5]`', src/consensus/encode.rs:896:9

---- consensus::encode::tests::serialize_int_test stdout ----
thread 'consensus::encode::tests::serialize_int_test' panicked at 'assertion failed: `(left == right)`
  left: `[0, 1]`,
 right: `[1, 0]`', src/consensus/encode.rs:779:9

---- consensus::encode::tests::serialize_varint_test stdout ----
thread 'consensus::encode::tests::serialize_varint_test' panicked at 'assertion failed: `(left == right)`
  left: `[253, 0, 253]`,
 right: `[253, 253, 0]`', src/consensus/encode.rs:822:9

---- network::address::test::addrv2message_test stdout ----
thread 'network::address::test::addrv2message_test' panicked at 'assertion failed: `(left == right)`
  left: `[AddrV2Message { time: 1639736905, services: ServiceFlags(1), addr: Unknown(153, [171, 171]), port: 8333 }, AddrV2Message { time: 2036496003, services: ServiceFlags(1096), addr: Ipv4(9.9.9.9), port: 8333 }]`,
 right: `[AddrV2Message { time: 1231469665, services: ServiceFlags(1), addr: Unknown(153, [171, 171]), port: 8333 }, AddrV2Message { time: 2205573753, services: ServiceFlags(1096), addr: Ipv4(9.9.9.9), port: 8333 }]`', src/network/address.rs:481:9

---- network::address::test::deserialize_address_test stdout ----
thread 'network::address::test::deserialize_address_test' panicked at 'assertion failed: `(left == right)`
  left: `ServiceFlags(72057594037927936)`,
 right: `ServiceFlags(1)`', src/network/address.rs:348:9

---- network::address::test::deserialize_addrv2_test stdout ----
thread 'network::address::test::deserialize_addrv2_test' panicked at 'called `Result::unwrap()` on an `Err` value: ParseFailed("Invalid CJDNS address")', src/network/address.rs:455:103

---- network::address::test::serialize_address_test stdout ----
thread 'network::address::test::serialize_address_test' panicked at 'assertion failed: `(left == right)`
  left: `[0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 10, 0, 0, 1, 32, 141]`,
 right: `[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 10, 0, 0, 1, 32, 141]`', src/network/address.rs:305:9

---- network::constants::tests::serialize_test stdout ----
thread 'network::constants::tests::serialize_test' panicked at 'assertion failed: `(left == right)`
  left: `[217, 180, 190, 249]`,
 right: `[249, 190, 180, 217]`', src/network/constants.rs:299:9

---- network::message::test::deserialize_getaddr_test stdout ----
thread 'network::message::test::deserialize_getaddr_test' panicked at 'assertion failed: `(left == right)`
  left: `3652501241`,
 right: `4190024921`', src/network/message.rs:513:9

---- network::message::test::deserialize_partial_message_test stdout ----
thread 'network::message::test::deserialize_partial_message_test' panicked at 'assertion failed: msg.is_ok()', src/network/message.rs:572:9

---- network::message::test::deserialize_version_test stdout ----
thread 'network::message::test::deserialize_version_test' panicked at 'assertion failed: msg.is_ok()', src/network/message.rs:537:9

---- network::message::test::serialize_getaddr_test stdout ----
thread 'network::message::test::serialize_getaddr_test' panicked at 'assertion failed: `(left == right)`
  left: `[217, 180, 190, 249, 103, 101, 116, 97, 100, 100, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 246, 224, 226]`,
 right: `[249, 190, 180, 217, 103, 101, 116, 97, 100, 100, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 246, 224, 226]`', src/network/message.rs:498:9

---- network::message::test::serialize_mempool_test stdout ----
thread 'network::message::test::serialize_mempool_test' panicked at 'assertion failed: `(left == right)`
  left: `[217, 180, 190, 249, 109, 101, 109, 112, 111, 111, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 246, 224, 226]`,
 right: `[249, 190, 180, 217, 109, 101, 109, 112, 111, 111, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 246, 224, 226]`', src/network/message.rs:490:9

---- network::message::test::serialize_ping_test stdout ----
thread 'network::message::test::serialize_ping_test' panicked at 'assertion failed: `(left == right)`
  left: `[217, 180, 190, 249, 112, 105, 110, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 67, 193, 221, 84, 0, 0, 0, 0, 0, 0, 0, 100]`,
 right: `[249, 190, 180, 217, 112, 105, 110, 103, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 36, 103, 241, 29, 100, 0, 0, 0, 0, 0, 0, 0]`', src/network/message.rs:480:9

---- network::message::test::serialize_verack_test stdout ----
thread 'network::message::test::serialize_verack_test' panicked at 'assertion failed: `(left == right)`
  left: `[217, 180, 190, 249, 118, 101, 114, 97, 99, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 246, 224, 226]`,
 right: `[249, 190, 180, 217, 118, 101, 114, 97, 99, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 246, 224, 226]`', src/network/message.rs:472:9

---- network::message::test::full_round_ser_der_raw_network_message_test stdout ----
thread 'network::message::test::full_round_ser_der_raw_network_message_test' panicked at 'called `Result::unwrap()` on an `Err` value: Io(Custom { kind: UnexpectedEof, error: "failed to fill whole buffer" })', src/network/message.rs:445:79

---- network::message_blockdata::tests::getblocks_message_test stdout ----
thread 'network::message_blockdata::tests::getblocks_message_test' panicked at 'assertion failed: `(left == right)`
  left: `1913716992`,
 right: `70002`', src/network/message_blockdata.rs:167:9

---- network::message_blockdata::tests::getheaders_message_test stdout ----
thread 'network::message_blockdata::tests::getheaders_message_test' panicked at 'assertion failed: `(left == right)`
  left: `1913716992`,
 right: `70002`', src/network/message_blockdata.rs:183:9

---- network::message_network::tests::version_message_test stdout ----
thread 'network::message_network::tests::version_message_test' panicked at 'assertion failed: `(left == right)`
  left: `1913716992`,
 right: `70002`', src/network/message_network.rs:163:9

---- network::stream_reader::test::parse_multipartmsg_test stdout ----
thread 'network::stream_reader::test::parse_multipartmsg_test' panicked at 'called `Result::unwrap()` on an `Err` value: OversizedVectorAllocation { requested: 2818572288, max: 4000000 }', src/network/stream_reader.rs:204:42

---- network::stream_reader::test::read_doublemsgs_test stdout ----
thread 'network::stream_reader::test::read_doublemsgs_test' panicked at 'called `Result::unwrap()` on an `Err` value: OversizedVectorAllocation { requested: 1711276032, max: 4000000 }', src/network/stream_reader.rs:224:42

---- network::stream_reader::test::read_block_from_file_test stdout ----
thread 'network::stream_reader::test::read_block_from_file_test' panicked at 'assertion failed: `(left == right)`
  left: `16777216`,
 right: `1`', src/network/stream_reader.rs:337:9

---- network::stream_reader::test::read_singlemsg_test stdout ----
thread 'network::stream_reader::test::read_singlemsg_test' panicked at 'called `Result::unwrap()` on an `Err` value: OversizedVectorAllocation { requested: 1711276032, max: 4000000 }', src/network/stream_reader.rs:214:67

---- util::bip143::tests::bip143_p2wpkh stdout ----
thread 'util::bip143::tests::bip143_p2wpkh' panicked at 'assertion failed: `(left == right)`
  left: `SighashComponents { tx_version: 16777216, tx_locktime: 285212672, hash_prevouts: 37fd4e0b474311c336bafe81a703806e8db6a713672b71969b4e3d48c827b896, hash_sequence: 3b9a3348854d8e4b9806a874e5db930275b652626fc338e67afba2ee42a6b052, hash_outputs: e5e5471f55f6f80f590125cfabe943e93e68c70fad317fb9fdfb2aa9e1f33e86 }`,
 right: `SighashComponents { tx_version: 1, tx_locktime: 17, hash_prevouts: 37fd4e0b474311c336bafe81a703806e8db6a713672b71969b4e3d48c827b896, hash_sequence: 3b9a3348854d8e4b9806a874e5db930275b652626fc338e67afba2ee42a6b052, hash_outputs: e5e5471f55f6f80f590125cfabe943e93e68c70fad317fb9fdfb2aa9e1f33e86 }`', src/util/bip143.rs:315:9

---- util::bip143::tests::bip143_p2wpkh_nested_in_p2sh stdout ----
thread 'util::bip143::tests::bip143_p2wpkh_nested_in_p2sh' panicked at 'assertion failed: `(left == right)`
  left: `SighashComponents { tx_version: 16777216, tx_locktime: 2449735680, hash_prevouts: 3a61b4a7a23aeb16a2af29c3e9a378af13a30bf0ce2d3df85ac02a254a7b28b0, hash_sequence: 98e1ab8ccf276338158add89a78f1ef0dcad0c2f35bc665256bfd80c356b6018, hash_outputs: 836c228adf61da06a7af7bf28c6fda306dfece4f31640dca73212e53444f98de }`,
 right: `SighashComponents { tx_version: 1, tx_locktime: 1170, hash_prevouts: 3a61b4a7a23aeb16a2af29c3e9a378af13a30bf0ce2d3df85ac02a254a7b28b0, hash_sequence: 98e1ab8ccf276338158add89a78f1ef0dcad0c2f35bc665256bfd80c356b6018, hash_outputs: 836c228adf61da06a7af7bf28c6fda306dfece4f31640dca73212e53444f98de }`', src/util/bip143.rs:351:9

---- util::bip143::tests::bip143_p2wsh_nested_in_p2sh stdout ----
thread 'util::bip143::tests::bip143_p2wsh_nested_in_p2sh' panicked at 'assertion failed: `(left == right)`
  left: `SighashComponents { tx_version: 16777216, tx_locktime: 0, hash_prevouts: a0aaf7315e4b8c38ca9b92d36d4985b475a2c1a30ca498413c18f52a31dcaf74, hash_sequence: 445066705e799022b7095f7ceca255149f43acfc47e7f59e551f7bce2930b13b, hash_outputs: cc0703b98ebbfda887f446136c7ead6dd7b4272b83982f93ed4b417190304dbc }`,
 right: `SighashComponents { tx_version: 1, tx_locktime: 0, hash_prevouts: a0aaf7315e4b8c38ca9b92d36d4985b475a2c1a30ca498413c18f52a31dcaf74, hash_sequence: 445066705e799022b7095f7ceca255149f43acfc47e7f59e551f7bce2930b13b, hash_outputs: cc0703b98ebbfda887f446136c7ead6dd7b4272b83982f93ed4b417190304dbc }`', src/util/bip143.rs:394:9

---- util::bip143::tests::bip143_sighash_flags stdout ----
thread 'util::bip143::tests::bip143_sighash_flags' panicked at 'assertion failed: `(left == right)`
  left: `322fba836e5ea985a66affcad232d138f2ba6eec6367461496458e653c4ea82b`,
 right: `0a1bc2758dbb5b3a56646f8cafbf63f410cc62b77a482f8b87552683300a7711`', src/util/bip143.rs:297:9

---- util::merkleblock::tests::merkleblock_serialization stdout ----
thread 'util::merkleblock::tests::merkleblock_serialization' panicked at 'called `Result::unwrap()` on an `Err` value: TooManyTransactions', src/util/merkleblock.rs:623:62

---- util::psbt::tests::bip_vectors::valid_vector_1 stdout ----
thread 'util::psbt::tests::bip_vectors::valid_vector_1' panicked at 'assertion failed: `(left == right)`
  left: `"70736274ff0100750000000201268171371edff285e937adeea4b37b78000c0566cbb3ad64641713ca42171bf60000000000fffffffe020000000005f5dfd31976a914d0c59903c5bac2868760e90fd521a4665aa7652088ac0000000005f5e10017a9143545e6e33b832c47050f24d3eeb93c9c03948bc78700132eb3000100fd01a50000000100010289a3c71eab4d20e0371bbba4cc698fa295c9463afa2e397f8533ccb62f9567e50000000117160014be18d152a9b012039daf3da7de4f53349eecb985ffffffff86f8aa43a71dff1448893a530a7237ef6b4608bbb2dd2d0171e63aec6a4890b40000000117160014fe3e9ef1a745e974d902c4355943abcb34bd5353ffffffff02000000000bebc2001976a91485cff1097fd9e008bb34af709c62197b38978a4888ac0000002c4ef8fe7217a914339725ba21efd62ac753a9bcd067d6c7a6a39d05870247304402202712be22e0270f394f568311dc7ca9a68970b8025fdd3b240229f07f8a5f3a240220018b38d7dcd314e734c9276bd6fb40f673325bc4baa144c800d2f2f02db2765c012103d2e15674941bad4a996372cb87e1856d3652606d98562fe39c5e9e7e413f210502483045022100d12b852d85dcd961d2f5f4ab660654df6eedcc794c0c33ce5cc309ffb5fce58d022067338a8e0e1725c197fb1a88af59f51e44e4255b20167c8684031c05d1f2592a01210223b72beef0965d10be0778efecd61fcac6f79a4ea169393380734464f84f2ab300000000000000"`,
 right: `"70736274ff0100750200000001268171371edff285e937adeea4b37b78000c0566cbb3ad64641713ca42171bf60000000000feffffff02d3dff505000000001976a914d0c59903c5bac2868760e90fd521a4665aa7652088ac00e1f5050000000017a9143545e6e33b832c47050f24d3eeb93c9c03948bc787b32e1300000100fda5010100000000010289a3c71eab4d20e0371bbba4cc698fa295c9463afa2e397f8533ccb62f9567e50100000017160014be18d152a9b012039daf3da7de4f53349eecb985ffffffff86f8aa43a71dff1448893a530a7237ef6b4608bbb2dd2d0171e63aec6a4890b40100000017160014fe3e9ef1a745e974d902c4355943abcb34bd5353ffffffff0200c2eb0b000000001976a91485cff1097fd9e008bb34af709c62197b38978a4888ac72fef84e2c00000017a914339725ba21efd62ac753a9bcd067d6c7a6a39d05870247304402202712be22e0270f394f568311dc7ca9a68970b8025fdd3b240229f07f8a5f3a240220018b38d7dcd314e734c9276bd6fb40f673325bc4baa144c800d2f2f02db2765c012103d2e15674941bad4a996372cb87e1856d3652606d98562fe39c5e9e7e413f210502483045022100d12b852d85dcd961d2f5f4ab660654df6eedcc794c0c33ce5cc309ffb5fce58d022067338a8e0e1725c197fb1a88af59f51e44e4255b20167c8684031c05d1f2592a01210223b72beef0965d10be0778efecd61fcac6f79a4ea169393380734464f84f2ab300000000000000"`', src/util/psbt/mod.rs:648:13

---- util::psbt::tests::bip_vectors::valid_vector_3 stdout ----
thread 'util::psbt::tests::bip_vectors::valid_vector_3' panicked at 'called `Result::unwrap()` on an `Err` value: Psbt(NonStandardSigHashType(16777216))', src/util/psbt/mod.rs:685:1190

---- util::psbt::tests::serialize_and_deserialize_preimage_psbt stdout ----
thread 'util::psbt::tests::serialize_and_deserialize_preimage_psbt' panicked at 'called `Result::unwrap()` on an `Err` value: Io(Custom { kind: UnexpectedEof, error: "failed to fill whole buffer" })', src/util/psbt/mod.rs:881:89

---- util::psbt::tests::trivial_psbt stdout ----
thread 'util::psbt::tests::trivial_psbt' panicked at 'assertion failed: `(left == right)`
  left: `"70736274ff01000a0000000200000000000000"`,
 right: `"70736274ff01000a0200000000000000000000"`', src/util/psbt/mod.rs:252:9

---- util::merkleblock::tests::pmt_tests stdout ----
thread 'util::merkleblock::tests::pmt_tests' panicked at 'Could not deserialize own data: NonMinimalVarInt', src/util/merkleblock.rs:559:46

---- network::stream_reader::test::read_multipartmsg_test stdout ----
thread 'network::stream_reader::test::read_multipartmsg_test' panicked at 'called `Result::unwrap()` on an `Err` value: OversizedVectorAllocation { requested: 1711276032, max: 4000000 }', src/network/stream_reader.rs:278:42

---- network::stream_reader::test::read_sequencemsg_test stdout ----
thread 'network::stream_reader::test::read_sequencemsg_test' panicked at 'called `Result::unwrap()` on an `Err` value: OversizedVectorAllocation { requested: 1711276032, max: 4000000 }', src/network/stream_reader.rs:298:42


failures:
    blockdata::block::tests::block_test
    blockdata::block::tests::block_version_test
    blockdata::block::tests::compact_roundrtip_test
    blockdata::block::tests::segwit_block_test
    blockdata::block::tests::validate_pow_test
    blockdata::constants::test::bitcoin_genesis_first_transaction
    blockdata::constants::test::bitcoin_genesis_full_block
    blockdata::constants::test::signet_genesis_full_block
    blockdata::constants::test::testnet_genesis_full_block
    blockdata::transaction::tests::test_nonsegwit_transaction
    blockdata::transaction::tests::test_segwit_transaction
    blockdata::transaction::tests::test_transaction_version
    consensus::encode::tests::deserialize_checkeddata_test
    consensus::encode::tests::deserialize_int_test
    consensus::encode::tests::deserialize_vec_test
    consensus::encode::tests::serialize_checkeddata_test
    consensus::encode::tests::serialize_int_test
    consensus::encode::tests::serialize_varint_test
    network::address::test::addrv2message_test
    network::address::test::deserialize_address_test
    network::address::test::deserialize_addrv2_test
    network::address::test::serialize_address_test
    network::constants::tests::serialize_test
    network::message::test::deserialize_getaddr_test
    network::message::test::deserialize_partial_message_test
    network::message::test::deserialize_version_test
    network::message::test::full_round_ser_der_raw_network_message_test
    network::message::test::serialize_getaddr_test
    network::message::test::serialize_mempool_test
    network::message::test::serialize_ping_test
    network::message::test::serialize_verack_test
    network::message_blockdata::tests::getblocks_message_test
    network::message_blockdata::tests::getheaders_message_test
    network::message_network::tests::version_message_test
    network::stream_reader::test::parse_multipartmsg_test
    network::stream_reader::test::read_block_from_file_test
    network::stream_reader::test::read_doublemsgs_test
    network::stream_reader::test::read_multipartmsg_test
    network::stream_reader::test::read_sequencemsg_test
    network::stream_reader::test::read_singlemsg_test
    util::bip143::tests::bip143_p2wpkh
    util::bip143::tests::bip143_p2wpkh_nested_in_p2sh
    util::bip143::tests::bip143_p2wsh_nested_in_p2sh
    util::bip143::tests::bip143_sighash_flags
    util::merkleblock::tests::merkleblock_serialization
    util::merkleblock::tests::pmt_tests
    util::psbt::tests::bip_vectors::valid_vector_1
    util::psbt::tests::bip_vectors::valid_vector_3
    util::psbt::tests::serialize_and_deserialize_preimage_psbt
    util::psbt::tests::trivial_psbt

test result: FAILED. 118 passed; 50 failed; 0 ignored; 0 measured; 0 filtered out```

@jlatone
Copy link
Author

jlatone commented Jun 25, 2021

I posted an issue in rust-bitcoin to see what they say about the failed tests. Issue #550 appears to point out the problem on a bigger scale with the library, and if that's the case, I don't expect it to be resolved any time soon and I'm not sure I have the time at this point to help them work through it. So, I see 3 options:

  1. Fix the problems 1-by-1 in the specific uses of rust-bitcoin in electrs/master, e.g., using cfg!(target_endian = "big")... where necessary.
  2. #​1 but with electrs/p2p, whichever requires fewer fixes. :)
  3. Avoid rust for now when dealing with bitcoin (e.g., I think the next best thing may be ElectrumX, since the larger package I'm using is umbrel and @lukechilds says ElectrumX could be substituted...assuming it doesn't suffer the same problem, and searching the code it does look like they account for machine endian-ness).

P.S. I'll no longer put full traces in the bodies of my posts and attach files instead. :)

@romanz
Copy link
Owner

romanz commented Jun 30, 2021

Let's wait for rust-bitcoin/rust-bitcoin#627 and see if it helps :)

@romanz
Copy link
Owner

romanz commented Jul 21, 2021

I think that after rust-bitcoin/rust-bitcoin#631 lands, and a new rust-bitcoincore-rpc version is released, this issue should hopefully be resolved :)

@romanz
Copy link
Owner

romanz commented Jul 22, 2021

@romanz
Copy link
Owner

romanz commented Sep 18, 2021

@jlatone Could you please try to reproduce this issue on the latest v0.9.0 release?

@romanz
Copy link
Owner

romanz commented Oct 3, 2021

Closing for now, please reopen if the issue persists.

@romanz romanz closed this as completed Oct 3, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants