[SRU] resolvconf is racy, which leads to broken resolv.conf in parallel calls
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
resolvconf (Ubuntu) |
Fix Released
|
Critical
|
Unassigned | ||
Xenial |
Fix Released
|
Critical
|
Unassigned |
Bug Description
[Impact]
The bug can lead to non-working DNS. This is a critical bug that needs to be fixed in the stable release.
The patch fixes the bug by using a file lock via the flock command.
[Test case]
This script should eventually stop with the current version, thing that should not happen after applying the patch:
while true; do
printf "\n" | sudo resolvconf -a NetworkManager
printf "nameserver 8.8.8.8\n" | sudo resolvconf -a networkd
wait
printf "nameserver 8.8.8.8\n" |
sudo resolvconf -a NetworkManager &
printf "\n" | sudo resolvconf -a networkd
wait
ping -c 1 www.google.com || break
done
[Regression Potential]
The patch is small and what it does is straightforward. It has also been thoroughly tested. However, the effect if something is wrong would be not being able to resolve DNS names, which is disastrous, so it needs to be very well tested for the SRU.
[Other Info]
It has been found that simultaneous calls to resolvconf can lead to inconsistent content in resolv.conf. For instance, no nameservers while NetworkManager has one in its record (see LP: #1824395):
$ cat /run/resolvconf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
$ cat /run/resolvconf
nameserver 192.168.1.6
nameserver 192.168.1.2
This can happen easily when calling "netplan apply", which can re-start both networkd and NM. resolvconf is called at that point by the "systemd-
$ printf "\n" | sudo resolvconf -a NetworkManager & printf "\n" | sudo resolvconf -a networkd
$ printf "nameserver 80.58.61.250\n" | sudo resolvconf -a NetworkManager & printf "\n" | sudo resolvconf -a networkd
Eventually, this leads to a resolv.conf that is not consistent with the last run command.
description: | updated |
tags: | added: disco |
tags: | added: rls-ee-incoming |
Changed in resolvconf (Ubuntu): | |
importance: | Undecided → Critical |
Changed in resolvconf (Ubuntu Xenial): | |
importance: | Undecided → Critical |
The attachment "debdiff.patch" seems to be a debdiff. The ubuntu-sponsors team has been subscribed to the bug report so that they can review and hopefully sponsor the debdiff. If the attachment isn't a patch, please remove the "patch" flag from the attachment, remove the "patch" tag, and if you are member of the ~ubuntu-sponsors, unsubscribe the team.
[This is an automated message performed by a Launchpad user owned by ~brian-murray, for any issue please contact him.]