Package: src:python-snitun
Version: 0.45.1-1
Severity: serious
Tags: ftbfs forky sid

Dear maintainer:

During a rebuild of all packages in unstable, this package failed to build.

Below you will find the last part of the build log (probably the most
relevant part, but not necessarily). If required, the full build log
is available here:

https://people.debian.org/~sanvila/build-logs/202512/

About the archive rebuild: The build was made on virtual machines from AWS,
using sbuild and a reduced chroot with only build-essential packages.

If you cannot reproduce the bug please contact me privately, as I
am willing to provide ssh access to a virtual machine where the bug is
fully reproducible.

If this is really a bug in one of the build-depends, please use
reassign and add an affects on src:python-snitun, so that this is still
visible in the BTS web page for this package.

Thanks.

--------------------------------------------------------------------------------
[...]
 debian/rules clean
dh clean --buildsystem=pybuild
   dh_auto_clean -O--buildsystem=pybuild
   dh_autoreconf_clean -O--buildsystem=pybuild
   dh_clean -O--buildsystem=pybuild
 debian/rules binary
dh binary --buildsystem=pybuild
   dh_update_autotools_config -O--buildsystem=pybuild
   dh_autoreconf -O--buildsystem=pybuild
   dh_auto_configure -O--buildsystem=pybuild
   dh_auto_build -O--buildsystem=pybuild
I: pybuild plugin_pyproject:131: Building wheel for python3.14 with "build" 
module
I: pybuild base:317: python3.14 -m build --skip-dependency-check --no-isolation 
--wheel --outdir /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14  
* Building wheel...
/usr/lib/python3/dist-packages/setuptools/config/_apply_pyprojecttoml.py:82: 
SetuptoolsDeprecationWarning: `project.license` as a TOML table is deprecated

[... snipped ...]

---------------------------- Captured stderr setup -----------------------------
DEBUG:asyncio:Using selector: EpollSelector
------------------------------ Captured log setup ------------------------------
DEBUG    asyncio:selector_events.py:64 Using selector: EpollSelector
_____________________________ test_peer_connection _____________________________

test_server_sync = [<socket.socket fd=40, family=2, type=1, proto=0, 
laddr=('127.0.0.1', 8366), raddr=('127.0.0.1', 33178)>]
test_client_sync = <socket.socket fd=39, family=2, type=1, proto=0, 
laddr=('127.0.0.1', 33178), raddr=('127.0.0.1', 8366)>
event_loop = <_UnixSelectorEventLoop running=False closed=False debug=False>

    def test_peer_connection(
        test_server_sync: list[socket.socket],
        test_client_sync: socket.socket,
        event_loop: asyncio.AbstractEventLoop,
    ) -> None:
        """Run a full flow of with a peer."""
        worker = ServerWorker(FERNET_TOKENS)
        valid = datetime.now(tz=UTC) + timedelta(days=1)
        aes_key = os.urandom(32)
        aes_iv = os.urandom(16)
        hostname = "localhost"
        fernet_token = create_peer_config(valid.timestamp(), hostname, aes_key, 
aes_iv)
    
>       worker.start()

tests/server/test_worker.py:43: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib/python3.14/multiprocessing/process.py:121: in start
    self._popen = self._Popen(self)
                  ^^^^^^^^^^^^^^^^^
/usr/lib/python3.14/multiprocessing/context.py:224: in _Popen
    return _default_context.get_context().Process._Popen(process_obj)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3.14/multiprocessing/context.py:300: in _Popen
    return Popen(process_obj)
           ^^^^^^^^^^^^^^^^^^
/usr/lib/python3.14/multiprocessing/popen_forkserver.py:35: in __init__
    super().__init__(process_obj)
/usr/lib/python3.14/multiprocessing/popen_fork.py:20: in __init__
    self._launch(process_obj)
/usr/lib/python3.14/multiprocessing/popen_forkserver.py:47: in _launch
    reduction.dump(process_obj, buf)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

obj = <ServerWorker name='ServerWorker-33' parent=91 initial>
file = <_io.BytesIO object at 0x7f6c64f0e340>, protocol = None

    def dump(obj, file, protocol=None):
        '''Replacement for pickle.dump() using ForkingPickler.'''
