Skip to content

chroot environment is broken #241

Description

@M0les

Environment: Fedora43 x86_64 KVM, packaged Python v3.14.4, using packaged v0.8 and upstream v0.9 of WSDD.

Precis: The --chroot environment causes unhandled asyncio exceptions relating to UTF-8 writing. The chroot jail needs "some more python library stuff" (not sure specifically what) in it to work. Without the chroot environment, the script runs as expected. With chroot, the process keeps running, but is nonfunctional due to the broken aio system.

Stack trace:

# ./src/wsdd.py --chroot /run/wsdd 
2026-04-29 11:56:01,195:wsdd WARNING(pid 4422): no interface given, using all interfaces
2026-04-29 11:56:01,196:wsdd WARNING(pid 4422): chrooted but running as root, consider -u option
2026-04-29 11:56:01,197:asyncio ERROR(pid 4422): Exception in callback NetlinkAddressMonitor.handle_change()
handle: <Handle NetlinkAddressMonitor.handle_change()>
Traceback (most recent call last):
  File "/usr/lib64/python3.14/asyncio/events.py", line 94, in _run
  File "/home/cloud-user/git/wsdd/./src/wsdd.py", line 1600, in handle_change
  File "/home/cloud-user/git/wsdd/./src/wsdd.py", line 1359, in handle_new_address
  File "/home/cloud-user/git/wsdd/./src/wsdd.py", line 931, in __init__
  File "/home/cloud-user/git/wsdd/./src/wsdd.py", line 954, in send_hello
  File "/home/cloud-user/git/wsdd/./src/wsdd.py", line 467, in build_message
  File "/home/cloud-user/git/wsdd/./src/wsdd.py", line 583, in xml_to_str
  File "/usr/lib64/python3.14/xml/etree/ElementTree.py", line 1094, in tostring
  File "/usr/lib64/python3.14/xml/etree/ElementTree.py", line 727, in write
  File "/usr/lib64/python3.14/contextlib.py", line 141, in __enter__
  File "/usr/lib64/python3.14/xml/etree/ElementTree.py", line 790, in _get_writer
LookupError: unknown encoding: utf-8

When the process is terminated, it gets the same exception again inside the sigterm exception handler as well.

POC workaround:
If I copy /usr/lib64/python3.14 into /run/wsdd/usr/lib64/python3.14, it works as intended - but that's pretty fragile and environment-specific. The simpler approach is to run it without the chroot.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingduplicateThis issue or pull request already exists

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions