Note that autopkg tests for ufw test various aspects of normal ufw usage, including ufw enable. I also performed the testing for this issue on focal:
$ apt-cache policy ufw ufw: Installed: 0.36-6ubuntu1 Candidate: 0.36-6ubuntu1 Version table: *** 0.36-6ubuntu1 500 500 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages 100 /var/lib/dpkg/status 0.36-6 500 500 http://archive.ubuntu.com/ubuntu focal/main amd64 Packages # recreate the WSL2 scenario by having the parent shell contain 'Relay(NNN)'. # This could be done various ways, but the easiest is to create a script named # /tmp/Relay(230) to launch ufw: $ cat <<EOM > "/tmp/Relay(230)" #!/bin/bash sudo ufw enable EOM $ chmod 755 "/tmp/Relay(230)" # before the update $ "/tmp/Relay(230)" Traceback (most recent call last): File "/usr/lib/python3/dist-packages/ufw/util.py", line 444, in under_ssh ppid = get_ppid(pid) File "/usr/lib/python3/dist-packages/ufw/util.py", line 434, in get_ppid ppid = open(name).readlines()[0].split(')')[1].split()[1] IndexError: list index out of range During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/sbin/ufw", line 138, in <module> not ui.continue_under_ssh(): File "/usr/lib/python3/dist-packages/ufw/frontend.py", line 900, in continue_under_ssh if self.backend.do_checks and ufw.util.under_ssh(): # pragma: no cover File "/usr/lib/python3/dist-packages/ufw/util.py", line 474, in under_ssh return under_ssh(ppid) File "/usr/lib/python3/dist-packages/ufw/util.py", line 474, in under_ssh return under_ssh(ppid) File "/usr/lib/python3/dist-packages/ufw/util.py", line 451, in under_ssh raise ValueError(err_msg) ValueError: Couldn't find parent pid for '1782' # after the update $ cat <<EOF | sudo tee /etc/apt/sources.list.d/ubuntu-$(lsb_release -cs)-proposed.list # Enable Ubuntu proposed archive deb http://archive.ubuntu.com/ubuntu/ $(lsb_release -cs)-proposed restricted main multiverse universe EOF # Enable Ubuntu proposed archive deb http://archive.ubuntu.com/ubuntu/ focal-proposed restricted main multiverse universe $ sudo apt-get update && sudo apt-get install ufw/focal-proposed ... Setting up ufw (0.36-6ubuntu1.1) ... # it now doesn't traceback $ "/tmp/Relay(230)" Command may disrupt existing ssh connections. Proceed with operation ( ** Tags removed: verification-needed verification-needed-focal verification-needed-jammy ** Tags added: verification-done verification-done-focal verification-done-jammy -- You received this bug notification because you are a member of Ubuntu Touch seeded packages, which is subscribed to ufw in Ubuntu. https://bugs.launchpad.net/bugs/2015645 Title: ufw crashes in wsl2 Status in ufw: Fix Released Status in ufw package in Ubuntu: Fix Released Status in ufw source package in Focal: Fix Committed Status in ufw source package in Jammy: Fix Committed Status in ufw source package in Lunar: Fix Committed Status in ufw source package in Mantic: Fix Released Bug description: [ Impact ] Currently, ufw is unusable on WSL due to this bug because the get_ppid() function traces back on /proc when the command name has parentheses (like in WSL). get_ppid() is called with 'ufw enable' and so ufw is not able to be enabled on WSL. The upstream patch adjusts get_ppid() for this and adds unit tests for this function. [ Test Plan ] Call 'sudo ufw enable' (it should not trace back) and call 'sudo ufw status' to show that it was enabled. Importantly, this is called as part of autopkgtests already. Furthermore, look in the build logs for: test_util ... test_get_ppid (tests.unit.test_util.UtilTestCase) Test get_ppid() ... ok test_get_ppid_no_space (tests.unit.test_util.UtilTestCase) Test get_ppid() no space ... ok test_get_ppid_with_parens (tests.unit.test_util.UtilTestCase) Test get_ppid() with parens ... ok test_get_ppid_with_space (tests.unit.test_util.UtilTestCase) Test get_ppid() with space ... ok ... ---------------------------------------------------------------------- Ran 49 tests in 0.355s OK [ Where problems could occur ] The risk of regression is considered low since comprehensive unit tests are added for the patched function. Not only is this change in upstream ufw 0.36.2, it is already in Debian Bookworm and Ubuntu Mantic as part of 0.36.2-1. # Original Description When I enable systemd in WSL2 (it became supported recently), install ufw, and run sudo ufw enable, I get the error detailed in https://superuser.com/questions/1775776/enabling-ufw-failed-with- ubuntu-from-wsl2. You may already be aware of this error, I'm not sure if "NotTheDr01ds" has talked to you about this yet. Note that the WSL2 /proc/[pid]/stat format, although weird, does comply with the spec: https://man7.org/linux/man-pages/man5/proc.5.html I verified that you can fix this issue by replacing the first split in line 427 with rsplit(')', 1) so it splits based on the last parenthesis instead of the all parenthesis. Before: ppid = open(name).readlines()[0].split(')')[1].split()[1] After: ppid = open(name).readlines()[0].rsplit(')',1)[1].split()[1] C:\Users\caleb>wsl --version WSL version: 1.1.6.0 Kernel version: 5.15.90.1 WSLg version: 1.0.50 MSRDC version: 1.2.3770 Direct3D version: 1.608.2-61064218 DXCore version: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp Windows version: 10.0.19045.2728 ➜ ufw git:(master) ufw --version ufw 0.36 Copyright 2008-2015 Canonical Ltd. ➜ ufw git:(master) cat /proc/229/stat | cut -c -23 229 (Relay(230)) S 228 To manage notifications about this bug go to: https://bugs.launchpad.net/ufw/+bug/2015645/+subscriptions -- Mailing list: https://launchpad.net/~touch-packages Post to : touch-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp