test: wallet_miniscript.py fails with thread sanitizer #28800

issue Sjors openend this issue on November 6, 2023
  1. Sjors commented at 3:28 am on November 6, 2023: member

    Is there an existing issue for this?

    • I have searched the existing issues

    Current behaviour

    Using clang version 15.0.7 on Ubuntu and enabling the thread sanitizer, the wallet_miniscript.py --descriptors test consistently fails with a timeout.

    Expected behaviour

    Don’t timeout.

    I could of course increate the timeouts, but this is the only test with that issue.

    As an aside, the log output contains extremely long descriptors which should probably be truncated.

    Steps to reproduce

    0./autogen
    1./configure CC=clang CXX=clang++ --enable-suppress-external-warnings --with-sanitizers=thread --without-gui
    2make -j33
    3test/functional/wallet_miniscript.py --descriptors
    

    Relevant log output

    Full log: https://termbin.com/p81f

     02023-11-06T03:18:08.275000Z TestFramework (ERROR): JSONRPC error
     1Traceback (most recent call last):
     2  File "/home/sjors/dev/bitcoin/test/functional/test_framework/authproxy.py", line 151, in _get_response
     3    http_response = self.__conn.getresponse()
     4  File "/home/sjors/.pyenv/versions/3.9.18/lib/python3.9/http/client.py", line 1377, in getresponse
     5    response.begin()
     6  File "/home/sjors/.pyenv/versions/3.9.18/lib/python3.9/http/client.py", line 320, in begin
     7    version, status, reason = self._read_status()
     8  File "/home/sjors/.pyenv/versions/3.9.18/lib/python3.9/http/client.py", line 281, in _read_status
     9    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
    10  File "/home/sjors/.pyenv/versions/3.9.18/lib/python3.9/socket.py", line 704, in readinto
    11    return self._sock.recv_into(b)
    12socket.timeout: timed out
    13
    14During handling of the above exception, another exception occurred:
    15
    16Traceback (most recent call last):
    17  File "/home/sjors/dev/bitcoin/test/functional/test_framework/test_framework.py", line 132, in main
    18    self.run_test()
    19  File "/home/sjors/dev/bitcoin/test/functional/wallet_miniscript.py", line 386, in run_test
    20    self.signing_test(desc, None, None, 1, 3, None)
    21  File "/home/sjors/dev/bitcoin/test/functional/wallet_miniscript.py", line 258, in signing_test
    22    res = self.ms_sig_wallet.importdescriptors(
    23  File "/home/sjors/dev/bitcoin/test/functional/test_framework/coverage.py", line 50, in __call__
    24    return_val = self.auth_service_proxy_instance.__call__(*args, **kwargs)
    25  File "/home/sjors/dev/bitcoin/test/functional/test_framework/authproxy.py", line 127, in __call__
    26    response, status = self._request('POST', self.__url.path, postdata.encode('utf-8'))
    27  File "/home/sjors/dev/bitcoin/test/functional/test_framework/authproxy.py", line 106, in _request
    28    return self._get_response()
    29  File "/home/sjors/dev/bitcoin/test/functional/test_framework/authproxy.py", line 153, in _get_response
    30    raise JSONRPCException({
    31test_framework.authproxy.JSONRPCException: 'importdescriptors' RPC took longer than 240.000000 seconds. Consider using larger timeout for calls that take longer to return. (-344)
    322023-11-06T03:18:08.335000Z TestFramework (INFO): Stopping nodes
    332023-11-06T03:18:08.335000Z TestFramework.node0 (ERROR): Unable to stop node.
    34Traceback (most recent call last):
    35  File "/home/sjors/dev/bitcoin/test/functional/test_framework/test_node.py", line 361, in stop_node
    36    self.stop(wait=wait)
    37  File "/home/sjors/dev/bitcoin/test/functional/test_framework/coverage.py", line 50, in __call__
    38    return_val = self.auth_service_proxy_instance.__call__(*args, **kwargs)
    39  File "/home/sjors/dev/bitcoin/test/functional/test_framework/authproxy.py", line 127, in __call__
    40    response, status = self._request('POST', self.__url.path, postdata.encode('utf-8'))
    41  File "/home/sjors/dev/bitcoin/test/functional/test_framework/authproxy.py", line 105, in _request
    42    self.__conn.request(method, path, postdata, headers)
    43  File "/home/sjors/.pyenv/versions/3.9.18/lib/python3.9/http/client.py", line 1285, in request
    44    self._send_request(method, url, body, headers, encode_chunked)
    45  File "/home/sjors/.pyenv/versions/3.9.18/lib/python3.9/http/client.py", line 1296, in _send_request
    46    self.putrequest(method, url, **skips)
    47  File "/home/sjors/.pyenv/versions/3.9.18/lib/python3.9/http/client.py", line 1122, in putrequest
    48    raise CannotSendRequest(self.__state)
    49http.client.CannotSendRequest: Request-sent
    

    How did you obtain Bitcoin Core

    Compiled from source

    What version of Bitcoin Core are you using?

    master@953d302a242381ae13112ea42f87d57e6e796147

    Operating system and version

    Ubuntu 23.04

    Machine specifications

    AMD Ryzen 7950x /tmp is mounted to tmpfs

  2. Sjors commented at 3:29 am on November 6, 2023: member

    I’ll try if @theStack’s #28799 helps.

    Update: it does! Test finishes in 45 seconds rather than timing out after 240 seconds.

  3. maflcko commented at 9:19 am on November 6, 2023: member
    This also happens on the qemu-s390x and valgrind CI tasks
  4. achow101 closed this on Nov 6, 2023


Sjors maflcko


github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2024-07-01 10:13 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me