-
Notifications
You must be signed in to change notification settings - Fork 902
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
CI: restore dual-funding tests. #6273
Merged
rustyrussell
merged 7 commits into
ElementsProject:master
from
rustyrussell:guilt/df-ci
May 29, 2023
Merged
CI: restore dual-funding tests. #6273
rustyrussell
merged 7 commits into
ElementsProject:master
from
rustyrussell:guilt/df-ci
May 29, 2023
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Broken prior to 23.05 in 908f834: ``` lightningd: FATAL SIGNAL 11 (version d1cf88c) 0x56135ea0f865 send_backtrace common/daemon.c:33 0x56135ea0fa50 crashdump common/daemon.c:75 0x7f00d263bcef ??? ./signal/../sysdeps/unix/sysv/linux/x86_64/libc_sigaction.c:0 0x56135e9887d9 validate_input_unspent lightningd/dual_open_control.c:2632 0x56135e989a55 handle_validate_inputs lightningd/dual_open_control.c:3026 0x56135e98a9a3 dual_opend_msg lightningd/dual_open_control.c:3357 0x56135e9df230 sd_msg_read lightningd/subd.c:557 0x56135eb0b6aa next_plan ccan/ccan/io/io.c:59 0x56135eb0c2d9 do_plan ccan/ccan/io/io.c:407 0x56135eb0c31b io_ready ccan/ccan/io/io.c:417 0x56135eb0e6b5 io_loop ccan/ccan/io/poll.c:453 0x56135e99b682 io_loop_with_timers lightningd/io_loop_with_timers.c:22 0x56135e9a230c main lightningd/lightningd.c:1231 0x7f00d262350f __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58 0x7f00d26235c8 __libc_start_main_impl ../csu/libc-start.c:381 0x56135e96ff24 ??? ???:0 0xffffffffffffffff ??? ???:0 ``` Signed-off-by: Rusty Russell <[email protected]> Changelog-EXPERIMENTAL: Fixed crash in dual-funding.
Now should use listpeerchannels, since listpeers['channels'] is deprecated. Signed-off-by: Rusty Russell <[email protected]>
07413c2 et al reworked how onchaind does broadcasts, meaning tests needed to be updated to the new helpers rather than searching logs themselves. Signed-off-by: Rusty Russell <[email protected]>
Signed-off-by: Rusty Russell <[email protected]>
Failure under CI: ``` > bitcoind.generate_block(1000) tests/test_closing.py:853: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ contrib/pyln-testing/pyln/testing/utils.py:496: in generate_block return self.rpc.generatetoaddress(numblocks, to_addr) contrib/pyln-testing/pyln/testing/utils.py:374: in f res = proxy._call(name, *args) ../../../.cache/pypoetry/virtualenvs/cln-meta-project-AqJ9wMix-py3.7/lib/python3.7/site-packages/bitcoin/rpc.py:246: in _call response = self._get_response() ../../../.cache/pypoetry/virtualenvs/cln-meta-project-AqJ9wMix-py3.7/lib/python3.7/site-packages/bitcoin/rpc.py:276: in _get_response http_response = self.__conn.getresponse() /opt/hostedtoolcache/Python/3.7.16/x64/lib/python3.7/http/client.py:1373: in getresponse response.begin() /opt/hostedtoolcache/Python/3.7.16/x64/lib/python3.7/http/client.py:319: in begin version, status, reason = self._read_status() /opt/hostedtoolcache/Python/3.7.16/x64/lib/python3.7/http/client.py:280: in _read_status line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1") _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <socket.SocketIO object at 0x7fa21aa5d710> b = <memory at 0x7fa21b771390> def readinto(self, b): """Read up to len(b) bytes into the writable buffer *b* and return the number of bytes read. If the socket is non-blocking and no bytes are available, None is returned. If *b* is non-empty, a 0 return value indicates that the connection was shutdown at the other end. """ self._checkClosed() self._checkReadable() if self._timeout_occurred: raise OSError("cannot read from timed out object") while True: try: > return self._sock.recv_into(b) E socket.timeout: timed out /opt/hostedtoolcache/Python/3.7.16/x64/lib/python3.7/socket.py:589: timeout ``` Signed-off-by: Rusty Russell <[email protected]>
It would be freed eventually, but this is clearer. ``` MEMLEAK: 0x56402bbfb6a8 label=openingd/dualopend.c:362:char[] backtrace: ccan/ccan/tal/tal.c:477 (tal_alloc_) ccan/ccan/tal/tal.c:506 (tal_alloc_arr_) ccan/ccan/tal/tal.c:850 (tal_dup_) openingd/dualopend.c:362 (open_abort) openingd/dualopend.c:3411 (rbf_wrap_up) openingd/dualopend.c:3787 (rbf_remote_start) openingd/dualopend.c:4135 (handle_peer_in) openingd/dualopend.c:4421 (main) parents: openingd/dualopend.c:349:char[] ``` Signed-off-by: Rusty Russell <[email protected]>
ACK 8bc53a4 |
…rates race CI hit this issue where it would get a tx_abort in fundchannel. This happens when the dualopend we use to query the feerates has not exited yet (it waits for the tx_abort reply), and we mistakenly reuse it. With multi-channel support, this is wrong: just run another one and it all Just Works. This means we need to rework our dual_open_control.c logic, since it would previously create an unsaved channel then not clean up if something went wrong. Most people will never try to negotiate opening multiple channels to the same peer at the same time (vs. having an established channel and opening a new one), so this case is a bit weird. ``` rates = l1.rpc.dev_queryrates(l2.info['id'], amount, amount) # l1 leases a channel from l2 l1.rpc.fundchannel(l2.info['id'], amount, request_amt=amount, feerate='{}perkw'.format(feerate), > compact_lease=rates['compact_lease']) tests/test_opening.py:1611: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ contrib/pyln-client/pyln/client/lightning.py:833: in fundchannel return self.call("fundchannel", payload) contrib/pyln-testing/pyln/testing/utils.py:721: in call res = LightningRpc.call(self, method, payload, cmdprefix, filter) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pyln.testing.utils.PrettyPrintingLightningRpc object at 0x7f6cbcd97950> method = 'fundchannel' payload = {'amount': 500000, 'announce': True, 'compact_lease': '029a00640064000000644c4b40', 'feerate': '2000perkw', ...} cmdprefix = None, filter = None def call(self, method, payload=None, cmdprefix=None, filter=None): """Generic call API: you can set cmdprefix here, or set self.cmdprefix ... if not isinstance(resp, dict): raise ValueError("Malformed response, response is not a dictionary %s." % resp) elif "error" in resp: > raise RpcError(method, payload, resp['error']) E pyln.client.lightning.RpcError: RPC call failed: method: fundchannel, payload: {'id': '022d223620a359a47ff7f7ac447c85c46c923da53389221a0054c11c1e3ca31d59', 'amount': 500000, 'feerate': '2000perkw', 'announce': True, 'request_amt': 500000, 'compact_lease': '029a00640064000000644c4b40'}, error: {'code': -1, 'message': 'Abort requested', 'data': {'id': '022d223620a359a47ff7f7ac447c85c46c923da53389221a0054c11c1e3ca31d59', 'method': 'openchannel_init'}} ``` Signed-off-by: Rusty Russell <[email protected]>
Closed
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
No description provided.