>       ForkingPickler(file, protocol).dump(obj)
E       TypeError: cannot pickle 'weakref.ReferenceType' object
E       when serializing dict item '_weakref'
E       when serializing multiprocessing.util.Finalize state
E       when serializing multiprocessing.util.Finalize object
E       when serializing dict item 'finalizer'
E       when serializing multiprocessing.popen_forkserver.Popen state
E       when serializing multiprocessing.popen_forkserver.Popen object
E       when serializing dict item '_popen'
E       when serializing multiprocessing.context.ForkServerProcess state
E       when serializing multiprocessing.context.ForkServerProcess object
E       when serializing dict item '_process'
E       when serializing multiprocessing.managers.SyncManager state
E       when serializing multiprocessing.managers.SyncManager object
E       when serializing dict item '_manager'
E       when serializing snitun.server.worker.ServerWorker state
E       when serializing snitun.server.worker.ServerWorker object

/usr/lib/python3.14/multiprocessing/reduction.py:60: TypeError
---------------------------- Captured stderr setup -----------------------------
DEBUG:asyncio:Using selector: EpollSelector
------------------------------ Captured log setup ------------------------------
DEBUG    asyncio:selector_events.py:64 Using selector: EpollSelector
_______________________ test_peer_connection_disconnect ________________________

test_server_sync = [<socket.socket fd=28, family=2, type=1, proto=0, 
laddr=('127.0.0.1', 8366), raddr=('127.0.0.1', 33182)>]
test_client_sync = <socket.socket fd=24, family=2, type=1, proto=0, 
laddr=('127.0.0.1', 33182), raddr=('127.0.0.1', 8366)>
event_loop = <_UnixSelectorEventLoop running=False closed=False debug=False>

    def test_peer_connection_disconnect(
        test_server_sync: list[socket.socket],
        test_client_sync: socket.socket,
        event_loop: asyncio.AbstractEventLoop,
    ) -> None:
        """Run a full flow of with a peer & disconnect."""
        worker = ServerWorker(FERNET_TOKENS)
        valid = datetime.now(tz=UTC) + timedelta(days=1)
        aes_key = os.urandom(32)
        aes_iv = os.urandom(16)
        hostname = "localhost"
        fernet_token = create_peer_config(valid.timestamp(), hostname, aes_key, 
aes_iv)
    
>       worker.start()

tests/server/test_worker.py:74: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib/python3.14/multiprocessing/process.py:121: in start
    self._popen = self._Popen(self)
                  ^^^^^^^^^^^^^^^^^
/usr/lib/python3.14/multiprocessing/context.py:224: in _Popen
    return _default_context.get_context().Process._Popen(process_obj)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3.14/multiprocessing/context.py:300: in _Popen
    return Popen(process_obj)
           ^^^^^^^^^^^^^^^^^^
/usr/lib/python3.14/multiprocessing/popen_forkserver.py:35: in __init__
    super().__init__(process_obj)
/usr/lib/python3.14/multiprocessing/popen_fork.py:20: in __init__
    self._launch(process_obj)
/usr/lib/python3.14/multiprocessing/popen_forkserver.py:47: in _launch
    reduction.dump(process_obj, buf)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

obj = <ServerWorker name='ServerWorker-35' parent=91 initial>
file = <_io.BytesIO object at 0x7f6c64f0c630>, protocol = None

    def dump(obj, file, protocol=None):
        '''Replacement for pickle.dump() using ForkingPickler.'''
>       ForkingPickler(file, protocol).dump(obj)
E       TypeError: cannot pickle 'weakref.ReferenceType' object
E       when serializing dict item '_weakref'
E       when serializing multiprocessing.util.Finalize state
E       when serializing multiprocessing.util.Finalize object
E       when serializing dict item 'finalizer'
E       when serializing multiprocessing.popen_forkserver.Popen state
E       when serializing multiprocessing.popen_forkserver.Popen object
E       when serializing dict item '_popen'
E       when serializing multiprocessing.context.ForkServerProcess state
E       when serializing multiprocessing.context.ForkServerProcess object
E       when serializing dict item '_process'
E       when serializing multiprocessing.managers.SyncManager state
E       when serializing multiprocessing.managers.SyncManager object
E       when serializing dict item '_manager'
E       when serializing snitun.server.worker.ServerWorker state
E       when serializing snitun.server.worker.ServerWorker object

