Verifying that the bug is fixed.
First, reproducing the bug. After firing up the container, while
running "apt install squid dnsmasq -y", I see:
# apt install squid dnsmasq -y
...
Setting up dnsmasq (2.75-1ubuntu0.16.04.5) ...
Job for dnsmasq.service failed because a timeout was exceeded. See "systemctl
status dnsmasq.service" and "journalctl -xe" for details.
invoke-rc.d: initscript dnsmasq, action "start" failed.
● dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server
Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled; vendor preset:
enabled)
Drop-In: /run/systemd/generator/dnsmasq.service.d
└─50-dnsmasq-$named.conf, 50-insserv.conf-$named.conf
Active: failed (Result: timeout) since Wed 2020-09-16 15:43:01 UTC; 11ms ago
Process: 1565 ExecStartPost=/etc/init.d/dnsmasq systemd-start-resolvconf
(code=killed, signal=TERM)
Process: 1554 ExecStart=/etc/init.d/dnsmasq systemd-exec (code=exited,
status=0/SUCCESS)
Process: 1553 ExecStartPre=/usr/sbin/dnsmasq --test (code=exited,
status=0/SUCCESS)
Main PID: 1564 (code=exited, status=0/SUCCESS)
Sep 16 15:41:31 squid-bug1761096 dnsmasq[1564]: started, version 2.75 cachesize
150
Sep 16 15:41:31 squid-bug1761096 dnsmasq[1564]: compile time options: IPv6
GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth DNSSEC
loop-detect inotify
Sep 16 15:41:31 squid-bug1761096 dnsmasq[1564]: DNS service limited to local
subnets
Sep 16 15:41:31 squid-bug1761096 dnsmasq[1564]: read /etc/hosts - 7 addresses
Sep 16 15:41:31 squid-bug1761096 dnsmasq[1564]: reading
/var/run/dnsmasq/resolv.conf
Sep 16 15:41:31 squid-bug1761096 dnsmasq[1564]: using nameserver 10.101.133.1#53
Sep 16 15:43:01 squid-bug1761096 systemd[1]: dnsmasq.service: Start-post
operation timed out. Stopping.
Sep 16 15:43:01 squid-bug1761096 systemd[1]: Failed to start dnsmasq - A
lightweight DHCP and caching DNS server.
Sep 16 15:43:01 squid-bug1761096 systemd[1]: dnsmasq.service: Unit entered
failed state.
Sep 16 15:43:01 squid-bug1761096 systemd[1]: dnsmasq.service: Failed with
result 'timeout'.
...
We also see the bug happening while restarting the dnsmasq.service:
# systemctl restart dnsmasq.service
Job for dnsmasq.service failed because a timeout was exceeded. See "systemctl
status dnsmasq.service" and "journalctl -xe" for details.
# systemctl status dnsmasq.service
● dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server
Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled; vendor preset:
enabled)
Drop-In: /run/systemd/generator/dnsmasq.service.d
└─50-dnsmasq-$named.conf, 50-insserv.conf-$named.conf
Active: failed (Result: timeout) since Wed 2020-09-16 15:47:22 UTC; 17s ago
Process: 1744 ExecStop=/etc/init.d/dnsmasq systemd-stop-resolvconf
(code=killed, signal=TERM)
Process: 1808 ExecStartPost=/etc/init.d/dnsmasq systemd-start-resolvconf
(code=killed, signal=TERM)
Process: 1799 ExecStart=/etc/init.d/dnsmasq systemd-exec (code=exited,
status=0/SUCCESS)
Process: 1798 ExecStartPre=/usr/sbin/dnsmasq --test (code=exited,
status=0/SUCCESS)
Main PID: 1807 (code=exited, status=0/SUCCESS)
Sep 16 15:45:52 squid-bug1761096 dnsmasq[1807]: compile time options: IPv6
GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth DNSSEC
loop-detect inotify
Sep 16 15:45:52 squid-bug1761096 dnsmasq[1807]: DNS service limited to local
subnets
Sep 16 15:45:52 squid-bug1761096 dnsmasq[1807]: no servers found in
/var/run/dnsmasq/resolv.conf, will retry
Sep 16 15:45:52 squid-bug1761096 dnsmasq[1807]: read /etc/hosts - 7 addresses
Sep 16 15:45:52 squid-bug1761096 dnsmasq[1807]: reading
/var/run/dnsmasq/resolv.conf
Sep 16 15:45:52 squid-bug1761096 dnsmasq[1807]: using nameserver 10.101.133.1#53
Sep 16 15:47:22 squid-bug1761096 systemd[1]: dnsmasq.service: Start-post
operation timed out. Stopping.
Sep 16 15:47:22 squid-bug1761096 systemd[1]: Failed to start dnsmasq - A
lightweight DHCP and caching DNS server.
Sep 16 15:47:22 squid-bug1761096 systemd[1]: dnsmasq.service: Unit entered
failed state.
Sep 16 15:47:22 squid-bug1761096 systemd[1]: dnsmasq.service: Failed with
result 'timeout'.
Now, installing the package containing the proposed fix, and testing
that it works. After installing, restarting dnsmasq.service multiple
times and verify that it always succeeds:
# systemctl restart dnsmasq.service && echo $?
0
# systemctl restart dnsmasq.service && echo $?
0
# systemctl restart dnsmasq.service && echo $?
0
# systemctl restart dnsmasq.service && echo $?
0
# systemctl restart dnsmasq.service && echo $?
0
Therefore, tagging the bug as verified for Xenial.
** Tags removed: verification-needed-xenial
** Tags added: verification-done-xenial
--
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to dnsmasq in Ubuntu.
https://bugs.launchpad.net/bugs/1761096
Title:
dnsmasq starts with error on Ubuntu Xenial amd64 when squid installed
Status in dnsmasq package in Ubuntu:
Fix Released
Status in squid package in Ubuntu:
Fix Released
Status in squid3 package in Ubuntu:
Invalid
Status in dnsmasq source package in Xenial:
Invalid
Status in squid source package in Xenial:
Invalid
Status in squid3 source package in Xenial:
Fix Committed
Status in dnsmasq source package in Bionic:
Invalid
Status in squid source package in Bionic:
Invalid
Status in squid3 source package in Bionic:
Incomplete
Bug description:
[Impact]
When using dnsmasq along with squid on Ubuntu Xenial, the user will
experience a deadlock while performing on every second execution of
the "systemctl start dnsmasq.service" command. The deadlock will be
caused by an attempt to invoke, by nss-lookup.target, a "systemctl
reload squid.service", which will itself try to start the nss-
lookup.target, which will be waiting on squid, therefore eventually
leading to a timeout.
The underlying cause of this deadlock is related to how systemd used
to handle dependencies between multiple jobs being started in the same
transaction.
[Test Case]
One can reproduce the issue on a Xenial container:
$ lxc launch ubuntu-daily:xenial squid-bug1761096
$ lxc shell squid-bug1761096
# apt update
# apt install squid dnsmasq -y
It is quite possible that during "apt install" the bug will manifest,
and dnsmasq will fail to start due to a timeout. The user might see a
message like:
Job for dnsmasq.service failed because a timeout was exceeded. See
"systemctl status dnsmasq.service" and "journalctl -xe" for details.
If the bug doesn't manifest itself during installation, the following
commands in sequence should trigger it:
# systemctl restart dnsmasq.service
# systemctl restart dnsmasq.service
[Regression Potential]
This change only touches the mechanism by which squid has its
configuration reloaded in case of a DNS resolver change. Because
"systemctl reload --no-block" returns practically immediately, if
squid's configuration file is invalid the user won't see any
notifications. However, this behaviour is already present currently,
because "systemctl reload squid" invokes "/etc/init.d/squid reload";
the user has to check "journalctl -u squid.service" if she wants to
verify whether there were any failures during the reload.
Other than that, and because systemctl will offload the service to the
SysV script as usual (in the case of squid), I don't foresee any
potential regressions.
[Original Description]
Setup to reproduce:
Ubuntu Xenial amd64 net install iso from
http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-
amd64/current/images/netboot/mini.iso
Install system with mostly defaults + LVM + OpenSSH server
Note that this bug applies to both DHCP and static IP+DNS network
configurations
Once server rebooted and is available, log in and install dnsmasq + squid:
apt-get update && apt-get install squid dnsmasq
output of this can be found at https://pastebin.com/9Atuipju
journalctl -xe output at https://pastebin.com/uLhfM4jN
Furthermore at this point I can run alternating errors
root@ubuntu-min:~# date ; service dnsmasq start ; date
Wed Apr 4 09:18:07 CEST 2018
Wed Apr 4 09:18:07 CEST 2018
root@ubuntu-min:~# date ; service dnsmasq stop ; date
Wed Apr 4 09:18:39 CEST 2018
Wed Apr 4 09:18:39 CEST 2018
root@ubuntu-min:~# date ; service dnsmasq start ; date
Wed Apr 4 09:19:10 CEST 2018
Job for dnsmasq.service failed because a timeout was exceeded. See "systemctl
status dnsmasq.service" and "journalctl -xe" for details.
Wed Apr 4 09:20:40 CEST 2018
root@ubuntu-min:~# date ; service dnsmasq start ; date
Wed Apr 4 09:42:57 CEST 2018
Wed Apr 4 09:42:57 CEST 2018
root@ubuntu-min:~# date ; service dnsmasq stop ; date
Wed Apr 4 09:43:14 CEST 2018
Wed Apr 4 09:43:14 CEST 2018
root@ubuntu-min:~# date ; service dnsmasq start ; date
Wed Apr 4 09:43:26 CEST 2018
Job for dnsmasq.service failed because a timeout was exceeded. See "systemctl
status dnsmasq.service" and "journalctl -xe" for details.
Wed Apr 4 09:44:56 CEST 2018
and so on... Each and every 1 out of 2 stop/start cycle fails in 1m30s
timeout
Complete journalctl -xe output attached
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/dnsmasq/+bug/1761096/+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