For lunar, the crmsh autopkgtest issue was unrelated. I reran the autopkgtest
and it passed:
https://autopkgtest.ubuntu.com/results/autopkgtest-lunar/lunar/s390x/c/crmsh/20230725_140910_37cd9@/log.gz
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 lunar:
$ apt-cache policy ufw
ufw:
Installed: 0.36.1-4.1
Candidate: 0.36.1-4.1
Version table:
*** 0.36.1-4.1 500
500 http://archive.ubuntu.com/ubuntu lunar/main amd64 Packages
100 /var/lib/dpkg/status
# 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 427, in under_ssh
ppid = get_ppid(pid)
^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/ufw/util.py", line 419, 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 901, 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 457, in under_ssh
return under_ssh(ppid)
^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/ufw/util.py", line 457, in under_ssh
return under_ssh(ppid)
^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/ufw/util.py", line 457, in under_ssh
return under_ssh(ppid)
^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/ufw/util.py", line 434, in under_ssh
raise ValueError(err_msg)
ValueError: Couldn't find parent pid for '4496'
# 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/ lunar-proposed restricted main multiverse
universe
$ sudo apt-get update && sudo apt-get install ufw/lunar-proposed
...
Setting up ufw (0.36.1-4.1ubuntu0.1) ...
# it now doesn't traceback
$ "/tmp/Relay(230)"
Command may disrupt existing ssh connections. Proceed with operation (y|n)? n
$
** Tags removed: verification-needed-lunar
** Tags added: verification-done-lunar
--
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 : [email protected]
Unsubscribe : https://launchpad.net/~touch-packages
More help : https://help.launchpad.net/ListHelp