This bug was fixed in the package network-manager - 1.46.0-1ubuntu2.2 --------------- network-manager (1.46.0-1ubuntu2.2) noble; urgency=medium
* d/control: Avoid calling into half-upgraded Netplan (LP: #2033259) NM calls 'netplan generate', which will crash if new libnetplan1 is already installed, but we're calling the old netplan.io Python code expecting the old libnetplan0 API. network-manager (1.46.0-1ubuntu2.1) noble; urgency=medium * d/p/wifi-fix-the-ranges-of-5-GHz-and-6-GHz-bands.patch d/p/wifi-fix-enumeration-of-6-GHz-channels-from-wiphy.patch - Fix detection of 6 GHz band capability for WiFi devices (LP: #2084731) -- Lukas Märdian <sl...@ubuntu.com> Wed, 23 Oct 2024 13:04:42 +0200 ** Changed in: network-manager (Ubuntu Noble) Status: Fix Committed => Fix Released -- You received this bug notification because you are a member of Ubuntu Touch seeded packages, which is subscribed to network-manager in Ubuntu. https://bugs.launchpad.net/bugs/2033259 Title: [SRU] NetworkManager triggers a call from (old) Netplan Python CLI into (old) libnetplan0 that got replaced by (new) libnetplan1 on dist- upgrade Status in netplan.io package in Ubuntu: Won't Fix Status in network-manager package in Ubuntu: Fix Released Status in netplan.io source package in Jammy: New Status in network-manager source package in Jammy: Invalid Status in netplan.io source package in Noble: Won't Fix Status in network-manager source package in Noble: Fix Released Status in netplan.io source package in Oracular: Won't Fix Status in network-manager source package in Oracular: Fix Released Bug description: [ Impact ] * Context: Running a dist-upgrade from Jammy to Noble. * Starting with Noble (Mantic actually), NetworkManager integrates with Netplan as a backend and calls 'netplan generate' at different stages, e.g. when migrating old /etc/NetworkManager/sytem-connections/ profiles to /etc/netplan/ on package upgrade. * NetworkManager depends on Netplan >= 0.106 only, but there was a major SOVER/ABI bump of libnetplan, starting with Netplan v1.0. The new build-dependency on libnetplan1 >= 1.0 is automatically picked up, but the runtime dependency on the Netplan CLI (netplan.io binary) is not. * Therefore, we can end up in a situation where the old netplan.io Python CLI is still installed during dist-upgrade and tries to call into the new libnetplan1, which is incompatible. * Furthermore, python3-netplan ships a python3.10 specific _netplan_cffi.cpython-310-x86_64-linux-gnu.so binary module, while python3-netplan on Noble++ ships a universal _netplan_cffi.abi3.so binary module. The old one can lead to issues when python3 is already upgraded. * Incompatible versions of Netplan CLI, Netplan Python bindings and libnetplan can lead to crashes of the Netplan CLI, like this: AttributeError: /lib/x86_64-linux-gnu/libnetplan.so.1: undefined symbol: netplan_get_id_from_nm_filename * Such crash doesn't always happen, as it depends on the ordering of package upgrades during dist-upgrade. It will recover itself after the dist-upgrade is complete and all components are at their expected versions again. So side-effects are rather small, but it can lead to blocking of phased-updates for Netplan, which we'd like to avoid (LP: #2058031). * We want to make sure NetworkManager pulls in the latest libnetplan1, netplan.io and python3-netplan packages on dist-upgrade, to avoid such issues. Therefore declaring corresponding dependencies on the network-manager binary package in debian/control. Such changes are not needed on series after Noble, as recent Netplan is much more resilient against such issues, using a python stable API binary module (_netplan_cffi.abi3.so), using dh-python & ${python3:Depends} substvars, and providing a stable libnetplan1 library. [ Test Plan ] $ lxc launch ubuntu-daily:jammy jj-nm-np $ lxc shell jj-nm-np # Verify old version of Netplan (< 1.0) root@jj-nm-np:~# dpkg -l | grep netplan ii libnetplan0:amd64 0.106.1-7ubuntu0.22.04.4 amd64 YAML network configuration abstraction runtime library ii netplan.io 0.106.1-7ubuntu0.22.04.4 amd64 YAML network configuration abstraction for various backends root@jj-nm-np:~# sed -i 's/jammy/noble/g' /etc/apt/sources.list root@jj-nm-np:~# apt update root@jj-nm-np:~# apt install network-manager => Make sure libnetplan1 >= 1.0, netplan.io >= 1.0 and python3-netplan >= 1.0 are installed and the Netplan CLI does not crash, e.g.: root@jj-nm-np:~# dpkg -l | grep netplan ii libnetplan0:amd64 0.106.1-7ubuntu0.22.04.4 amd64 YAML network configuration abstraction runtime library ii libnetplan1:amd64 1.0.1-1ubuntu2~24.04.1 amd64 Declarative network configuration runtime library ii netplan-generator 1.0.1-1ubuntu2~24.04.1 amd64 Declarative network configuration systemd-generator ii netplan.io 1.0.1-1ubuntu2~24.04.1 amd64 Declarative network configuration for various backends ii python3-netplan 1.0.1-1ubuntu2~24.04.1 amd64 Declarative network configuration Python bindings root@jj-nm-np:~# netplan generate root@jj-nm-np:~# echo $? 0 On a broken system, it looks like this: root@jj-nm-np:~# dpkg -l | grep netplan.io ii netplan.io 0.106.1-7ubuntu0.22.04.4 amd64 YAML network configuration abstraction for various backends root@jj-nm-np:~# dpkg -l | grep netplan ii libnetplan0:amd64 0.106.1-7ubuntu0.22.04.4 amd64 YAML network configuration abstraction runtime library ii libnetplan1:amd64 1.0.1-1ubuntu2~24.04.1 amd64 Declarative network configuration runtime library ii netplan.io 0.106.1-7ubuntu0.22.04.4 amd64 YAML network configuration abstraction for various backends root@jj-nm-np:~# netplan generate Traceback (most recent call last): File "/usr/sbin/netplan", line 20, in <module> from netplan import Netplan File "/usr/share/netplan/netplan/__init__.py", line 18, in <module> from netplan.cli.core import Netplan File "/usr/share/netplan/netplan/cli/core.py", line 24, in <module> import netplan.cli.utils as utils File "/usr/share/netplan/netplan/cli/utils.py", line 27, in <module> import netplan.libnetplan as np File "/usr/share/netplan/netplan/libnetplan.py", line 54, in <module> lib.netplan_get_id_from_nm_filename.restype = ctypes.c_char_p ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/ctypes/__init__.py", line 392, in __getattr__ func = self.__getitem__(name) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/ctypes/__init__.py", line 397, in __getitem__ func = self._FuncPtr((name_or_ordinal, self)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AttributeError: /lib/x86_64-linux-gnu/libnetplan.so.1: undefined symbol: netplan_get_id_from_nm_filename [ Test Plan 2 ] * In addition to the specific test plan above, we want to run a full dist-upgrade of an Ubuntu Jammy Desktop VM to a Ubuntu Noble system (noble-proposed, to test the actual SRU candidate package). Making sure the upgrade still passes. [ Where problems could occur ] * We're modifying the runtime dependencies of NetworkManager, making it more strict wrt. the Netplan system packages. This will lead to different dependency resolving during apt dist-upgrade and could lead to unresolvable dependency loops. We introduced "Test Plan 2" above to check for that. [ Other Info ] * The dependency on python3-netplan >= 1.0 isn't there in Oracular+ (only netplan.io >= 1.0). It's not needed, because the effects will only surface on dist-upgrade from libnetplan0 to libnetplan1 and libnetplan0 doesn't exist anymore as of Noble (Netplan 1.0). === Original bug report === ubuntu desktop (mantic) live test on dell optiplex 780 - dell [optiplex] 780 (c2q-q9400, 8gb, amd/ati cedar radeon hd 5000/6000/7350/8350) exploring the /var/crash/ directory I noticed this report; nothing had appeared on screen, so just filed it with `ubuntu-bug`. ProblemType: Crash DistroRelease: Ubuntu 23.10 Package: netplan.io 0.106.1-8 Uname: Linux 6.3.0-7-generic x86_64 Architecture: amd64 Date: Mon Aug 28 08:12:32 2023 ExecutablePath: /usr/share/netplan/netplan.script ExecutableTimestamp: 1684343476 InterpreterPath: /usr/bin/python3.11 ProcCmdline: /usr/bin/python3 /usr/sbin/netplan generate ProcCwd: / ProcEnviron: LANG=en_US.UTF-8 PATH=(custom, no user) PythonArgs: ['/usr/sbin/netplan', 'generate'] SourcePackage: netplan.io UserGroups: N/A To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/netplan.io/+bug/2033259/+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