Page MenuHomePhabricator

core#19107: p2p: Move all header verification into the network layer, extend logging
AbandonedPublicDraft

Authored by majcosta on Jan 6 2023, 15:24.

Details

Reviewers
None
Group Reviewers
Restricted Project
Summary

deb52711a17236d0fca302701b5af585341ab42a Remove header checks out of net_processing (Troy Giorshev)
52d4ae46ab822d0f54e246a6f2364415cda149bd Give V1TransportDeserializer CChainParams& member (Troy Giorshev)
5bceef6b12fa16d20287693be377dace3dfec3e5 Change CMessageHeader Constructor (Troy Giorshev)
1ca20c1af8f08f07c407c3183c37b467ddf0f413 Add doxygen comment for ReceiveMsgBytes (Troy Giorshev)
890b1d7c2b8312d41d048d2db124586c5dbc8a49 Move checksum check from net_processing to net (Troy Giorshev)
2716647ebf60cea05fc9edce6a18dcce4e7727ad Give V1TransportDeserializer an m_node_id member (Troy Giorshev)

Pull request description:

Inspired by #15206 and #15197, this PR moves all message header verification from the message processing layer and into the network/transport layer.

In the previous PRs there is a change in behavior, where we would disconnect from peers upon a single failed checksum check.  In various discussions there was concern over whether this was the right choice, and some expressed a desire to see how this would look if it was made to be a pure refactor.

For more context, see https://bitcoincore.reviews/15206.html#l-81.

