[Bug 2105510] Re: network page broken following libnl changes
Olivier Gayot
2105510 at bugs.launchpad.net
Tue Apr 1 09:07:58 UTC 2025
For testing, I used kvm-test:
$ scripts/kvm-test.py --install --iso /srv/iso/plucky-live-server-
amd64.iso --recreate-target --nic user,model=virtio-net-
pci,hostfwd=tcp::2222-:22,net=10.0.2.0/24 --nic user,model=virtio-net-
pci,net=10.0.3.0/24
I am requesting two network interfaces because I want the ability to
play around with one of the interfaces (i.e., ens4) using Subiquity -
while preserving my SSH connection (which goes through the other
interface, ens3).
Unfortunately, when running into the segmentation fault, both interfaces
are left without IP settings applied. So this will still break the SSH
connection.
steps to reproduce the Link object mismatch between probert and subiquity
-------------------------------------------------------------------------
* navigate to the network settings
* switch IPv4 from "DHCPv4" to "Disabled" and wait until the change is applied
* switch IPv4 from "Disabled" to "DHCPv4"
You should see the animation for DHCP but the address will never become
visible. Opening the "Info" menu for ens4 will show: addresses: [] at
the top. That said, if you press F2 then `ip -4 addr`, you will see an
address for ens4.
Also, if you run
$ grep 'link_change: NEW' /var/log/installer/subiquity-server-debug.log
you will see an entry with the following info: {'name': b'ens4',
'family': 10}. This is what caused the mismatch.
steps to reproduce the crash (segmentation fault)
-------------------------------------------------
1. navigate to the network settings
2. switch IPv4 from "DHCPv4" to "Disabled" and wait until the change is applied
3. switch IPv4 from "Disabled" to "DHCPv4" and wait until the change is applied
4. repeat steps 2 and 3 a few times (but not too fast - there are UI crashes too)
Indicators that subiquity might have crashed:
* The "Applying changes \" animation does not disappear.
* Hints in the journal:
ubuntu-server kernel: python3.12[1392]: segfault at 0 ip 0000000000000000000 [...]
ubuntu-server kernel: Code: Unable to access opcode bytes at 0xffffffffffffffd6
ubuntu-server subiquity.subiquity-server[1372]: Segmentation fault (core dumped)
* The SSH connection dropped
* Running `ip -4 addr' shows no IP except for the loopback interface.
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to subiquity in Ubuntu.
https://bugs.launchpad.net/bugs/2105510
Title:
network page broken following libnl changes
Status in subiquity:
New
Status in probert package in Ubuntu:
In Progress
Status in subiquity package in Ubuntu:
New
Bug description:
The move from core22 to core24 broke the network TUI screen in two
ways:
* After moving from "disabled" to DHCP, the IP will not be visible once the lease has been acquired. This is because of a mismatch between Subiquity's Link instance and the one that probert knows about.
* A segmentation fault (sometimes) of Subiquity when setting an interface as up/down. This is because we try to set flags on the wrong rtnl_link object.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x0000000000000000 in ?? ()
[Current thread is 1 (LWP 2135)]
(gdb) bt
#0 0x0000000000000000 in ?? ()
#1 0x00007db7d4d22652 in rtnl_link_build_change_request ()
from /snap/core24/current/lib/x86_64-linux-gnu/libnl-route-3.so.200
#2 0x00007db7d4d22768 in rtnl_link_change () from /snap/core24/current/lib/x86_64-linux-gnu/libnl-route-3.so.200
#3 0x00007db7d4d7cb36 in listener_unset_link_flags (self=<optimized out>, args=<optimized out>, kw=<optimized out>)
at probert/_rtnetlinkmodule.c:461
#4 0x0000000000551598 in ?? ()
#5 0x0000000000549b85 in PyObject_Vectorcall ()
#6 0x00000000005d73c9 in _PyEval_EvalFrameDefault ()
#7 0x000000000066c229 in ?? ()
#8 0x00007db7d7a69d44 in ?? ()
from /snap/subiquity/6519/usr/lib/python3.12/lib-dynload/_asyncio.cpython-312-x86_64-linux-gnu.so
#9 0x00007db7d7a69c56 in ?? ()
from /snap/subiquity/6519/usr/lib/python3.12/lib-dynload/_asyncio.cpython-312-x86_64-linux-gnu.so
#10 0x0000000000581fa2 in ?? ()
#11 0x00000000006a48d3 in ?? ()
#12 0x0000000000581f0d in ?? ()
#13 0x00000000005db55b in _PyEval_EvalFrameDefault ()
#14 0x00000000005d58eb in PyEval_EvalCode ()
#15 0x00000000005d347c in ?? ()
#16 0x0000000000581f0d in ?? ()
#17 0x0000000000549b85 in PyObject_Vectorcall ()
#18 0x00000000005d73c9 in _PyEval_EvalFrameDefault ()
#19 0x00000000006bcce2 in ?? ()
#20 0x00000000006bc912 in Py_RunMain ()
#21 0x00000000006bc57d in Py_BytesMain ()
#22 0x00007db7d87671ca in ?? () from /snap/core24/current/lib/x86_64-linux-gnu/libc.so.6
#23 0x00007db7d876728b in __libc_start_main () from /snap/core24/current/lib/x86_64-linux-gnu/libc.so.6
#24 0x0000000000657ce5 in _start ()
After running a bisect, I found that the following change in libnl was
what triggered both regressions in Subiquity:
https://github.com/thom311/libnl/pull/264
To manage notifications about this bug go to:
https://bugs.launchpad.net/subiquity/+bug/2105510/+subscriptions
More information about the foundations-bugs
mailing list