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     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to