This PR improves the separation between the p2p layers, helping improvements like [BIP324](https://github.com/bitcoin/bitcoin/pull/18242) and #18989.

Backport of core#19107

Test Plan
ninja all check check-functional

Event Timeline

Failed tests logs:

====== Bitcoin ABC functional tests: abc-invalid-message.py ======

------- Stdout: -------
2023-01-06T15:30:41.653000Z TestFramework (INFO): Initializing test directory /work/abc-ci-builds/build-without-wallet/test/tmp/test_runner_₿₵_  _20230106_152814/abc-invalid-message_149
2023-01-06T15:30:42.194000Z TestFramework (INFO): Send an invalid version message and check we get banned
2023-01-06T15:31:42.233000Z TestFramework.utils (ERROR): wait_until() failed. Predicate: ''''
        def test_function():
            if check_connected:
                assert self.is_connected
            return test_function_in()
'''
2023-01-06T15:31:42.234000Z TestFramework (ERROR): Assertion failed
Traceback (most recent call last):
  File "/work/test/functional/test_framework/test_framework.py", line 135, in main
    self.run_test()
  File "/work/test/functional/abc-invalid-message.py", line 72, in run_test
    bad_interface.wait_for_disconnect()
  File "/work/test/functional/test_framework/p2p.py", line 542, in wait_for_disconnect
    self.wait_until(test_function, timeout=timeout, check_connected=False)
  File "/work/test/functional/test_framework/p2p.py", line 533, in wait_until
    wait_until_helper(test_function, timeout=timeout, lock=p2p_lock,
  File "/work/test/functional/test_framework/util.py", line 285, in wait_until_helper
    raise AssertionError(
AssertionError: Predicate ''''
        def test_function():
            if check_connected:
                assert self.is_connected
            return test_function_in()
''' not true after 60.0 seconds
2023-01-06T15:31:42.287000Z TestFramework (INFO): Stopping nodes
2023-01-06T15:31:42.344000Z TestFramework (WARNING): Not cleaning up dir /work/abc-ci-builds/build-without-wallet/test/tmp/test_runner_₿₵_  _20230106_152814/abc-invalid-message_149
2023-01-06T15:31:42.344000Z TestFramework (ERROR): Test failed. Test logging available at /work/abc-ci-builds/build-without-wallet/test/tmp/test_runner_₿₵_  _20230106_152814/abc-invalid-message_149/test_framework.log
2023-01-06T15:31:42.344000Z TestFramework (ERROR): 
2023-01-06T15:31:42.345000Z TestFramework (ERROR): Hint: Call /work/test/functional/combine_logs.py '/work/abc-ci-builds/build-without-wallet/test/tmp/test_runner_₿₵_  _20230106_152814/abc-invalid-message_149' to consolidate all logs
2023-01-06T15:31:42.345000Z TestFramework (ERROR): 
2023-01-06T15:31:42.345000Z TestFramework (ERROR): If this failure happened unexpectedly or intermittently, please file a bug and provide a link or upload of the combined log.
2023-01-06T15:31:42.345000Z TestFramework (ERROR): https://github.com/Bitcoin-ABC/bitcoin-abc/issues
2023-01-06T15:31:42.346000Z TestFramework (ERROR):
====== Bitcoin ABC functional tests: p2p_invalid_messages.py ======

------- Stdout: -------
2023-01-06T15:29:32.781000Z TestFramework (INFO): Initializing test directory /work/abc-ci-builds/build-without-wallet/test/tmp/test_runner_₿₵_  _20230106_152814/p2p_invalid_messages_36
2023-01-06T15:29:33.038000Z TestFramework (INFO): Test message with header split across two buffers is received
2023-01-06T15:29:33.242000Z TestFramework (INFO): Test message with invalid magic bytes disconnects peer
2023-01-06T15:29:33.394000Z TestFramework (INFO): Test message with invalid checksum logs an error
2023-01-06T15:30:33.523000Z TestFramework.utils (ERROR): wait_until() failed. Predicate: ''''
        def test_function():
            if check_connected:
                assert self.is_connected
            return test_function_in()
'''
2023-01-06T15:30:33.523000Z TestFramework (ERROR): Assertion failed
Traceback (most recent call last):
  File "/work/test/functional/test_framework/test_framework.py", line 135, in main
    self.run_test()
  File "/work/test/functional/p2p_invalid_messages.py", line 59, in run_test
    self.test_checksum()
  File "/work/test/functional/p2p_invalid_messages.py", line 114, in test_checksum
    conn.wait_for_disconnect()
  File "/work/test/functional/test_framework/p2p.py", line 542, in wait_for_disconnect
    self.wait_until(test_function, timeout=timeout, check_connected=False)
  File "/work/test/functional/test_framework/p2p.py", line 533, in wait_until
    wait_until_helper(test_function, timeout=timeout, lock=p2p_lock,
  File "/work/test/functional/test_framework/util.py", line 285, in wait_until_helper
    raise AssertionError(
AssertionError: Predicate ''''
        def test_function():
            if check_connected:
                assert self.is_connected
            return test_function_in()
''' not true after 60.0 seconds
2023-01-06T15:30:33.574000Z TestFramework (INFO): Stopping nodes
2023-01-06T15:30:33.676000Z TestFramework (WARNING): Not cleaning up dir /work/abc-ci-builds/build-without-wallet/test/tmp/test_runner_₿₵_  _20230106_152814/p2p_invalid_messages_36
2023-01-06T15:30:33.677000Z TestFramework (ERROR): Test failed. Test logging available at /work/abc-ci-builds/build-without-wallet/test/tmp/test_runner_₿₵_  _20230106_152814/p2p_invalid_messages_36/test_framework.log
2023-01-06T15:30:33.677000Z TestFramework (ERROR): 
2023-01-06T15:30:33.678000Z TestFramework (ERROR): Hint: Call /work/test/functional/combine_logs.py '/work/abc-ci-builds/build-without-wallet/test/tmp/test_runner_₿₵_  _20230106_152814/p2p_invalid_messages_36' to consolidate all logs
2023-01-06T15:30:33.678000Z TestFramework (ERROR): 
2023-01-06T15:30:33.678000Z TestFramework (ERROR): If this failure happened unexpectedly or intermittently, please file a bug and provide a link or upload of the combined log.
2023-01-06T15:30:33.679000Z TestFramework (ERROR): https://github.com/Bitcoin-ABC/bitcoin-abc/issues
2023-01-06T15:30:33.679000Z TestFramework (ERROR):

Each failure log is accessible here:
Bitcoin ABC functional tests: abc-invalid-message.py
Bitcoin ABC functional tests: p2p_invalid_messages.py

Failed tests logs:

====== Bitcoin ABC functional tests: abc-invalid-message.py ======

------- Stdout: -------
2023-01-06T15:34:50.877000Z TestFramework (INFO): Initializing test directory /work/abc-ci-builds/build-debug/test/tmp/test_runner_₿₵_  _20230106_152800/abc-invalid-message_149
2023-01-06T15:34:51.727000Z TestFramework (INFO): Send an invalid version message and check we get banned
2023-01-06T15:35:51.758000Z TestFramework.utils (ERROR): wait_until() failed. Predicate: ''''
        def test_function():
            if check_connected:
                assert self.is_connected
            return test_function_in()
'''
2023-01-06T15:35:51.758000Z TestFramework (ERROR): Assertion failed
Traceback (most recent call last):
  File "/work/test/functional/test_framework/test_framework.py", line 135, in main
    self.run_test()
  File "/work/test/functional/abc-invalid-message.py", line 72, in run_test
    bad_interface.wait_for_disconnect()
  File "/work/test/functional/test_framework/p2p.py", line 542, in wait_for_disconnect
    self.wait_until(test_function, timeout=timeout, check_connected=False)
  File "/work/test/functional/test_framework/p2p.py", line 533, in wait_until
    wait_until_helper(test_function, timeout=timeout, lock=p2p_lock,
  File "/work/test/functional/test_framework/util.py", line 285, in wait_until_helper
    raise AssertionError(
AssertionError: Predicate ''''
        def test_function():
            if check_connected:
                assert self.is_connected
            return test_function_in()
''' not true after 60.0 seconds
2023-01-06T15:35:51.809000Z TestFramework (INFO): Stopping nodes
2023-01-06T15:35:51.965000Z TestFramework (WARNING): Not cleaning up dir /work/abc-ci-builds/build-debug/test/tmp/test_runner_₿₵_  _20230106_152800/abc-invalid-message_149
2023-01-06T15:35:51.965000Z TestFramework (ERROR): Test failed. Test logging available at /work/abc-ci-builds/build-debug/test/tmp/test_runner_₿₵_  _20230106_152800/abc-invalid-message_149/test_framework.log
2023-01-06T15:35:51.966000Z TestFramework (ERROR): 
2023-01-06T15:35:51.966000Z TestFramework (ERROR): Hint: Call /work/test/functional/combine_logs.py '/work/abc-ci-builds/build-debug/test/tmp/test_runner_₿₵_  _20230106_152800/abc-invalid-message_149' to consolidate all logs
2023-01-06T15:35:51.966000Z TestFramework (ERROR): 
2023-01-06T15:35:51.966000Z TestFramework (ERROR): If this failure happened unexpectedly or intermittently, please file a bug and provide a link or upload of the combined log.
2023-01-06T15:35:51.966000Z TestFramework (ERROR): https://github.com/Bitcoin-ABC/bitcoin-abc/issues
2023-01-06T15:35:51.966000Z TestFramework (ERROR):
====== Bitcoin ABC functional tests: p2p_invalid_messages.py ======

------- Stdout: -------
2023-01-06T15:31:31.436000Z TestFramework (INFO): Initializing test directory /work/abc-ci-builds/build-debug/test/tmp/test_runner_₿₵_  _20230106_152800/p2p_invalid_messages_36
2023-01-06T15:31:32.032000Z TestFramework (INFO): Test message with header split across two buffers is received
2023-01-06T15:31:32.187000Z TestFramework (INFO): Test message with invalid magic bytes disconnects peer
2023-01-06T15:31:32.340000Z TestFramework (INFO): Test message with invalid checksum logs an error
2023-01-06T15:32:32.467000Z TestFramework.utils (ERROR): wait_until() failed. Predicate: ''''
        def test_function():
            if check_connected:
                assert self.is_connected
            return test_function_in()
'''
2023-01-06T15:32:32.467000Z TestFramework (ERROR): Assertion failed
Traceback (most recent call last):
  File "/work/test/functional/test_framework/test_framework.py", line 135, in main
    self.run_test()
  File "/work/test/functional/p2p_invalid_messages.py", line 59, in run_test
    self.test_checksum()
  File "/work/test/functional/p2p_invalid_messages.py", line 114, in test_checksum
    conn.wait_for_disconnect()
  File "/work/test/functional/test_framework/p2p.py", line 542, in wait_for_disconnect
    self.wait_until(test_function, timeout=timeout, check_connected=False)
  File "/work/test/functional/test_framework/p2p.py", line 533, in wait_until
    wait_until_helper(test_function, timeout=timeout, lock=p2p_lock,
  File "/work/test/functional/test_framework/util.py", line 285, in wait_until_helper
    raise AssertionError(
AssertionError: Predicate ''''
        def test_function():
            if check_connected:
                assert self.is_connected
            return test_function_in()
''' not true after 60.0 seconds
2023-01-06T15:32:32.518000Z TestFramework (INFO): Stopping nodes
2023-01-06T15:32:32.619000Z TestFramework (WARNING): Not cleaning up dir /work/abc-ci-builds/build-debug/test/tmp/test_runner_₿₵_  _20230106_152800/p2p_invalid_messages_36
2023-01-06T15:32:32.619000Z TestFramework (ERROR): Test failed. Test logging available at /work/abc-ci-builds/build-debug/test/tmp/test_runner_₿₵_  _20230106_152800/p2p_invalid_messages_36/test_framework.log
2023-01-06T15:32:32.619000Z TestFramework (ERROR): 
2023-01-06T15:32:32.619000Z TestFramework (ERROR): Hint: Call /work/test/functional/combine_logs.py '/work/abc-ci-builds/build-debug/test/tmp/test_runner_₿₵_  _20230106_152800/p2p_invalid_messages_36' to consolidate all logs
2023-01-06T15:32:32.619000Z TestFramework (ERROR): 
2023-01-06T15:32:32.619000Z TestFramework (ERROR): If this failure happened unexpectedly or intermittently, please file a bug and provide a link or upload of the combined log.
2023-01-06T15:32:32.620000Z TestFramework (ERROR): https://github.com/Bitcoin-ABC/bitcoin-abc/issues
2023-01-06T15:32:32.620000Z TestFramework (ERROR):

Each failure log is accessible here:
Bitcoin ABC functional tests: abc-invalid-message.py
Bitcoin ABC functional tests: p2p_invalid_messages.py

Failed tests logs:

====== Bitcoin ABC functional tests: abc-invalid-message.py ======

------- Stdout: -------
2023-01-06T15:35:19.232000Z TestFramework (INFO): Initializing test directory /work/abc-ci-builds/build-diff/test/tmp/test_runner_₿₵_  _20230106_153105/abc-invalid-message_149
2023-01-06T15:35:19.789000Z TestFramework (INFO): Send an invalid version message and check we get banned
2023-01-06T15:36:19.817000Z TestFramework.utils (ERROR): wait_until() failed. Predicate: ''''
        def test_function():
            if check_connected:
                assert self.is_connected
            return test_function_in()
'''
2023-01-06T15:36:19.817000Z TestFramework (ERROR): Assertion failed
Traceback (most recent call last):
  File "/work/test/functional/test_framework/test_framework.py", line 135, in main
    self.run_test()
  File "/work/test/functional/abc-invalid-message.py", line 72, in run_test
    bad_interface.wait_for_disconnect()
  File "/work/test/functional/test_framework/p2p.py", line 542, in wait_for_disconnect
    self.wait_until(test_function, timeout=timeout, check_connected=False)
  File "/work/test/functional/test_framework/p2p.py", line 533, in wait_until
    wait_until_helper(test_function, timeout=timeout, lock=p2p_lock,
  File "/work/test/functional/test_framework/util.py", line 285, in wait_until_helper
    raise AssertionError(
AssertionError: Predicate ''''
        def test_function():
            if check_connected:
                assert self.is_connected
            return test_function_in()
''' not true after 60.0 seconds
2023-01-06T15:36:19.870000Z TestFramework (INFO): Stopping nodes
2023-01-06T15:36:20.029000Z TestFramework (WARNING): Not cleaning up dir /work/abc-ci-builds/build-diff/test/tmp/test_runner_₿₵_  _20230106_153105/abc-invalid-message_149
2023-01-06T15:36:20.029000Z TestFramework (ERROR): Test failed. Test logging available at /work/abc-ci-builds/build-diff/test/tmp/test_runner_₿₵_  _20230106_153105/abc-invalid-message_149/test_framework.log
2023-01-06T15:36:20.029000Z TestFramework (ERROR): 
2023-01-06T15:36:20.030000Z TestFramework (ERROR): Hint: Call /work/test/functional/combine_logs.py '/work/abc-ci-builds/build-diff/test/tmp/test_runner_₿₵_  _20230106_153105/abc-invalid-message_149' to consolidate all logs
2023-01-06T15:36:20.030000Z TestFramework (ERROR): 
2023-01-06T15:36:20.030000Z TestFramework (ERROR): If this failure happened unexpectedly or intermittently, please file a bug and provide a link or upload of the combined log.
2023-01-06T15:36:20.031000Z TestFramework (ERROR): https://github.com/Bitcoin-ABC/bitcoin-abc/issues
2023-01-06T15:36:20.031000Z TestFramework (ERROR):
====== Bitcoin ABC functional tests: p2p_invalid_messages.py ======

------- Stdout: -------
2023-01-06T15:33:22.579000Z TestFramework (INFO): Initializing test directory /work/abc-ci-builds/build-diff/test/tmp/test_runner_₿₵_  _20230106_153105/p2p_invalid_messages_36
2023-01-06T15:33:22.875000Z TestFramework (INFO): Test message with header split across two buffers is received
2023-01-06T15:33:23.080000Z TestFramework (INFO): Test message with invalid magic bytes disconnects peer
2023-01-06T15:33:23.233000Z TestFramework (INFO): Test message with invalid checksum logs an error
2023-01-06T15:34:23.382000Z TestFramework.utils (ERROR): wait_until() failed. Predicate: ''''
        def test_function():
            if check_connected:
                assert self.is_connected
            return test_function_in()
'''
2023-01-06T15:34:23.382000Z TestFramework (ERROR): Assertion failed
Traceback (most recent call last):
  File "/work/test/functional/test_framework/test_framework.py", line 135, in main
    self.run_test()
  File "/work/test/functional/p2p_invalid_messages.py", line 59, in run_test
    self.test_checksum()
  File "/work/test/functional/p2p_invalid_messages.py", line 114, in test_checksum
    conn.wait_for_disconnect()
  File "/work/test/functional/test_framework/p2p.py", line 542, in wait_for_disconnect
    self.wait_until(test_function, timeout=timeout, check_connected=False)
  File "/work/test/functional/test_framework/p2p.py", line 533, in wait_until
    wait_until_helper(test_function, timeout=timeout, lock=p2p_lock,
  File "/work/test/functional/test_framework/util.py", line 285, in wait_until_helper
    raise AssertionError(
AssertionError: Predicate ''''
        def test_function():
            if check_connected:
                assert self.is_connected
            return test_function_in()
''' not true after 60.0 seconds
2023-01-06T15:34:23.433000Z TestFramework (INFO): Stopping nodes
2023-01-06T15:34:23.484000Z TestFramework (WARNING): Not cleaning up dir /work/abc-ci-builds/build-diff/test/tmp/test_runner_₿₵_  _20230106_153105/p2p_invalid_messages_36
2023-01-06T15:34:23.484000Z TestFramework (ERROR): Test failed. Test logging available at /work/abc-ci-builds/build-diff/test/tmp/test_runner_₿₵_  _20230106_153105/p2p_invalid_messages_36/test_framework.log
2023-01-06T15:34:23.484000Z TestFramework (ERROR): 
2023-01-06T15:34:23.484000Z TestFramework (ERROR): Hint: Call /work/test/functional/combine_logs.py '/work/abc-ci-builds/build-diff/test/tmp/test_runner_₿₵_  _20230106_153105/p2p_invalid_messages_36' to consolidate all logs
2023-01-06T15:34:23.484000Z TestFramework (ERROR): 
2023-01-06T15:34:23.484000Z TestFramework (ERROR): If this failure happened unexpectedly or intermittently, please file a bug and provide a link or upload of the combined log.
2023-01-06T15:34:23.484000Z TestFramework (ERROR): https://github.com/Bitcoin-ABC/bitcoin-abc/issues
2023-01-06T15:34:23.484000Z TestFramework (ERROR):
====== Bitcoin ABC functional tests with the next upgrade activated: abc-invalid-message.py ======

------- Stdout: -------
2023-01-06T15:40:12.418000Z TestFramework (INFO): Initializing test directory /work/abc-ci-builds/build-diff/test/tmp/test_runner_₿₵_  _20230106_153620/abc-invalid-message_149
2023-01-06T15:40:12.969000Z TestFramework (INFO): Send an invalid version message and check we get banned
2023-01-06T15:41:12.984000Z TestFramework.utils (ERROR): wait_until() failed. Predicate: ''''
        def test_function():
            if check_connected:
                assert self.is_connected
            return test_function_in()
'''
2023-01-06T15:41:12.984000Z TestFramework (ERROR): Assertion failed
Traceback (most recent call last):
  File "/work/test/functional/test_framework/test_framework.py", line 135, in main
    self.run_test()
  File "/work/test/functional/abc-invalid-message.py", line 72, in run_test
    bad_interface.wait_for_disconnect()
  File "/work/test/functional/test_framework/p2p.py", line 542, in wait_for_disconnect
    self.wait_until(test_function, timeout=timeout, check_connected=False)
  File "/work/test/functional/test_framework/p2p.py", line 533, in wait_until
    wait_until_helper(test_function, timeout=timeout, lock=p2p_lock,
  File "/work/test/functional/test_framework/util.py", line 285, in wait_until_helper
    raise AssertionError(
AssertionError: Predicate ''''
        def test_function():
            if check_connected:
                assert self.is_connected
            return test_function_in()
''' not true after 60.0 seconds
2023-01-06T15:41:13.035000Z TestFramework (INFO): Stopping nodes
2023-01-06T15:41:13.190000Z TestFramework (WARNING): Not cleaning up dir /work/abc-ci-builds/build-diff/test/tmp/test_runner_₿₵_  _20230106_153620/abc-invalid-message_149
2023-01-06T15:41:13.190000Z TestFramework (ERROR): Test failed. Test logging available at /work/abc-ci-builds/build-diff/test/tmp/test_runner_₿₵_  _20230106_153620/abc-invalid-message_149/test_framework.log
2023-01-06T15:41:13.191000Z TestFramework (ERROR): 
2023-01-06T15:41:13.191000Z TestFramework (ERROR): Hint: Call /work/test/functional/combine_logs.py '/work/abc-ci-builds/build-diff/test/tmp/test_runner_₿₵_  _20230106_153620/abc-invalid-message_149' to consolidate all logs
2023-01-06T15:41:13.191000Z TestFramework (ERROR): 
2023-01-06T15:41:13.192000Z TestFramework (ERROR): If this failure happened unexpectedly or intermittently, please file a bug and provide a link or upload of the combined log.
2023-01-06T15:41:13.192000Z TestFramework (ERROR): https://github.com/Bitcoin-ABC/bitcoin-abc/issues
2023-01-06T15:41:13.192000Z TestFramework (ERROR):
====== Bitcoin ABC functional tests with the next upgrade activated: p2p_invalid_messages.py ======

------- Stdout: -------
2023-01-06T15:38:26.659000Z TestFramework (INFO): Initializing test directory /work/abc-ci-builds/build-diff/test/tmp/test_runner_₿₵_  _20230106_153620/p2p_invalid_messages_36
2023-01-06T15:38:26.963000Z TestFramework (INFO): Test message with header split across two buffers is received
2023-01-06T15:38:27.167000Z TestFramework (INFO): Test message with invalid magic bytes disconnects peer
2023-01-06T15:38:27.320000Z TestFramework (INFO): Test message with invalid checksum logs an error
2023-01-06T15:39:27.462000Z TestFramework.utils (ERROR): wait_until() failed. Predicate: ''''
        def test_function():
            if check_connected:
                assert self.is_connected
            return test_function_in()
'''
2023-01-06T15:39:27.462000Z TestFramework (ERROR): Assertion failed
Traceback (most recent call last):
  File "/work/test/functional/test_framework/test_framework.py", line 135, in main
    self.run_test()
  File "/work/test/functional/p2p_invalid_messages.py", line 59, in run_test
    self.test_checksum()
  File "/work/test/functional/p2p_invalid_messages.py", line 114, in test_checksum
    conn.wait_for_disconnect()
  File "/work/test/functional/test_framework/p2p.py", line 542, in wait_for_disconnect
    self.wait_until(test_function, timeout=timeout, check_connected=False)
  File "/work/test/functional/test_framework/p2p.py", line 533, in wait_until
    wait_until_helper(test_function, timeout=timeout, lock=p2p_lock,
  File "/work/test/functional/test_framework/util.py", line 285, in wait_until_helper
    raise AssertionError(
AssertionError: Predicate ''''
        def test_function():
            if check_connected:
                assert self.is_connected
            return test_function_in()
''' not true after 60.0 seconds
2023-01-06T15:39:27.513000Z TestFramework (INFO): Stopping nodes
2023-01-06T15:39:27.565000Z TestFramework (WARNING): Not cleaning up dir /work/abc-ci-builds/build-diff/test/tmp/test_runner_₿₵_  _20230106_153620/p2p_invalid_messages_36
2023-01-06T15:39:27.565000Z TestFramework (ERROR): Test failed. Test logging available at /work/abc-ci-builds/build-diff/test/tmp/test_runner_₿₵_  _20230106_153620/p2p_invalid_messages_36/test_framework.log
2023-01-06T15:39:27.565000Z TestFramework (ERROR): 
2023-01-06T15:39:27.565000Z TestFramework (ERROR): Hint: Call /work/test/functional/combine_logs.py '/work/abc-ci-builds/build-diff/test/tmp/test_runner_₿₵_  _20230106_153620/p2p_invalid_messages_36' to consolidate all logs
2023-01-06T15:39:27.565000Z TestFramework (ERROR): 
2023-01-06T15:39:27.565000Z TestFramework (ERROR): If this failure happened unexpectedly or intermittently, please file a bug and provide a link or upload of the combined log.
2023-01-06T15:39:27.565000Z TestFramework (ERROR): https://github.com/Bitcoin-ABC/bitcoin-abc/issues
2023-01-06T15:39:27.565000Z TestFramework (ERROR):

Each failure log is accessible here:
Bitcoin ABC functional tests: abc-invalid-message.py
Bitcoin ABC functional tests: p2p_invalid_messages.py
Bitcoin ABC functional tests with the next upgrade activated: abc-invalid-message.py
Bitcoin ABC functional tests with the next upgrade activated: p2p_invalid_messages.py