/usr/lib/python3.14/multiprocessing/reduction.py:60: TypeError
---------------------------- Captured stderr setup -----------------------------
DEBUG:asyncio:Using selector: EpollSelector
------------------------------ Captured log setup ------------------------------
DEBUG    asyncio:selector_events.py:64 Using selector: EpollSelector
_____________________________ test_sni_connection ______________________________

test_server_sync = [<socket.socket fd=30, family=2, type=1, proto=0, 
laddr=('127.0.0.1', 8366), raddr=('127.0.0.1', 33192)>, <socket.socket fd=33, 
family=2, type=1, proto=0, laddr=('127.0.0.1', 8366), raddr=('127.0.0.1', 
33206)>]
test_client_sync = <socket.socket fd=24, family=2, type=1, proto=0, 
laddr=('127.0.0.1', 33192), raddr=('127.0.0.1', 8366)>
test_client_ssl_sync = <socket.socket fd=29, family=2, type=1, proto=0, 
laddr=('127.0.0.1', 33206), raddr=('127.0.0.1', 8366)>
event_loop = <_UnixSelectorEventLoop running=False closed=False debug=False>

    def test_sni_connection(
        test_server_sync: list[socket.socket],
        test_client_sync: socket.socket,
        test_client_ssl_sync: socket.socket,
        event_loop: asyncio.AbstractEventLoop,
    ) -> None:
        """Run a full flow of with a peer."""
        worker = ServerWorker(FERNET_TOKENS)
        valid = datetime.now(tz=UTC) + timedelta(days=1)
        aes_key = os.urandom(32)
        aes_iv = os.urandom(16)
        hostname = "localhost"
        alias = ["localhost.custom"]
        fernet_token = create_peer_config(
            valid.timestamp(),
            hostname,
            aes_key,
            aes_iv,
            alias=alias,
        )
    
>       worker.start()

tests/server/test_worker.py:116: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib/python3.14/multiprocessing/process.py:121: in start
    self._popen = self._Popen(self)
                  ^^^^^^^^^^^^^^^^^
/usr/lib/python3.14/multiprocessing/context.py:224: in _Popen
    return _default_context.get_context().Process._Popen(process_obj)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3.14/multiprocessing/context.py:300: in _Popen
    return Popen(process_obj)
           ^^^^^^^^^^^^^^^^^^
/usr/lib/python3.14/multiprocessing/popen_forkserver.py:35: in __init__
    super().__init__(process_obj)
/usr/lib/python3.14/multiprocessing/popen_fork.py:20: in __init__
    self._launch(process_obj)
/usr/lib/python3.14/multiprocessing/popen_forkserver.py:47: in _launch
    reduction.dump(process_obj, buf)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

obj = <ServerWorker name='ServerWorker-37' parent=91 initial>
file = <_io.BytesIO object at 0x7f6c64f0cd60>, protocol = None

    def dump(obj, file, protocol=None):
        '''Replacement for pickle.dump() using ForkingPickler.'''
>       ForkingPickler(file, protocol).dump(obj)
E       TypeError: cannot pickle 'weakref.ReferenceType' object
E       when serializing dict item '_weakref'
E       when serializing multiprocessing.util.Finalize state
E       when serializing multiprocessing.util.Finalize object
E       when serializing dict item 'finalizer'
E       when serializing multiprocessing.popen_forkserver.Popen state
E       when serializing multiprocessing.popen_forkserver.Popen object
E       when serializing dict item '_popen'
E       when serializing multiprocessing.context.ForkServerProcess state
E       when serializing multiprocessing.context.ForkServerProcess object
E       when serializing dict item '_process'
E       when serializing multiprocessing.managers.SyncManager state
E       when serializing multiprocessing.managers.SyncManager object
E       when serializing dict item '_manager'
E       when serializing snitun.server.worker.ServerWorker state
E       when serializing snitun.server.worker.ServerWorker object

