Activity log for bug #1368688

Date Who What changed Old value New value Message
2014-09-12 10:48:51 Artyom bug added bug
2014-09-12 10:56:03 Artyom description After upgrade Ubuntu server from 12.04 LTS to 14.04 LTS (with do-release-upgrade) I found a strange behavior in /var/log/messages from isc-dhcp-server. It had doubled DHCPREQUESTS/OFFERS/ACKs... It was like: ~~ dhcpd: DHCPDISCOVER from 00:0b:82:27:be:d1 via eth0 dhcpd: DHCPDISCOVER from 00:0b:82:27:be:d1 via eth0 DHCPREQUEST for 192.168.1.102 (10.112.1.252) from 00:0b:82:27:be:d1 via eth0 DHCPREQUEST for 192.168.1.102 (10.112.1.252) from 00:0b:82:27:be:d1 via eth0 DHCPACK on 192.168.1.102 to 00:0b:82:27:be:d1 via eth0 DHCPACK on 192.168.1.102 to 00:0b:82:27:be:d1 via eth0 ~~ Futher investigation show that there was actually two dhcpd processes: ~~ dhcpd -q -cf /etc/dhcp/dhcpd.conf -pf /var/run/dhcp-server/dhcpd.pid /usr/sbin/dhcpd -q -cf /etc/dhcp/dhcpd.conf -pf /var/run/dhcpd.pid ~~ The first one was executed from "/etc/init/isc-dhcp-server.conf" and second from "/etc/init.d/isc-dhcp-server". Looking inside "init/isc-dhcp-server.conf" I found: ~~ respawn script . /etc/default/isc-dhcp-server ...... exec dhcpd -user dhcpd -group dhcpd -f -q -4 -pf /run/dhcp-server/dhcpd.pid -cf $CONFIG_FILE $INTERFACES ~~ As you can see path to PID file is hardcoded. But in "init.d/isc-dhcp-server" startup script: ~~ # try to read pid file name from config file, with fallback to /var/run/dhcpd.pid if [ -z "$DHCPD_PID" ]; then DHCPD_PID=$(sed -n -e 's/^[ \t]*pid-file-name[ \t]*"(.*)"[ \t]*;.*$/\1/p' < "$DHCPD_CONF" 2>/dev/null | head -n 1) fi DHCPD_PID="${DHCPD_PID:-/var/run/dhcpd.pid}" ...... case "$1" in start) test_config log_daemon_msg "Starting $DESC" "$NAME" start-stop-daemon --start --quiet --pidfile "$DHCPD_PID" \ --exec /usr/sbin/dhcpd -- \ -q $OPTIONS -cf "$DHCPD_CONF" -pf "$DHCPD_PID" $INTERFACES ~~ After upgrade Ubuntu server from 12.04 LTS to 14.04 LTS (with do-release-upgrade) I found a strange behavior in /var/log/messages from isc-dhcp-server. It had doubled DHCPREQUESTS/OFFERS/ACKs... It was like: ~~ dhcpd: DHCPDISCOVER from 00:0b:82:27:be:d1 via eth0 dhcpd: DHCPDISCOVER from 00:0b:82:27:be:d1 via eth0 DHCPREQUEST for 192.168.1.102 (10.112.1.252) from 00:0b:82:27:be:d1 via eth0 DHCPREQUEST for 192.168.1.102 (10.112.1.252) from 00:0b:82:27:be:d1 via eth0 DHCPACK on 192.168.1.102 to 00:0b:82:27:be:d1 via eth0 DHCPACK on 192.168.1.102 to 00:0b:82:27:be:d1 via eth0 ~~ Futher investigation show that there was actually two dhcpd processes: ~~ dhcpd -q -cf /etc/dhcp/dhcpd.conf -pf /var/run/dhcp-server/dhcpd.pid /usr/sbin/dhcpd -q -cf /etc/dhcp/dhcpd.conf -pf /var/run/dhcpd.pid ~~ The first one was executed from "/etc/init/isc-dhcp-server.conf" and second from "/etc/init.d/isc-dhcp-server". Looking inside "init/isc-dhcp-server.conf" I found: ~~ respawn script    . /etc/default/isc-dhcp-server   ......  exec dhcpd -user dhcpd -group dhcpd -f -q -4 -pf /run/dhcp-server/dhcpd.pid -cf $CONFIG_FILE $INTERFACES ~~ As you can see path to PID file is hardcoded. But in "init.d/isc-dhcp-server" startup script: ~~ # try to read pid file name from config file, with fallback to /var/run/dhcpd.pid if [ -z "$DHCPD_PID" ]; then         DHCPD_PID=$(sed -n -e 's/^[ \t]*pid-file-name[ \t]*"(.*)"[ \t]*;.*$/\1/p' < "$DHCPD_CONF" 2>/dev/null | head -n 1) fi DHCPD_PID="${DHCPD_PID:-/var/run/dhcpd.pid}"   ...... case "$1" in         start)                 test_config                 log_daemon_msg "Starting $DESC" "$NAME"                 start-stop-daemon --start --quiet --pidfile "$DHCPD_PID" \                         --exec /usr/sbin/dhcpd -- \                         -q $OPTIONS -cf "$DHCPD_CONF" -pf "$DHCPD_PID" $INTERFACES ~~ So obivous is to either change init script to NOT use hardcoded path to PID file and use $DHCP_PID (from /etc/default/isc-dhcp-server, which is sourced inside this script), or at least change it to "default" one: /var/run/dhcpd.pid OR change init.d script to fallback to "/run/dhcp-server/dhcpd.pid" instead of "/var/run/dhcpd.pid" P.S. /var/run is a link to /run
2014-09-28 04:29:06 Launchpad Janitor isc-dhcp (Ubuntu): status New Confirmed
2014-10-23 21:30:11 Joi Owen bug added subscriber Joi Ellis
2015-05-21 21:22:30 John Center bug added subscriber John Center
2016-03-23 12:23:45 Eetu Huisman bug added subscriber Eetu Huisman