Nsd-4.0.0b5: error: recvmmsg failed: Function not implemented

Hi,

nsd-4.0.0b5

after upgrading a host from Debian squeeze to wheezy I get tons of
$subject after the first query arrive (and no answer at all)

I assume I have to recompile. But there is no --disable-recvmmsg
Where should I start? Do you need more information about the host?

Thanks,
Andreas

nsd-4.0.0b5?

Latest version on/in Debian is 3.2.15-1

/T

Zitat von T <T@starka.st>:

nsd-4.0.0b5?
Latest version on/in Debian is 3.2.15-1

yes, it's BETA5 for nsd4

Hi Andreas,

Zitat von "W.C.A. Wijngaards" <wouter@nlnetlabs.nl>:

This should be fixed in nsd trunk version - it checks at configure
time if recvmmsg is implemented.

Thanks, but it doesn't help (at least me).

I run the same package on different virtual machines. Both where upgrades von Squeeze to Wheezy.
But basicly it both Debian. One VM work, the other doesn't.

======= vm1 (working)
# cat /proc/version
Linux version 2.6.32-042stab076.7 (root@rh6-build-x64) (gcc version 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC) ) #1 SMP Thu Apr 25 13:35:47 MSK 2013

# md5sum /usr/sbin/nsd
fe5e61d811a5698b4d397b4dc4a8c2d0 /usr/sbin/nsd

# head -n 1 /proc/vz/vestat
Version: 2.2

======= vm2 (not working)
# cat /proc/version
Linux version 2.6.32-5-openvz-amd64 (Debian 2.6.32-48squeeze3) (dannf@debian.org) (gcc version 4.3.5 (Debian 4.3.5-4) ) #1 SMP Fri May 10 09:43:55 UTC 2013

# md5sum /usr/sbin/nsd
fe5e61d811a5698b4d397b4dc4a8c2d0 /usr/sbin/nsd

# /proc/vz/vestat don't exist here (older openvz Version ???)

Hi Andreas,

But basicly it both Debian. One VM work, the other doesn't.

Are you sure? Your output suggest vm1 is a Red Hat box.

Linux version 2.6.32-042stab076.7 (root@rh6-build-x64) (gcc version
4.4.6 20120305 (Red Hat 4.4.6-4) (GCC) ) #1 SMP Thu Apr 25 13:35:47 MSK
2013

Linux version 2.6.32-5-openvz-amd64 (Debian 2.6.32-48squeeze3)
(dannf@debian.org) (gcc version 4.3.5 (Debian 4.3.5-4) ) #1 SMP Fri May
10 09:43:55 UTC 2013

I'm confused why the apparently identical binary works on the debian
machine. The man page states: "The recvmmsg() system call was added in
Linux 2.6.33. Support in glibc was added in version 2.12."

Did you really run ./configure on both VMs?

Regards,
Yuri

Zitat von Yuri Schaeffer <yuri@nlnetlabs.nl>:

Are you sure? Your output suggest vm1 is a Red Hat box.

Linux version 2.6.32-042stab076.7 (root@rh6-build-x64) (gcc version
4.4.6 20120305 (Red Hat 4.4.6-4) (GCC) ) #1 SMP Thu Apr 25 13:35:47 MSK
2013

Linux version 2.6.32-5-openvz-amd64 (Debian 2.6.32-48squeeze3)
(dannf@debian.org) (gcc version 4.3.5 (Debian 4.3.5-4) ) #1 SMP Fri May
10 09:43:55 UTC 2013

I use virtual hosts from different (cheap) vhost providers for years.
The vhosts don't need an own kernel package and I didn't care about till now.
Looks like the hosts running the vhosts use different distos.
But that's the sense of virtualization and should not matter.

Did you really run ./configure on both VMs?

no.
I build Debian packages on a dedicated, external build host. But that host also run
Debian Wheezy. Doing so was never a problem last years.

NSD4 uses kernel? features. Availability is checked at build time and that looks wrong here.
It should be possible to select at run time.

For now I try to disable HAVE_RECVMMSG in config.h ...

Andreas

Zitat von Andreas Schulze <sca@andreasschulze.de>:

For now I try to disable HAVE_RECVMMSG in config.h ...

patch (ugly) attached

compile && run here and now.
Andreas

(attachments)

nsd-4.0.0b5_disable_recvmmsg.patch (653 Bytes)

Hi Andreas,

Zitat von Andreas Schulze <sca@andreasschulze.de>:

For now I try to disable HAVE_RECVMMSG in config.h ...

patch (ugly) attached

NSD should not really detect the system at runtime; it is built by the
packager. But, an option to make the build compatible with older
Linux kernels is good, and I added this to the NSD4 source.

The attached patch for NSD4(beta5) adds a configure time option
that --disable-recvmmsg for compat with older Linux kernels,
by default it autodetects support in the kernel on the buildmachine.

Best regards,
   Wouter

(attachments)

patch_disable_recvmmsg.diff (2.13 KB)

NSD should not really detect the system at runtime; it is built by the
packager. But, an option to make the build compatible with older
Linux kernels is good, and I added this to the NSD4 source.

right.

The attached patch for NSD4(beta5) adds a configure time option
that --disable-recvmmsg for compat with older Linux kernels,
by default it autodetects support in the kernel on the buildmachine.

The patch modify configure.ac. But my buildsystem just uses configure
and ignore the changed configure.ac.
I'm not the expert to modify configure itself.

Andreas