Issue Details
- Number
- 31812
- Title
- Networking tests fail on emulated big-endian systems
- Description
- Running the test with an emulated big-endian system (via `docker run --platform linux/s390x -it ubuntu:24.10 /bin/bash`, as described in https://github.com/bitcoin/bitcoin/issues/31344#issuecomment-2493612110), I'm seeing mismatched byte orders in IP address representations.
I've noticed this in https://github.com/bitcoin/bitcoin/pull/29852#issuecomment-2614010124, but it reproduces on master as well.
The problems seems to be that the kernel file `/proc/net/tcp` always stores addresses in little-endian order, regardless of the system's architecture, so we should likely adjust the `addr_to_hex` or `_convert_ip_port` methods:
```bash
TEST | STATUS | DURATION
example_test.py | ✓ Passed | 6 s
feature_abortnode.py | ✓ Passed | 3 s
feature_addrman.py | ✓ Passed | 10 s
feature_anchors.py | ✓ Passed | 6 s
feature_asmap.py | ✓ Passed | 11 s
feature_assumeutxo.py | ✓ Passed | 77 s
feature_assumevalid.py | ✓ Passed | 63 s
feature_bip68_sequence.py | ✓ Passed | 62 s
feature_block.py | ✓ Passed | 662 s
feature_blocksdir.py | ✓ Passed | 3 s
feature_blocksxor.py | ✓ Passed | 8 s
feature_cltv.py | ✓ Passed | 3 s
feature_coinstatsindex.py | ✓ Passed | 13 s
feature_config_args.py | ✓ Passed | 38 s
feature_csv_activation.py | ✓ Passed | 53 s
feature_dersig.py | ✓ Passed | 3 s
feature_dirsymlinks.py | ✓ Passed | 3 s
feature_discover.py | ✓ Passed | 6 s
feature_fastprune.py | ✓ Passed | 3 s
feature_fee_estimation.py | ✓ Passed | 176 s
feature_filelock.py | ✓ Passed | 5 s
feature_framework_miniwallet.py | ✓ Passed | 51 s
feature_framework_unit_tests.py | ✓ Passed | 86 s
feature_help.py | ✓ Passed | 2 s
feature_includeconf.py | ✓ Passed | 6 s
feature_init.py | ✓ Passed | 29 s
feature_loadblock.py | ✓ Passed | 6 s
feature_logging.py | ✓ Passed | 9 s
feature_maxtipage.py | ✓ Passed | 25 s
feature_maxuploadtarget.py | ✓ Passed | 214 s
feature_minchainwork.py | ✓ Passed | 13 s
feature_notifications.py | ✓ Passed | 11 s
feature_nulldummy.py | ✓ Passed | 5 s
feature_port.py | ✓ Passed | 7 s
feature_posix_fs_permissions.py | ✓ Passed | 2 s
feature_presegwit_node_upgrade.py | ✓ Passed | 4 s
feature_proxy.py | ✓ Passed | 12 s
feature_rbf.py | ✓ Passed | 38 s
feature_reindex.py | ✓ Passed | 27 s
feature_reindex_readonly.py | ✓ Passed | 3 s
feature_remove_pruned_files_on_startup.py | ✓ Passed | 11 s
feature_segwit.py --descriptors --v1transport | ✓ Passed | 17 s
feature_segwit.py --descriptors --v2transport | ✓ Passed | 16 s
feature_segwit.py --legacy-wallet | ✓ Passed | 39 s
feature_settings.py | ✓ Passed | 11 s
feature_shutdown.py | ✓ Passed | 3 s
feature_signet.py | ✓ Passed | 14 s
feature_startupnotify.py | ✓ Passed | 3 s
feature_taproot.py | ✓ Passed | 542 s
feature_uacomment.py | ✓ Passed | 7 s
feature_utxo_set_hash.py | ✓ Passed | 4 s
feature_versionbits_warning.py | ✓ Passed | 8 s
interface_http.py | ✓ Passed | 3 s
interface_rest.py | ✓ Passed | 7 s
interface_rpc.py | ✓ Passed | 5 s
interface_zmq.py | ✓ Passed | 29 s
mempool_accept.py | ✓ Passed | 16 s
mempool_accept_wtxid.py | ✓ Passed | 16 s
mempool_datacarrier.py | ✓ Passed | 4 s
mempool_dust.py | ✓ Passed | 14 s
mempool_ephemeral_dust.py | ✓ Passed | 67 s
mempool_expiry.py | ✓ Passed | 5 s
mempool_limit.py | ✓ Passed | 89 s
mempool_package_limits.py | ✓ Passed | 11 s
mempool_package_onemore.py | ✓ Passed | 4 s
mempool_package_rbf.py | ✓ Passed | 43 s
mempool_packages.py | ✓ Passed | 8 s
mempool_persist.py --descriptors | ✓ Passed | 26 s
mempool_reorg.py | ✓ Passed | 7 s
mempool_resurrect.py | ✓ Passed | 3 s
mempool_sigoplimit.py | ✓ Passed | 11 s
mempool_spend_coinbase.py | ✓ Passed | 3 s
mempool_truc.py | ✓ Passed | 22 s
mempool_unbroadcast.py | ✓ Passed | 20 s
mempool_updatefromblock.py | ✓ Passed | 156 s
mining_basic.py | ✓ Passed | 38 s
mining_getblocktemplate_longpoll.py | ✓ Passed | 70 s
mining_mainnet.py | ✓ Passed | 24 s
mining_prioritisetransaction.py | ✓ Passed | 19 s
p2p_1p1c_network.py | ✓ Passed | 37 s
p2p_add_connections.py | ✓ Passed | 10 s
p2p_addr_relay.py | ✓ Passed | 24 s
p2p_addrfetch.py | ✓ Passed | 2 s
p2p_addrv2_relay.py | ✓ Passed | 3 s
p2p_block_sync.py --v1transport | ✓ Passed | 5 s
p2p_block_sync.py --v2transport | ✓ Passed | 4 s
p2p_blockfilters.py | ✓ Passed | 65 s
p2p_blocksonly.py | ✓ Passed | 16 s
p2p_compactblocks.py | ✓ Passed | 16 s
p2p_compactblocks_blocksonly.py | ✓ Passed | 4 s
p2p_compactblocks_hb.py --v1transport | ✓ Passed | 21 s
p2p_compactblocks_hb.py --v2transport | ✓ Passed | 25 s
p2p_disconnect_ban.py --v1transport | ✓ Passed | 5 s
p2p_disconnect_ban.py --v2transport | ✓ Passed | 5 s
p2p_dns_seeds.py | ✓ Passed | 39 s
p2p_dos_header_tree.py | ✓ Passed | 5 s
p2p_eviction.py | ✓ Passed | 6 s
p2p_feefilter.py | ✓ Passed | 9 s
p2p_filter.py | ✓ Passed | 8 s
p2p_fingerprint.py | ✓ Passed | 3 s
p2p_getaddr_caching.py | ✓ Passed | 34 s
p2p_getdata.py | ✓ Passed | 2 s
p2p_handshake.py | ✓ Passed | 5 s
p2p_handshake.py --v2transport | ✓ Passed | 9 s
p2p_headers_sync_with_minchainwork.py | ✓ Passed | 127 s
p2p_i2p_ports.py | ✓ Passed | 2 s
p2p_i2p_sessions.py | ✓ Passed | 2 s
p2p_ibd_stalling.py --v1transport | ✓ Passed | 26 s
p2p_ibd_stalling.py --v2transport | ✓ Passed | 46 s
p2p_ibd_txrelay.py | ✓ Passed | 4 s
p2p_initial_headers_sync.py | ✓ Passed | 3 s
p2p_invalid_block.py --v1transport | ✓ Passed | 4 s
p2p_invalid_block.py --v2transport | ✓ Passed | 5 s
p2p_invalid_locator.py | ✓ Passed | 4 s
p2p_invalid_messages.py | ✓ Passed | 47 s
p2p_invalid_tx.py --v1transport | ✓ Passed | 10 s
p2p_invalid_tx.py --v2transport | ✓ Passed | 19 s
p2p_leak.py | ✓ Passed | 8 s
p2p_leak_tx.py --v1transport | ✓ Passed | 11 s
p2p_leak_tx.py --v2transport | ✓ Passed | 12 s
p2p_message_capture.py | ✓ Passed | 2 s
p2p_mutated_blocks.py | ✓ Passed | 4 s
p2p_net_deadlock.py --v1transport | ✓ Passed | 6 s
p2p_net_deadlock.py --v2transport | ✓ Passed | 6 s
p2p_nobloomfilter_messages.py | ✓ Passed | 3 s
p2p_node_network_limited.py --v1transport | ✓ Passed | 23 s
p2p_node_network_limited.py --v2transport | ✓ Passed | 24 s
p2p_opportunistic_1p1c.py | ✓ Passed | 87 s
p2p_orphan_handling.py | ✓ Passed | 29 s
p2p_outbound_eviction.py | ✓ Passed | 8 s
p2p_permissions.py | ✓ Passed | 21 s
p2p_ping.py | ✓ Passed | 3 s
p2p_seednode.py | ✓ Passed | 5 s
p2p_segwit.py | ✓ Passed | 242 s
p2p_sendheaders.py | ✓ Passed | 39 s
p2p_sendtxrcncl.py | ✓ Passed | 10 s
p2p_timeouts.py --v1transport | ✓ Passed | 3 s
p2p_timeouts.py --v2transport | ✓ Passed | 4 s
p2p_tx_download.py | ✓ Passed | 139 s
p2p_tx_privacy.py | ✓ Passed | 3 s
p2p_unrequested_blocks.py | ✓ Passed | 9 s
p2p_v2_encrypted.py | ✓ Passed | 23 s
p2p_v2_misbehaving.py | ✓ Passed | 5 s
p2p_v2_transport.py | ✓ Passed | 11 s
rpc_blockchain.py --v1transport | ✓ Passed | 30 s
rpc_blockchain.py --v2transport | ✓ Passed | 30 s
rpc_createmultisig.py | ✓ Passed | 35 s
rpc_decodescript.py | ✓ Passed | 2 s
rpc_deprecated.py | ✓ Passed | 3 s
rpc_deriveaddresses.py | ✓ Passed | 2 s
rpc_deriveaddresses.py --usecli | ✓ Passed | 4 s
rpc_dumptxoutset.py | ✓ Passed | 2 s
rpc_estimatefee.py | ✓ Passed | 2 s
rpc_generate.py | ✓ Passed | 12 s
rpc_getblockfilter.py | ✓ Passed | 4 s
rpc_getblockfrompeer.py | ✓ Passed | 19 s
rpc_getblockstats.py | ✓ Passed | 3 s
rpc_getchaintips.py | ✓ Passed | 7 s
rpc_getdescriptoractivity.py | ✓ Passed | 6 s
rpc_getdescriptorinfo.py | ✓ Passed | 3 s
rpc_help.py | ✓ Passed | 4 s
rpc_invalid_address_message.py | ✓ Passed | 3 s
rpc_invalidateblock.py | ✓ Passed | 3 s
rpc_mempool_info.py | ✓ Passed | 3 s
rpc_misc.py | ✓ Passed | 4 s
rpc_named_arguments.py | ✓ Passed | 3 s
rpc_net.py --v1transport | ✓ Passed | 55 s
rpc_net.py --v2transport | ✓ Passed | 54 s
rpc_orphans.py | ✓ Passed | 4 s
rpc_packages.py | ✓ Passed | 31 s
rpc_preciousblock.py | ✓ Passed | 4 s
rpc_psbt.py --descriptors | ✓ Passed | 34 s
rpc_psbt.py --legacy-wallet | ✓ Passed | 33 s
rpc_rawtransaction.py --legacy-wallet | ✓ Passed | 22 s
rpc_scanblocks.py | ✓ Passed | 4 s
rpc_scantxoutset.py | ✓ Passed | 103 s
rpc_setban.py --v1transport | ✓ Passed | 7 s
rpc_setban.py --v2transport | ✓ Passed | 7 s
rpc_signer.py | ✓ Passed | 6 s
rpc_signmessagewithprivkey.py | ✓ Passed | 2 s
rpc_signrawtransactionwithkey.py | ✓ Passed | 3 s
rpc_txoutproof.py | ✓ Passed | 8 s
rpc_uptime.py | ✓ Passed | 2 s
rpc_users.py | ✓ Passed | 24 s
rpc_validateaddress.py | ✓ Passed | 3 s
rpc_whitelist.py | ✓ Passed | 4 s
tool_signet_miner.py --descriptors | ✓ Passed | 9 s
tool_signet_miner.py --legacy-wallet | ✓ Passed | 6 s
tool_wallet.py --descriptors | ✓ Passed | 100 s
tool_wallet.py --legacy-wallet | ✓ Passed | 140 s
tool_wallet.py --legacy-wallet --bdbro | ✓ Passed | 142 s
tool_wallet.py --legacy-wallet --bdbro --swap-bdb-endian | ✓ Passed | 102 s
wallet_abandonconflict.py --descriptors | ✓ Passed | 13 s
wallet_abandonconflict.py --legacy-wallet | ✓ Passed | 14 s
wallet_address_types.py --descriptors | ✓ Passed | 33 s
wallet_address_types.py --legacy-wallet | ✓ Passed | 56 s
wallet_assumeutxo.py --descriptors | ✓ Passed | 21 s
wallet_avoid_mixing_output_types.py --descriptors | ✓ Passed | 8 s
wallet_avoidreuse.py --descriptors | ✓ Passed | 84 s
wallet_avoidreuse.py --legacy-wallet | ✓ Passed | 379 s
wallet_backup.py --descriptors | ✓ Passed | 46 s
wallet_backup.py --legacy-wallet | ✓ Passed | 71 s
wallet_balance.py --descriptors | ✓ Passed | 15 s
wallet_balance.py --legacy-wallet | ✓ Passed | 15 s
wallet_basic.py --descriptors | ✓ Passed | 53 s
wallet_basic.py --legacy-wallet | ✓ Passed | 59 s
wallet_blank.py --descriptors | ✓ Passed | 3 s
wallet_blank.py --legacy-wallet | ✓ Passed | 4 s
wallet_bumpfee.py --descriptors | ✓ Passed | 66 s
wallet_bumpfee.py --legacy-wallet | ✓ Passed | 66 s
wallet_change_address.py --descriptors | ✓ Passed | 17 s
wallet_change_address.py --legacy-wallet | ✓ Passed | 23 s
wallet_coinbase_category.py --descriptors | ✓ Passed | 4 s
wallet_coinbase_category.py --legacy-wallet | ✓ Passed | 4 s
wallet_conflicts.py --descriptors | ✓ Passed | 54 s
wallet_conflicts.py --legacy-wallet | ✓ Passed | 78 s
wallet_create_tx.py --descriptors | ✓ Passed | 22 s
wallet_create_tx.py --legacy-wallet | ✓ Passed | 31 s
wallet_createwallet.py --descriptors | ✓ Passed | 7 s
wallet_createwallet.py --legacy-wallet | ✓ Passed | 6 s
wallet_createwallet.py --usecli | ✓ Passed | 15 s
wallet_createwalletdescriptor.py --descriptors | ✓ Passed | 4 s
wallet_crosschain.py | ✓ Passed | 4 s
wallet_descriptor.py --descriptors | ✓ Passed | 46 s
wallet_disable.py | ✓ Passed | 2 s
wallet_dump.py --legacy-wallet | ✓ Passed | 43 s
wallet_encryption.py --descriptors | ✓ Passed | 10 s
wallet_encryption.py --legacy-wallet | ✓ Passed | 9 s
wallet_fallbackfee.py --descriptors | ✓ Passed | 6 s
wallet_fallbackfee.py --legacy-wallet | ✓ Passed | 4 s
wallet_fundrawtransaction.py --descriptors | ✓ Passed | 137 s
wallet_gethdkeys.py --descriptors | ✓ Passed | 5 s
wallet_groups.py --descriptors | ✓ Passed | 37 s
wallet_groups.py --legacy-wallet | ✓ Passed | 82 s
wallet_hd.py --descriptors | ✓ Passed | 13 s
wallet_hd.py --legacy-wallet | ✓ Passed | 20 s
wallet_implicitsegwit.py --legacy-wallet | ✓ Passed | 16 s
wallet_import_rescan.py --legacy-wallet | ✓ Passed | 147 s
wallet_import_with_label.py --legacy-wallet | ✓ Passed | 4 s
wallet_importmulti.py --legacy-wallet | ✓ Passed | 29 s
wallet_importprunedfunds.py --descriptors | ✓ Passed | 5 s
wallet_importprunedfunds.py --legacy-wallet | ✓ Passed | 6 s
wallet_keypool.py --descriptors | ✓ Passed | 12 s
wallet_keypool.py --legacy-wallet | ✓ Passed | 15 s
wallet_keypool_topup.py --descriptors | ✓ Passed | 48 s
wallet_keypool_topup.py --legacy-wallet | ✓ Passed | 43 s
wallet_labels.py --descriptors | ✓ Passed | 10 s
wallet_labels.py --legacy-wallet | ✓ Passed | 16 s
wallet_listdescriptors.py --descriptors | ✓ Passed | 4 s
wallet_listreceivedby.py --descriptors | ✓ Passed | 12 s
wallet_listreceivedby.py --legacy-wallet | ✓ Passed | 10 s
wallet_listsinceblock.py --descriptors | ✓ Passed | 17 s
wallet_listsinceblock.py --legacy-wallet | ✓ Passed | 17 s
wallet_listtransactions.py --descriptors | ✓ Passed | 73 s
wallet_multisig_descriptor_psbt.py --descriptors | ✓ Passed | 19 s
wallet_multiwallet.py --descriptors | ✓ Passed | 29 s
wallet_multiwallet.py --legacy-wallet | ✓ Passed | 28 s
wallet_multiwallet.py --usecli | ✓ Passed | 55 s
wallet_orphanedreward.py | ✓ Passed | 20 s
wallet_reindex.py --descriptors | ✓ Passed | 9 s
wallet_reindex.py --legacy-wallet | ✓ Passed | 9 s
wallet_reorgsrestore.py | ✓ Passed | 11 s
wallet_rescan_unconfirmed.py --descriptors | ✓ Passed | 3 s
wallet_resendwallettransactions.py --descriptors | ✓ Passed | 4 s
wallet_resendwallettransactions.py --legacy-wallet | ✓ Passed | 5 s
wallet_send.py --descriptors | ✓ Passed | 49 s
wallet_send.py --legacy-wallet | ✓ Passed | 87 s
wallet_sendmany.py --descriptors | ✓ Passed | 4 s
wallet_sendmany.py --legacy-wallet | ✓ Passed | 3 s
wallet_signer.py --descriptors | ✓ Passed | 19 s
wallet_signmessagewithaddress.py | ✓ Passed | 3 s
wallet_signrawtransactionwithwallet.py --descriptors | ✓ Passed | 10 s
wallet_signrawtransactionwithwallet.py --legacy-wallet | ✓ Passed | 6 s
wallet_simulaterawtx.py --descriptors | ✓ Passed | 5 s
wallet_simulaterawtx.py --legacy-wallet | ✓ Passed | 5 s
wallet_spend_unconfirmed.py | ✓ Passed | 12 s
wallet_startup.py | ✓ Passed | 7 s
wallet_taproot.py --descriptors | ✓ Passed | 410 s
wallet_timelock.py | ✓ Passed | 3 s
wallet_transactiontime_rescan.py --descriptors | ✓ Passed | 49 s
wallet_transactiontime_rescan.py --legacy-wallet | ✓ Passed | 136 s
wallet_txn_clone.py | ✓ Passed | 8 s
wallet_txn_clone.py --mineblock | ✓ Passed | 8 s
wallet_txn_clone.py --segwit | ✓ Passed | 6 s
wallet_txn_doublespend.py --descriptors | ✓ Passed | 7 s
wallet_txn_doublespend.py --legacy-wallet | ✓ Passed | 8 s
wallet_txn_doublespend.py --mineblock | ✓ Passed | 7 s
wallet_watchonly.py --legacy-wallet | ✓ Passed | 4 s
wallet_watchonly.py --usecli --legacy-wallet | ✓ Passed | 9 s
feature_bind_port_discover.py | ○ Skipped | 1 s
feature_bind_port_externalip.py | ○ Skipped | 1 s
feature_unsupported_utxo_db.py | ○ Skipped | 1 s
interface_usdt_coinselection.py | ○ Skipped | 1 s
interface_usdt_mempool.py | ○ Skipped | 2 s
interface_usdt_net.py | ○ Skipped | 2 s
interface_usdt_utxocache.py | ○ Skipped | 1 s
interface_usdt_validation.py | ○ Skipped | 2 s
mempool_compatibility.py | ○ Skipped | 1 s
wallet_backwards_compatibility.py --descriptors | ○ Skipped | 1 s
wallet_backwards_compatibility.py --legacy-wallet | ○ Skipped | 1 s
wallet_inactive_hdchains.py --legacy-wallet | ○ Skipped | 1 s
wallet_migration.py | ○ Skipped | 1 s
wallet_upgradewallet.py --legacy-wallet | ○ Skipped | 1 s
feature_bind_extra.py | ✖ Failed | 2 s
interface_bitcoin_cli.py --descriptors | ✖ Failed | 6 s
interface_bitcoin_cli.py --legacy-wallet | ✖ Failed | 6 s
rpc_bind.py --ipv4 | ✖ Failed | 2 s
rpc_bind.py --ipv6 | ✖ Failed | 2 s
rpc_bind.py --nonloopback | ✖ Failed | 2 s
wallet_fast_rescan.py --descriptors | ✖ Failed | 69 s
wallet_fundrawtransaction.py --legacy-wallet | ✖ Failed | 155 s
wallet_importdescriptors.py --descriptors | ✖ Failed | 105 s
wallet_listtransactions.py --legacy-wallet | ✖ Failed | 45 s
wallet_miniscript.py --descriptors | ✖ Failed | 116 s
wallet_sendall.py --descriptors | ✖ Failed | 42 s
wallet_sendall.py --legacy-wallet | ✖ Failed | 48 s
ALL | ✖ Failed | 9500 s (accumulated)
Runtime: 1028 s
```
### Operating system and version
macOS 15.3
- URL
-
https://github.com/bitcoin/bitcoin/issue/31812
- Closed by
-
Back to List