/usr/lib/python3.14/multiprocessing/reduction.py:60: TypeError
---------------------------- Captured stderr setup -----------------------------
DEBUG:asyncio:Using selector: EpollSelector
------------------------------ Captured log setup ------------------------------
DEBUG    asyncio:selector_events.py:64 Using selector: EpollSelector
=========================== short test summary info ============================
FAILED tests/server/test_run.py::test_snitun_worker_runner_updown - TypeError...
FAILED tests/server/test_run.py::test_snitun_worker_runner[payloads0] - TypeE...
FAILED tests/server/test_run.py::test_snitun_worker_runner[payloads1] - TypeE...
FAILED tests/server/test_run.py::test_snitun_worker_runner[payloads2] - TypeE...
FAILED tests/server/test_run.py::test_snitun_worker_runner[payloads3] - TypeE...
FAILED tests/server/test_run.py::test_snitun_worker_timeout - TypeError: cann...
FAILED tests/server/test_run.py::test_snitun_worker_runner_invalid_payload - ...
FAILED tests/server/test_run.py::test_snitun_worker_crash - TypeError: cannot...
FAILED tests/server/test_worker.py::test_worker_up_down - TypeError: cannot p...
FAILED tests/server/test_worker.py::test_peer_connection - TypeError: cannot ...
FAILED tests/server/test_worker.py::test_peer_connection_disconnect - TypeErr...
FAILED tests/server/test_worker.py::test_sni_connection - TypeError: cannot p...
======================= 12 failed, 169 passed in 19.07s ========================
E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.14/build; python3.14 -m pytest 
--ignore=tests/benchmarks
I: pybuild base:317: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build; 
python3.13 -m pytest --ignore=tests/benchmarks
============================= test session starts ==============================
platform linux -- Python 3.13.11, pytest-9.0.2, pluggy-1.6.0
rootdir: /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build
configfile: pyproject.toml
plugins: aiohttp-1.1.0, timeout-2.4.0, asyncio-1.2.0, typeguard-4.4.4
asyncio: mode=Mode.AUTO, debug=False, asyncio_default_fixture_loop_scope=None, 
asyncio_default_test_loop_scope=function
collected 181 items

tests/client/test_client_peer.py ............                            [  6%]
tests/client/test_connector.py .........                                 [ 11%]
tests/metrics/test_auth_metrics.py ....                                  [ 13%]
tests/metrics/test_factory.py .                                          [ 14%]
tests/metrics/test_noop.py ..                                            [ 15%]
tests/metrics/test_worker_integration.py .......                         [ 19%]
tests/multiplexer/test_channel.py ...............                        [ 27%]
tests/multiplexer/test_const.py .                                        [ 28%]
tests/multiplexer/test_core.py .........................                 [ 41%]
tests/multiplexer/test_crypto.py .                                       [ 42%]
tests/multiplexer/test_message.py ...                                    [ 44%]
tests/multiplexer/test_queue.py .......................                  [ 56%]
tests/server/test_all.py .                                               [ 57%]
tests/server/test_listener_peer.py ......                                [ 60%]
tests/server/test_listener_sni.py ............                           [ 67%]
tests/server/test_peer.py ......                                         [ 70%]
tests/server/test_peer_manager.py ..........                             [ 76%]
tests/server/test_run.py ..............                                  [ 83%]
tests/server/test_sni.py ..........                                      [ 89%]
tests/server/test_worker.py ....                                         [ 91%]
tests/utils/test_aes.py ..                                               [ 92%]
tests/utils/test_aiohttp_client.py ...                                   [ 94%]
tests/utils/test_asyncio.py ......                                       [ 97%]
tests/utils/test_ipaddress.py ..                                         [ 98%]
tests/utils/test_server.py ..                                            [100%]

=============================== warnings summary ===============================
tests/server/test_run.py: 24 warnings
tests/server/test_worker.py: 8 warnings
  /usr/lib/python3.13/multiprocessing/popen_fork.py:67: DeprecationWarning: 
This process (pid=344) is multi-threaded, use of fork() may lead to deadlocks 
in the child.
    self.pid = os.fork()

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
====================== 181 passed, 32 warnings in 41.54s =======================
dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.14 
3.13" returned exit code 13
make: *** [debian/rules:5: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
--------------------------------------------------------------------------------

Reply via email to