Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 394257 - sys-cluster/keepalived-1.2.2 on Linux 3.0.6: communication with kernel failing after some time
Summary: sys-cluster/keepalived-1.2.2 on Linux 3.0.6: communication with kernel failin...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Core system (show other bugs)
Hardware: All Linux
: Normal critical (vote)
Assignee: Gentoo Cluster Team
URL: http://sourceforge.net/mailarchive/fo...
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-12-10 16:02 UTC by Ronie Henrich
Modified: 2011-12-10 23:51 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
keepalived_k2.strace (keepalived_k2.strace,541 bytes, text/plain)
2011-12-10 16:07 UTC, Ronie Henrich
Details
keepalived_k3.strace (keepalived_k3.strace,460 bytes, text/plain)
2011-12-10 16:08 UTC, Ronie Henrich
Details
bind-afunspec.patch (bind-afunspec.patch,534 bytes, patch)
2011-12-10 16:18 UTC, Ronie Henrich
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Ronie Henrich 2011-12-10 16:02:23 UTC
After upgrading Gentoo kernel to version 3.0.6, sys-cluster/keepalived-1.2.2 healthcheckers does not remove down realservers:services anymore.

Reproducible: Always

Steps to Reproduce:
1. Start sys-cluster/keepalived-1.2.2 daemon on Gentoo kernel 3.0.6;
2. Run 'ipvsadm -l';
3. Stop a realserver:service listed on step 2;
4. Run 'ipvsadm -l' again;
Actual Results:  
The realserver:service stopped on step 3 above is not removed from the list of available realservers:services (ipvsadm -l).

kernel 3.0.6 - sys-cluster/keepalived-1.2.2 healthcheckers strace:
/etc/init.d/keepalived restart && strace -p `cat /var/run/checkers.pid` -o /tmp/keepalived_k3.strace

See attached keepalived_k3.strace

Expected Results:  
The realserver:service stopped on step 3 should be removed from the list of available realservers:services (ipvsadm -l).

kernel 2.6.29 - sys-cluster/keepalived-1.2.2 healthcheckers strace:
/etc/init.d/keepalived restart && strace -p `cat /var/run/checkers.pid` -o /tmp/keepalived_k2.strace

See attached keepalived_k2.strace

Comparing the bind on both straces, Linux kernel 3.x is complaining about AF_UNSPEC.

'emerge --info'
Portage 2.1.10.11 (default/linux/amd64/10.0/server, gcc-4.4.3, glibc-2.12.2-r0, 3.0.6-gentoo x86_64)
=================================================================
System uname: Linux-3.0.6-gentoo-x86_64-Intel-R-_Pentium-R-_4_CPU_2.80GHz-with-gentoo-2.0.3
Timestamp of tree: Tue, 06 Dec 2011 07:00:01 +0000
app-shells/bash:          4.1_p9
dev-lang/python:          2.7.2-r3, 3.1.4-r3
dev-util/pkgconfig:       0.26
sys-apps/baselayout:      2.0.3
sys-apps/openrc:          0.9.4
sys-apps/sandbox:         2.5
sys-devel/autoconf:       2.68
sys-devel/automake:       1.11.1
sys-devel/binutils:       2.21.1-r1
sys-devel/gcc:            4.4.3-r3
sys-devel/gcc-config:     1.4.1-r1
sys-devel/libtool:        2.4-r1
sys-devel/make:           3.82-r1
sys-kernel/linux-headers: 2.6.39 (virtual/os-headers)
sys-libs/glibc:           2.12.2
Repositories: gentoo
ACCEPT_KEYWORDS="amd64"
ACCEPT_LICENSE="* -@EULA"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-fomit-frame-pointer -march=nocona -O2 -pipe"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/openvpn/easy-rsa"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"
CXXFLAGS="-fomit-frame-pointer -march=nocona -O2 -pipe"
DISTDIR="/usr/portage/distfiles"
FEATURES="assume-digests binpkg-logs distlocks ebuild-locks fixlafiles fixpackages news parallel-fetch protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch"
FFLAGS=""
GENTOO_MIRRORS="http://www.las.ic.unicamp.br/pub/gentoo/"
LANG="en_US.UTF-8"
LC_ALL="en_US.UTF-8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
MAKEOPTS="-j3 -l3"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_EXTRA_OPTS="--exclude-from=/etc/portage/rsync_excludes"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY=""
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="acl amd64 authdaemond bashlogger bzip2 chroot cli cracklib crypt cups cxx dri iconv idn iproute2 ipv6 ithreads jpeg ldap mmx modules mudflap multilib ncurses nls noaudio nojoystick nptl nptlonly openmp pam pcre png pppd readline session sse sse2 ssl sysfs tcpd threads truetype unicode userlocales vhosts xml xorg zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="alias auth_basic auth_digest authn_default authn_file authz_default authz_host authz_user autoindex cache charset_lite deflate dir disk_cache env expires ext_filter file_cache filter headers include log_config logio mime mime_magic negotiation proxy proxy_balancer proxy_http rewrite setenvif speling unique_id vhost_alias dav dav_fs dav_lock" APACHE2_MPMS="worker" CALLIGRA_FEATURES="kexi words flow plan stage tables krita karbon braindump" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ubx" INPUT_DEVICES="keyboard mouse evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" PHP_TARGETS="php5-3" RUBY_TARGETS="ruby18" USERLAND="GNU" VIDEO_CARDS="fbdev glint intel mach64 mga neomagic nouveau nv r128 radeon savage sis tdfx trident vesa via vmware dummy v4l" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account"
Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LINGUAS, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS
Comment 1 Ronie Henrich 2011-12-10 16:07:18 UTC
Created attachment 295381 [details]
keepalived_k2.strace
Comment 2 Ronie Henrich 2011-12-10 16:08:33 UTC
Created attachment 295383 [details]
keepalived_k3.strace
Comment 3 Ronie Henrich 2011-12-10 16:16:41 UTC
I found some posts related to it:
http://comments.gmane.org/gmane.linux.network/205326

I tested it again with the following changes in Linux kernel 3.0.6, and it worked:
diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c
index 1b745d4..60fd64e 100644
--- a/net/ipv4/af_inet.c
+++ b/net/ipv4/af_inet.c
@@ -465,7 +465,7 @@ int inet_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
 	if (addr_len < sizeof(struct sockaddr_in))
 		goto out;

-	if (addr->sin_family != AF_INET) {
+	if (addr->sin_family != AF_INET && addr->sin_family != AF_UNSPEC) {
 		err = -EAFNOSUPPORT;
 		goto out;
 	}


I posted all the debug info at https://lists.sourceforge.net/lists/listinfo/keepalived-devel on 2011-12-05 and Vincent Bernat provided a patch to fix it.
See attached bind-afunspec.patch
Comment 4 Ronie Henrich 2011-12-10 16:18:23 UTC
Created attachment 295385 [details, diff]
bind-afunspec.patch
Comment 5 Jeroen Roovers (RETIRED) gentoo-dev 2011-12-10 16:38:15 UTC
Please don't CC random people.
Comment 6 Ronie Henrich 2011-12-10 17:39:36 UTC
Jeroen, I talk to Robin (robbat2) by email about this bug.
Comment 7 Robin Johnson archtester Gentoo Infrastructure gentoo-dev Security 2011-12-10 23:51:49 UTC
InCVS now.