make[1]: Entering directory '/home/runner/work/moq-interop-runner/moq-interop-runner/main' Running tests against https://us-west-2.relay.quicr.org:33437/relay... Client: ghcr.io/gmarzot/aiomoqt:latest docker run --rm \ \ --network host \ -e RELAY_URL=https://us-west-2.relay.quicr.org:33437/relay \ -e TLS_DISABLE_VERIFY=1 \ ghcr.io/gmarzot/aiomoqt:latest 2026-05-19 02:03:53.395 ERROR: handle_control_message: error handling control message: BufferReadError: BufferReadError('read out of bounds') 2026-05-19 02:03:53.396 ERROR: handle_control_message: traceback: Traceback (most recent call last): File "/app/aiomoqt/protocol.py", line 407, in _moqt_handle_control_message msg = message_class.deserialize(buf, buf_end=end_pos) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/aiomoqt/messages/session_setup.py", line 48, in deserialize params = MOQTMessage._deserialize_params(buf, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/aiomoqt/messages/base.py", line 427, in _deserialize_params param_value = buf.pull_bytes(param_len) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "src/aiopquic/_binding/_buffer.pyx", line 204, in aiopquic._binding._buffer.Buffer.pull_bytes aiopquic._binding._buffer.BufferReadError: read out of bounds ERROR asyncio: Exception in callback _Dispatcher._drain() handle: Traceback (most recent call last): File "/usr/local/lib/python3.12/asyncio/events.py", line 88, in _run self._context.run(self._callback, *self._args) File "/usr/local/lib/python3.12/site-packages/aiopquic/asyncio/webtransport.py", line 440, in _drain session._on_event(ev) File "/app/aiomoqt/protocol.py", line 2340, in _on_event self.quic_event_received(_SD(stream_id=sid, data=data, File "/app/aiomoqt/protocol.py", line 997, in quic_event_received msg = self._moqt_handle_control_message(msg_buf) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/aiomoqt/protocol.py", line 407, in _moqt_handle_control_message msg = message_class.deserialize(buf, buf_end=end_pos) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/aiomoqt/messages/session_setup.py", line 48, in deserialize params = MOQTMessage._deserialize_params(buf, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/aiomoqt/messages/base.py", line 427, in _deserialize_params param_value = buf.pull_bytes(param_len) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "src/aiopquic/_binding/_buffer.pyx", line 204, in aiopquic._binding._buffer.Buffer.pull_bytes aiopquic._binding._buffer.BufferReadError: read out of bounds [FAIL] setup-only: Failed: 2026-05-19 02:03:55.383 ERROR: handle_control_message: error handling control message: BufferReadError: BufferReadError('read out of bounds') 2026-05-19 02:03:55.383 ERROR: handle_control_message: traceback: Traceback (most recent call last): File "/app/aiomoqt/protocol.py", line 407, in _moqt_handle_control_message msg = message_class.deserialize(buf, buf_end=end_pos) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/aiomoqt/messages/session_setup.py", line 48, in deserialize params = MOQTMessage._deserialize_params(buf, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/aiomoqt/messages/base.py", line 427, in _deserialize_params param_value = buf.pull_bytes(param_len) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "src/aiopquic/_binding/_buffer.pyx", line 204, in aiopquic._binding._buffer.Buffer.pull_bytes aiopquic._binding._buffer.BufferReadError: read out of bounds ERROR asyncio: Exception in callback _Dispatcher._drain() handle: Traceback (most recent call last): File "/usr/local/lib/python3.12/asyncio/events.py", line 88, in _run self._context.run(self._callback, *self._args) File "/usr/local/lib/python3.12/site-packages/aiopquic/asyncio/webtransport.py", line 440, in _drain session._on_event(ev) File "/app/aiomoqt/protocol.py", line 2340, in _on_event self.quic_event_received(_SD(stream_id=sid, data=data, File "/app/aiomoqt/protocol.py", line 997, in quic_event_received msg = self._moqt_handle_control_message(msg_buf) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/aiomoqt/protocol.py", line 407, in _moqt_handle_control_message msg = message_class.deserialize(buf, buf_end=end_pos) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/aiomoqt/messages/session_setup.py", line 48, in deserialize params = MOQTMessage._deserialize_params(buf, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/aiomoqt/messages/base.py", line 427, in _deserialize_params param_value = buf.pull_bytes(param_len) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "src/aiopquic/_binding/_buffer.pyx", line 204, in aiopquic._binding._buffer.Buffer.pull_bytes aiopquic._binding._buffer.BufferReadError: read out of bounds [FAIL] announce-only: Failed: 2026-05-19 02:03:57.384 ERROR: handle_control_message: error handling control message: BufferReadError: BufferReadError('read out of bounds') 2026-05-19 02:03:57.384 ERROR: handle_control_message: traceback: Traceback (most recent call last): File "/app/aiomoqt/protocol.py", line 407, in _moqt_handle_control_message msg = message_class.deserialize(buf, buf_end=end_pos) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/aiomoqt/messages/session_setup.py", line 48, in deserialize params = MOQTMessage._deserialize_params(buf, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/aiomoqt/messages/base.py", line 427, in _deserialize_params param_value = buf.pull_bytes(param_len) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "src/aiopquic/_binding/_buffer.pyx", line 204, in aiopquic._binding._buffer.Buffer.pull_bytes aiopquic._binding._buffer.BufferReadError: read out of bounds ERROR asyncio: Exception in callback _Dispatcher._drain() handle: Traceback (most recent call last): File "/usr/local/lib/python3.12/asyncio/events.py", line 88, in _run self._context.run(self._callback, *self._args) File "/usr/local/lib/python3.12/site-packages/aiopquic/asyncio/webtransport.py", line 440, in _drain session._on_event(ev) File "/app/aiomoqt/protocol.py", line 2340, in _on_event self.quic_event_received(_SD(stream_id=sid, data=data, File "/app/aiomoqt/protocol.py", line 997, in quic_event_received msg = self._moqt_handle_control_message(msg_buf) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/aiomoqt/protocol.py", line 407, in _moqt_handle_control_message msg = message_class.deserialize(buf, buf_end=end_pos) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/aiomoqt/messages/session_setup.py", line 48, in deserialize params = MOQTMessage._deserialize_params(buf, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/aiomoqt/messages/base.py", line 427, in _deserialize_params param_value = buf.pull_bytes(param_len) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "src/aiopquic/_binding/_buffer.pyx", line 204, in aiopquic._binding._buffer.Buffer.pull_bytes aiopquic._binding._buffer.BufferReadError: read out of bounds [FAIL] publish-namespace-done: Failed: 2026-05-19 02:03:59.389 ERROR: handle_control_message: error handling control message: BufferReadError: BufferReadError('read out of bounds') 2026-05-19 02:03:59.390 ERROR: handle_control_message: traceback: Traceback (most recent call last): File "/app/aiomoqt/protocol.py", line 407, in _moqt_handle_control_message msg = message_class.deserialize(buf, buf_end=end_pos) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/aiomoqt/messages/session_setup.py", line 48, in deserialize params = MOQTMessage._deserialize_params(buf, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/aiomoqt/messages/base.py", line 427, in _deserialize_params param_value = buf.pull_bytes(param_len) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "src/aiopquic/_binding/_buffer.pyx", line 204, in aiopquic._binding._buffer.Buffer.pull_bytes aiopquic._binding._buffer.BufferReadError: read out of bounds ERROR asyncio: Exception in callback _Dispatcher._drain() handle: Traceback (most recent call last): File "/usr/local/lib/python3.12/asyncio/events.py", line 88, in _run self._context.run(self._callback, *self._args) File "/usr/local/lib/python3.12/site-packages/aiopquic/asyncio/webtransport.py", line 440, in _drain session._on_event(ev) File "/app/aiomoqt/protocol.py", line 2340, in _on_event self.quic_event_received(_SD(stream_id=sid, data=data, File "/app/aiomoqt/protocol.py", line 997, in quic_event_received msg = self._moqt_handle_control_message(msg_buf) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/aiomoqt/protocol.py", line 407, in _moqt_handle_control_message msg = message_class.deserialize(buf, buf_end=end_pos) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/aiomoqt/messages/session_setup.py", line 48, in deserialize params = MOQTMessage._deserialize_params(buf, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/aiomoqt/messages/base.py", line 427, in _deserialize_params param_value = buf.pull_bytes(param_len) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "src/aiopquic/_binding/_buffer.pyx", line 204, in aiopquic._binding._buffer.Buffer.pull_bytes aiopquic._binding._buffer.BufferReadError: read out of bounds [FAIL] subscribe-error: Failed: 2026-05-19 02:04:01.388 ERROR: handle_control_message: error handling control message: BufferReadError: BufferReadError('read out of bounds') 2026-05-19 02:04:01.388 ERROR: handle_control_message: traceback: Traceback (most recent call last): File "/app/aiomoqt/protocol.py", line 407, in _moqt_handle_control_message msg = message_class.deserialize(buf, buf_end=end_pos) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/aiomoqt/messages/session_setup.py", line 48, in deserialize params = MOQTMessage._deserialize_params(buf, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/aiomoqt/messages/base.py", line 427, in _deserialize_params param_value = buf.pull_bytes(param_len) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "src/aiopquic/_binding/_buffer.pyx", line 204, in aiopquic._binding._buffer.Buffer.pull_bytes aiopquic._binding._buffer.BufferReadError: read out of bounds ERROR asyncio: Exception in callback _Dispatcher._drain() handle: Traceback (most recent call last): File "/usr/local/lib/python3.12/asyncio/events.py", line 88, in _run self._context.run(self._callback, *self._args) File "/usr/local/lib/python3.12/site-packages/aiopquic/asyncio/webtransport.py", line 440, in _drain session._on_event(ev) File "/app/aiomoqt/protocol.py", line 2340, in _on_event self.quic_event_received(_SD(stream_id=sid, data=data, File "/app/aiomoqt/protocol.py", line 997, in quic_event_received msg = self._moqt_handle_control_message(msg_buf) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/aiomoqt/protocol.py", line 407, in _moqt_handle_control_message msg = message_class.deserialize(buf, buf_end=end_pos) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/aiomoqt/messages/session_setup.py", line 48, in deserialize params = MOQTMessage._deserialize_params(buf, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/aiomoqt/messages/base.py", line 427, in _deserialize_params param_value = buf.pull_bytes(param_len) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "src/aiopquic/_binding/_buffer.pyx", line 204, in aiopquic._binding._buffer.Buffer.pull_bytes aiopquic._binding._buffer.BufferReadError: read out of bounds [FAIL] announce-subscribe: Failed: 2026-05-19 02:04:04.389 ERROR: handle_control_message: error handling control message: BufferReadError: BufferReadError('read out of bounds') 2026-05-19 02:04:04.390 ERROR: handle_control_message: traceback: Traceback (most recent call last): File "/app/aiomoqt/protocol.py", line 407, in _moqt_handle_control_message msg = message_class.deserialize(buf, buf_end=end_pos) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/aiomoqt/messages/session_setup.py", line 48, in deserialize params = MOQTMessage._deserialize_params(buf, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/aiomoqt/messages/base.py", line 427, in _deserialize_params param_value = buf.pull_bytes(param_len) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "src/aiopquic/_binding/_buffer.pyx", line 204, in aiopquic._binding._buffer.Buffer.pull_bytes aiopquic._binding._buffer.BufferReadError: read out of bounds ERROR asyncio: Exception in callback _Dispatcher._drain() handle: Traceback (most recent call last): File "/usr/local/lib/python3.12/asyncio/events.py", line 88, in _run self._context.run(self._callback, *self._args) File "/usr/local/lib/python3.12/site-packages/aiopquic/asyncio/webtransport.py", line 440, in _drain session._on_event(ev) File "/app/aiomoqt/protocol.py", line 2340, in _on_event self.quic_event_received(_SD(stream_id=sid, data=data, File "/app/aiomoqt/protocol.py", line 997, in quic_event_received msg = self._moqt_handle_control_message(msg_buf) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/aiomoqt/protocol.py", line 407, in _moqt_handle_control_message msg = message_class.deserialize(buf, buf_end=end_pos) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/aiomoqt/messages/session_setup.py", line 48, in deserialize params = MOQTMessage._deserialize_params(buf, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/aiomoqt/messages/base.py", line 427, in _deserialize_params param_value = buf.pull_bytes(param_len) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "src/aiopquic/_binding/_buffer.pyx", line 204, in aiopquic._binding._buffer.Buffer.pull_bytes aiopquic._binding._buffer.BufferReadError: read out of bounds [FAIL] subscribe-before-announce: Failed: Received a connection close request Received a connection close request Received a connection close request Received a connection close request Received a connection close request Received a connection close request TAP version 14 1..6 not ok 1 - setup-only --- duration_ms: 2003.0 message: Failed: expected: SERVER_SETUP received ... not ok 2 - announce-only --- duration_ms: 2003.3 message: Failed: expected: PUBLISH_NAMESPACE_OK ... not ok 3 - publish-namespace-done --- duration_ms: 2002.0 message: Failed: expected: PUBLISH_NAMESPACE_OK + PUBLISH_NAMESPACE_DONE ... not ok 4 - subscribe-error --- duration_ms: 2002.6 message: Failed: expected: error response ... not ok 5 - announce-subscribe --- duration_ms: 3003.5 publisher_connection_id: unknown subscriber_connection_id: unknown message: Failed: ... not ok 6 - subscribe-before-announce --- duration_ms: 3504.0 publisher_connection_id: unknown subscriber_connection_id: unknown message: Failed: ... make[1]: *** [Makefile:121: test-external] Error 1 make[1]: Leaving directory '/home/runner/work/moq-interop-runner/moq-interop-runner/main'