[libvirt] Strange test build failure

# VIR_TEST_VERBOSE=1 VIR_TEST_DEBUG=1 ./qemuxml2argvtest 2>&1 | grep NUMA 61) QEMU XML-2-ARGV hugepages-pages ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable 64) QEMU XML-2-ARGV hugepages-shared ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable 331) QEMU XML-2-ARGV numatune-memnode ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable 333) QEMU XML-2-ARGV numatune-memnode-no-memory ... libvirt: error : unsupported configuration: NUMA node 3 is unavailable 336) QEMU XML-2-ARGV numatune-auto-prefer ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable 449) QEMU XML-2-ARGV memory-hotplug-dimm ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable 450) QEMU XML-2-ARGV memory-hotplug-dimm-addr ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable So the test fails, but I don't believe I'm compiling libvirt with numad support... So I don't understand what is being asserted here. -- Regards, Dimitri. Pura Vida! https://clearlinux.org Open Source Technology Center Intel Corporation (UK) Ltd. - Co. Reg. #1134945 - Pipers Way, Swindon SN3 1RJ.

On Fri, May 22, 2015 at 01:13:40PM +0100, Dimitri John Ledkov wrote:
# VIR_TEST_VERBOSE=1 VIR_TEST_DEBUG=1 ./qemuxml2argvtest 2>&1 | grep NUMA 61) QEMU XML-2-ARGV hugepages-pages ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable 64) QEMU XML-2-ARGV hugepages-shared ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable 331) QEMU XML-2-ARGV numatune-memnode ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable 333) QEMU XML-2-ARGV numatune-memnode-no-memory ... libvirt: error : unsupported configuration: NUMA node 3 is unavailable 336) QEMU XML-2-ARGV numatune-auto-prefer ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable 449) QEMU XML-2-ARGV memory-hotplug-dimm ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable 450) QEMU XML-2-ARGV memory-hotplug-dimm-addr ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable
So the test fails, but I don't believe I'm compiling libvirt with numad support... So I don't understand what is being asserted here.
Can you tell us more about what platform you are building on, and particularly what compiler & linker you are using Regards, Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

On 22.05.2015 14:18, Daniel P. Berrange wrote:
On Fri, May 22, 2015 at 01:13:40PM +0100, Dimitri John Ledkov wrote:
# VIR_TEST_VERBOSE=1 VIR_TEST_DEBUG=1 ./qemuxml2argvtest 2>&1 | grep NUMA 61) QEMU XML-2-ARGV hugepages-pages ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable 64) QEMU XML-2-ARGV hugepages-shared ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable 331) QEMU XML-2-ARGV numatune-memnode ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable 333) QEMU XML-2-ARGV numatune-memnode-no-memory ... libvirt: error : unsupported configuration: NUMA node 3 is unavailable 336) QEMU XML-2-ARGV numatune-auto-prefer ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable 449) QEMU XML-2-ARGV memory-hotplug-dimm ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable 450) QEMU XML-2-ARGV memory-hotplug-dimm-addr ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable
So the test fails, but I don't believe I'm compiling libvirt with numad support... So I don't understand what is being asserted here.
Can you tell us more about what platform you are building on, and particularly what compiler & linker you are using
And what arguments do you pass to configure. Michal

On 22 May 2015 at 13:53, Michal Privoznik <mprivozn@redhat.com> wrote:
On 22.05.2015 14:18, Daniel P. Berrange wrote:
On Fri, May 22, 2015 at 01:13:40PM +0100, Dimitri John Ledkov wrote:
# VIR_TEST_VERBOSE=1 VIR_TEST_DEBUG=1 ./qemuxml2argvtest 2>&1 | grep NUMA 61) QEMU XML-2-ARGV hugepages-pages ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable 64) QEMU XML-2-ARGV hugepages-shared ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable 331) QEMU XML-2-ARGV numatune-memnode ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable 333) QEMU XML-2-ARGV numatune-memnode-no-memory ... libvirt: error : unsupported configuration: NUMA node 3 is unavailable 336) QEMU XML-2-ARGV numatune-auto-prefer ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable 449) QEMU XML-2-ARGV memory-hotplug-dimm ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable 450) QEMU XML-2-ARGV memory-hotplug-dimm-addr ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable
So the test fails, but I don't believe I'm compiling libvirt with numad support... So I don't understand what is being asserted here.
Can you tell us more about what platform you are building on, and particularly what compiler & linker you are using
And what arguments do you pass to configure.
I'm building on https://clearlinux.org which in all fairness is very up to date across the board of packages and only lightly patched. We just switched to gcc 5.1 and saw this test failures in the world rebuild. The full configure call is as follows (from parsed rpmspec, looking at it I should fix setting CFLAGS twice...): Linker is just binutils gnu ld. CFLAGS="-O2 -g2 -feliminate-unused-debug-types -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=32 -Wformat -Wformat-security -Wl,--copy-dt-needed-entries -Wno-error -Wl,-z -Wl,now -Wl,-z -Wl,relro -Wl,-z,max-page-size=0x1000 -fno-semantic-interposition -malign-data=abi -m64 -march=ivybridge -mtune=haswell -mrdrnd -fasynchronous-unwind-tables -fno-omit-frame-pointer -Wp,-D_REENTRANT " ; export CFLAGS ; CXXFLAGS="${CXXFLAGS:--O2 -g2 -feliminate-unused-debug-types -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=32 -Wformat -Wformat-security -Wl,--copy-dt-needed-entries -Wno-error -Wl,-z -Wl,now -Wl,-z -Wl,relro -Wl,-z,max-page-size=0x1000 -fno-semantic-interposition -malign-data=abi -m64 -march=ivybridge -mtune=haswell -mrdrnd -fasynchronous-unwind-tables -fno-omit-frame-pointer -Wp,-D_REENTRANT }" ; export CXXFLAGS ; FFLAGS="${FFLAGS:--O2 -g2 -feliminate-unused-debug-types -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=32 -Wformat -Wformat-security -Wl,--copy-dt-needed-entries -Wno-error -Wl,-z -Wl,now -Wl,-z -Wl,relro -Wl,-z,max-page-size=0x1000 -fno-semantic-interposition -malign-data=abi -m64 -march=ivybridge -mtune=haswell -mrdrnd -fasynchronous-unwind-tables -fno-omit-frame-pointer -Wp,-D_REENTRANT -I/usr/lib64/gfortran/modules}" ; export FFLAGS ; LD_AS_NEEDED=1; export LD_AS_NEEDED ; PKG_CONFIG_LIBDIR=/usr/lib64/pkgconfig; export PKG_CONFIG_LIBDIR ; PATH="/usr/lib64/ccache/bin:/usr/local/bin:/usr/bin"; export PATH ; CFLAGS="${CFLAGS:--O2 -g2 -feliminate-unused-debug-types -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=32 -Wformat -Wformat-security -Wl,--copy-dt-needed-entries -Wno-error -Wl,-z -Wl,now -Wl,-z -Wl,relro -Wl,-z,max-page-size=0x1000 -fno-semantic-interposition -malign-data=abi -m64 -march=ivybridge -mtune=haswell -mrdrnd -fasynchronous-unwind-tables -fno-omit-frame-pointer -Wp,-D_REENTRANT }" ; export CFLAGS ; autoreconf -v --install --force || exit 1 ./configure --build=x86_64-generic-linux-gnu --host=x86_64-generic-linux-gnu \ --target=x86_64-unknown-linux-gnu \ --program-prefix= \ --prefix=/usr \ --exec-prefix=/usr \ --bindir=/usr/bin \ --sbindir=/usr/bin \ --sysconfdir=/etc \ --datadir=/usr/share \ --includedir=/usr/include \ --libdir=/usr/lib64 \ --libexecdir=/usr/libexec \ --localstatedir=/var \ --sharedstatedir=/usr/com \ --mandir=/usr/share/man \ --infodir=/usr/share/info --disable-static ac_cv_path_EBTABLES_PATH=/usr/bin/ebtables \ ac_cv_path_IP_PATH= \ --disable-dependency-tracking \ --enable-nls \ --with-dbus \ --with-init-script=systemd \ --with-interface \ --with-libvirtd \ --with-lxc \ --with-macvtap=yes \ --with-numactl \ --without-apparmor \ --without-dtrace \ --without-esx \ --without-firewalld \ --without-fuse \ --without-hyperv \ --without-libxl \ --without-netcf \ --without-openvz \ --without-phyp \ --without-pm-utils \ --without-polkit \ --without-sasl \ --without-selinux \ --without-uml \ --without-vbox \ --without-vmware \ --without-xen \ --without-xenapi \ --without-xen-inotify \ --with-pciaccess \ --with-qemu-group=qemu \ --with-qemu-user=qemu \ --with-qemu=yes \ --with-remote \ --with-test=yes \ --with-udev \ --with-yajl -- Regards, Dimitri. Pura Vida! https://clearlinux.org Open Source Technology Center Intel Corporation (UK) Ltd. - Co. Reg. #1134945 - Pipers Way, Swindon SN3 1RJ.

On 22.05.2015 16:39, Dimitri John Ledkov wrote:
On 22 May 2015 at 13:53, Michal Privoznik <mprivozn@redhat.com> wrote:
On 22.05.2015 14:18, Daniel P. Berrange wrote:
On Fri, May 22, 2015 at 01:13:40PM +0100, Dimitri John Ledkov wrote:
# VIR_TEST_VERBOSE=1 VIR_TEST_DEBUG=1 ./qemuxml2argvtest 2>&1 | grep NUMA 61) QEMU XML-2-ARGV hugepages-pages ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable 64) QEMU XML-2-ARGV hugepages-shared ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable 331) QEMU XML-2-ARGV numatune-memnode ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable 333) QEMU XML-2-ARGV numatune-memnode-no-memory ... libvirt: error : unsupported configuration: NUMA node 3 is unavailable 336) QEMU XML-2-ARGV numatune-auto-prefer ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable 449) QEMU XML-2-ARGV memory-hotplug-dimm ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable 450) QEMU XML-2-ARGV memory-hotplug-dimm-addr ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable
So the test fails, but I don't believe I'm compiling libvirt with numad support... So I don't understand what is being asserted here.
Can you tell us more about what platform you are building on, and particularly what compiler & linker you are using
And what arguments do you pass to configure.
I'm building on https://clearlinux.org which in all fairness is very up to date across the board of packages and only lightly patched.
We just switched to gcc 5.1 and saw this test failures in the world rebuild. The full configure call is as follows (from parsed rpmspec, looking at it I should fix setting CFLAGS twice...):
Linker is just binutils gnu ld.
CFLAGS="-O2 -g2 -feliminate-unused-debug-types -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=32 -Wformat -Wformat-security -Wl,--copy-dt-needed-entries -Wno-error -Wl,-z -Wl,now -Wl,-z -Wl,relro -Wl,-z,max-page-size=0x1000 -fno-semantic-interposition -malign-data=abi -m64 -march=ivybridge -mtune=haswell -mrdrnd -fasynchronous-unwind-tables -fno-omit-frame-pointer -Wp,-D_REENTRANT " ; export CFLAGS ; CXXFLAGS="${CXXFLAGS:--O2 -g2 -feliminate-unused-debug-types -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=32 -Wformat -Wformat-security -Wl,--copy-dt-needed-entries -Wno-error -Wl,-z -Wl,now -Wl,-z -Wl,relro -Wl,-z,max-page-size=0x1000 -fno-semantic-interposition -malign-data=abi -m64 -march=ivybridge -mtune=haswell -mrdrnd -fasynchronous-unwind-tables -fno-omit-frame-pointer -Wp,-D_REENTRANT }" ; export CXXFLAGS ; FFLAGS="${FFLAGS:--O2 -g2 -feliminate-unused-debug-types -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=32 -Wformat -Wformat-security -Wl,--copy-dt-needed-entries -Wno-error -Wl,-z -Wl,now -Wl,-z -Wl,relro -Wl,-z,max-page-size=0x1000 -fno-semantic-interposition -malign-data=abi -m64 -march=ivybridge -mtune=haswell -mrdrnd -fasynchronous-unwind-tables -fno-omit-frame-pointer -Wp,-D_REENTRANT -I/usr/lib64/gfortran/modules}" ; export FFLAGS ; LD_AS_NEEDED=1; export LD_AS_NEEDED ; PKG_CONFIG_LIBDIR=/usr/lib64/pkgconfig; export PKG_CONFIG_LIBDIR ; PATH="/usr/lib64/ccache/bin:/usr/local/bin:/usr/bin"; export PATH ; CFLAGS="${CFLAGS:--O2 -g2 -feliminate-unused-debug-types -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=32 -Wformat -Wformat-security -Wl,--copy-dt-needed-entries -Wno-error -Wl,-z -Wl,now -Wl,-z -Wl,relro -Wl,-z,max-page-size=0x1000 -fno-semantic-interposition -malign-data=abi -m64 -march=ivybridge -mtune=haswell -mrdrnd -fasynchronous-unwind-tables -fno-omit-frame-pointer -Wp,-D_REENTRANT }" ; export CFLAGS ; autoreconf -v --install --force || exit 1 ./configure --build=x86_64-generic-linux-gnu --host=x86_64-generic-linux-gnu \ --target=x86_64-unknown-linux-gnu \ --program-prefix= \ --prefix=/usr \ --exec-prefix=/usr \ --bindir=/usr/bin \ --sbindir=/usr/bin \ --sysconfdir=/etc \ --datadir=/usr/share \ --includedir=/usr/include \ --libdir=/usr/lib64 \ --libexecdir=/usr/libexec \ --localstatedir=/var \ --sharedstatedir=/usr/com \ --mandir=/usr/share/man \ --infodir=/usr/share/info --disable-static ac_cv_path_EBTABLES_PATH=/usr/bin/ebtables \ ac_cv_path_IP_PATH= \ --disable-dependency-tracking \ --enable-nls \ --with-dbus \ --with-init-script=systemd \ --with-interface \ --with-libvirtd \ --with-lxc \ --with-macvtap=yes \ --with-numactl \ --without-apparmor \ --without-dtrace \ --without-esx \ --without-firewalld \ --without-fuse \ --without-hyperv \ --without-libxl \ --without-netcf \ --without-openvz \ --without-phyp \ --without-pm-utils \ --without-polkit \ --without-sasl \ --without-selinux \ --without-uml \ --without-vbox \ --without-vmware \ --without-xen \ --without-xenapi \ --without-xen-inotify \ --with-pciaccess \ --with-qemu-group=qemu \ --with-qemu-user=qemu \ --with-qemu=yes \ --with-remote \ --with-test=yes \ --with-udev \ --with-yajl
So even though you are building with numactl, it seems to me like you don't have numa_bitmask_isbitset(). Can you check config.log to see if HAVE_NUMA_BITMASK_ISBITSET is defined to 1? If my guess is right, this causes us to not mock virNumaNodeIsAvailable() and therefore we run the original function which checks real host the build is ran on. Michal

On Fri, May 22, 2015 at 05:59:49PM +0200, Michal Privoznik wrote:
On 22.05.2015 16:39, Dimitri John Ledkov wrote:
On 22 May 2015 at 13:53, Michal Privoznik <mprivozn@redhat.com> wrote:
On 22.05.2015 14:18, Daniel P. Berrange wrote:
On Fri, May 22, 2015 at 01:13:40PM +0100, Dimitri John Ledkov wrote:
# VIR_TEST_VERBOSE=1 VIR_TEST_DEBUG=1 ./qemuxml2argvtest 2>&1 | grep NUMA 61) QEMU XML-2-ARGV hugepages-pages ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable 64) QEMU XML-2-ARGV hugepages-shared ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable 331) QEMU XML-2-ARGV numatune-memnode ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable 333) QEMU XML-2-ARGV numatune-memnode-no-memory ... libvirt: error : unsupported configuration: NUMA node 3 is unavailable 336) QEMU XML-2-ARGV numatune-auto-prefer ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable 449) QEMU XML-2-ARGV memory-hotplug-dimm ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable 450) QEMU XML-2-ARGV memory-hotplug-dimm-addr ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable
So the test fails, but I don't believe I'm compiling libvirt with numad support... So I don't understand what is being asserted here.
Can you tell us more about what platform you are building on, and particularly what compiler & linker you are using
And what arguments do you pass to configure.
I'm building on https://clearlinux.org which in all fairness is very up to date across the board of packages and only lightly patched.
We just switched to gcc 5.1 and saw this test failures in the world rebuild. The full configure call is as follows (from parsed rpmspec, looking at it I should fix setting CFLAGS twice...):
Linker is just binutils gnu ld.
CFLAGS="-O2 -g2 -feliminate-unused-debug-types -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=32 -Wformat -Wformat-security -Wl,--copy-dt-needed-entries -Wno-error -Wl,-z -Wl,now -Wl,-z -Wl,relro -Wl,-z,max-page-size=0x1000 -fno-semantic-interposition -malign-data=abi -m64 -march=ivybridge -mtune=haswell -mrdrnd -fasynchronous-unwind-tables -fno-omit-frame-pointer -Wp,-D_REENTRANT " ; export CFLAGS ; CXXFLAGS="${CXXFLAGS:--O2 -g2 -feliminate-unused-debug-types -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=32 -Wformat -Wformat-security -Wl,--copy-dt-needed-entries -Wno-error -Wl,-z -Wl,now -Wl,-z -Wl,relro -Wl,-z,max-page-size=0x1000 -fno-semantic-interposition -malign-data=abi -m64 -march=ivybridge -mtune=haswell -mrdrnd -fasynchronous-unwind-tables -fno-omit-frame-pointer -Wp,-D_REENTRANT }" ; export CXXFLAGS ; FFLAGS="${FFLAGS:--O2 -g2 -feliminate-unused-debug-types -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=32 -Wformat -Wformat-security -Wl,--copy-dt-needed-entries -Wno-error -Wl,-z -Wl,now -Wl,-z -Wl,relro -Wl,-z,max-page-size=0x1000 -fno-semantic-interposition -malign-data=abi -m64 -march=ivybridge -mtune=haswell -mrdrnd -fasynchronous-unwind-tables -fno-omit-frame-pointer -Wp,-D_REENTRANT -I/usr/lib64/gfortran/modules}" ; export FFLAGS ; LD_AS_NEEDED=1; export LD_AS_NEEDED ; PKG_CONFIG_LIBDIR=/usr/lib64/pkgconfig; export PKG_CONFIG_LIBDIR ; PATH="/usr/lib64/ccache/bin:/usr/local/bin:/usr/bin"; export PATH ; CFLAGS="${CFLAGS:--O2 -g2 -feliminate-unused-debug-types -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=32 -Wformat -Wformat-security -Wl,--copy-dt-needed-entries -Wno-error -Wl,-z -Wl,now -Wl,-z -Wl,relro -Wl,-z,max-page-size=0x1000 -fno-semantic-interposition -malign-data=abi -m64 -march=ivybridge -mtune=haswell -mrdrnd -fasynchronous-unwind-tables -fno-omit-frame-pointer -Wp,-D_REENTRANT }" ; export CFLAGS ; autoreconf -v --install --force || exit 1 ./configure --build=x86_64-generic-linux-gnu --host=x86_64-generic-linux-gnu \ --target=x86_64-unknown-linux-gnu \ --program-prefix= \ --prefix=/usr \ --exec-prefix=/usr \ --bindir=/usr/bin \ --sbindir=/usr/bin \ --sysconfdir=/etc \ --datadir=/usr/share \ --includedir=/usr/include \ --libdir=/usr/lib64 \ --libexecdir=/usr/libexec \ --localstatedir=/var \ --sharedstatedir=/usr/com \ --mandir=/usr/share/man \ --infodir=/usr/share/info --disable-static ac_cv_path_EBTABLES_PATH=/usr/bin/ebtables \ ac_cv_path_IP_PATH= \ --disable-dependency-tracking \ --enable-nls \ --with-dbus \ --with-init-script=systemd \ --with-interface \ --with-libvirtd \ --with-lxc \ --with-macvtap=yes \ --with-numactl \ --without-apparmor \ --without-dtrace \ --without-esx \ --without-firewalld \ --without-fuse \ --without-hyperv \ --without-libxl \ --without-netcf \ --without-openvz \ --without-phyp \ --without-pm-utils \ --without-polkit \ --without-sasl \ --without-selinux \ --without-uml \ --without-vbox \ --without-vmware \ --without-xen \ --without-xenapi \ --without-xen-inotify \ --with-pciaccess \ --with-qemu-group=qemu \ --with-qemu-user=qemu \ --with-qemu=yes \ --with-remote \ --with-test=yes \ --with-udev \ --with-yajl
So even though you are building with numactl, it seems to me like you don't have numa_bitmask_isbitset(). Can you check config.log to see if HAVE_NUMA_BITMASK_ISBITSET is defined to 1? If my guess is right, this causes us to not mock virNumaNodeIsAvailable() and therefore we run the original function which checks real host the build is ran on.
Or is this not the same as the issue with inline that was seen with clang before ? Regards, Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

Daniel P. Berrange wrote:
On Fri, May 22, 2015 at 05:59:49PM +0200, Michal Privoznik wrote:
On 22.05.2015 16:39, Dimitri John Ledkov wrote:
On 22 May 2015 at 13:53, Michal Privoznik <mprivozn@redhat.com> wrote:
On 22.05.2015 14:18, Daniel P. Berrange wrote:
On Fri, May 22, 2015 at 01:13:40PM +0100, Dimitri John Ledkov wrote:
# VIR_TEST_VERBOSE=1 VIR_TEST_DEBUG=1 ./qemuxml2argvtest 2>&1 | grep NUMA 61) QEMU XML-2-ARGV hugepages-pages ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable 64) QEMU XML-2-ARGV hugepages-shared ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable 331) QEMU XML-2-ARGV numatune-memnode ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable 333) QEMU XML-2-ARGV numatune-memnode-no-memory ... libvirt: error : unsupported configuration: NUMA node 3 is unavailable 336) QEMU XML-2-ARGV numatune-auto-prefer ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable 449) QEMU XML-2-ARGV memory-hotplug-dimm ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable 450) QEMU XML-2-ARGV memory-hotplug-dimm-addr ... libvirt: error : unsupported configuration: NUMA node 1 is unavailable
So the test fails, but I don't believe I'm compiling libvirt with numad support... So I don't understand what is being asserted here.
Can you tell us more about what platform you are building on, and particularly what compiler & linker you are using
And what arguments do you pass to configure.
<snip>
So even though you are building with numactl, it seems to me like you don't have numa_bitmask_isbitset(). Can you check config.log to see if HAVE_NUMA_BITMASK_ISBITSET is defined to 1? If my guess is right, this causes us to not mock virNumaNodeIsAvailable() and therefore we run the original function which checks real host the build is ran on.
Or is this not the same as the issue with inline that was seen with clang before ?
Yeah, it looks quite similar to that one. By the way, clang doesn't do much inlining with -O0, I guess that could be similar in gcc, so it should be a quick check to see if that's a compiler problem. Roman Bogorodskiy

On 23 May 2015 at 18:14, Roman Bogorodskiy <bogorodskiy@gmail.com> wrote:
Daniel P. Berrange wrote:
On Fri, May 22, 2015 at 05:59:49PM +0200, Michal Privoznik wrote:
On 22.05.2015 16:39, Dimitri John Ledkov wrote:
On 22 May 2015 at 13:53, Michal Privoznik <mprivozn@redhat.com> wrote:
On 22.05.2015 14:18, Daniel P. Berrange wrote:
On Fri, May 22, 2015 at 01:13:40PM +0100, Dimitri John Ledkov wrote: > # VIR_TEST_VERBOSE=1 VIR_TEST_DEBUG=1 ./qemuxml2argvtest 2>&1 | grep NUMA > 61) QEMU XML-2-ARGV hugepages-pages > ... libvirt: error : unsupported configuration: NUMA node 1 is > unavailable > 64) QEMU XML-2-ARGV hugepages-shared > ... libvirt: error : unsupported configuration: NUMA node 1 is > unavailable > 331) QEMU XML-2-ARGV numatune-memnode > ... libvirt: error : unsupported configuration: NUMA node 1 is > unavailable > 333) QEMU XML-2-ARGV numatune-memnode-no-memory > ... libvirt: error : unsupported configuration: NUMA node 3 is > unavailable > 336) QEMU XML-2-ARGV numatune-auto-prefer > ... libvirt: error : unsupported configuration: NUMA node 1 is > unavailable > 449) QEMU XML-2-ARGV memory-hotplug-dimm > ... libvirt: error : unsupported configuration: NUMA node 1 is > unavailable > 450) QEMU XML-2-ARGV memory-hotplug-dimm-addr > ... libvirt: error : unsupported configuration: NUMA node 1 is > unavailable > > So the test fails, but I don't believe I'm compiling libvirt with > numad support... So I don't understand what is being asserted here.
Can you tell us more about what platform you are building on, and particularly what compiler & linker you are using
And what arguments do you pass to configure.
<snip>
So even though you are building with numactl, it seems to me like you don't have numa_bitmask_isbitset(). Can you check config.log to see if HAVE_NUMA_BITMASK_ISBITSET is defined to 1? If my guess is right, this causes us to not mock virNumaNodeIsAvailable() and therefore we run the original function which checks real host the build is ran on.
Or is this not the same as the issue with inline that was seen with clang before ?
Yeah, it looks quite similar to that one.
By the way, clang doesn't do much inlining with -O0, I guess that could be similar in gcc, so it should be a quick check to see if that's a compiler problem.
It appears to be caused by optimisation flag, specifically: export CFLAGS='-fno-semantic-interposition' ./configure --with-libvirtd --with-interface --with-numactl --with-test=yes && make clean; make -j4 V=1; make -C tests check -j4 V=1 fails, yet: export CFLAGS='-fsemantic-interposition' ./configure --with-libvirtd --with-interface --with-numactl --with-test=yes && make clean; make -j4 V=1; make -C tests check -j4 V=1 Passes with gcc-5.1. The docs for the flag are at: https://gcc.gnu.org/onlinedocs/gcc-5.1.0/gcc/Optimize-Options.html#index-fse... "...With -fno-semantic-interposition the compiler assumes that if interposition happens for functions the overwriting function will have precisely the same semantics (and side effects). Similarly if interposition happens for variables, the constructor of the variable will be the same. The flag has no effect for functions explicitly declared inline (where it is never allowed for interposition to change semantics) and for symbols explicitly declared weak." I will stop using "-fno-semantic-interposition" for now, but do you think this is something that could be fixed in either numactl and/or libvirt codebase? It is desirable to use -fno-semantic-interposition. -- Regards, Dimitri. Pura Vida! https://clearlinux.org Open Source Technology Center Intel Corporation (UK) Ltd. - Co. Reg. #1134945 - Pipers Way, Swindon SN3 1RJ.

On Tue, May 26, 2015 at 11:54:38AM +0100, Dimitri John Ledkov wrote:
On 23 May 2015 at 18:14, Roman Bogorodskiy <bogorodskiy@gmail.com> wrote:
Daniel P. Berrange wrote:
On Fri, May 22, 2015 at 05:59:49PM +0200, Michal Privoznik wrote:
On 22.05.2015 16:39, Dimitri John Ledkov wrote:
On 22 May 2015 at 13:53, Michal Privoznik <mprivozn@redhat.com> wrote:
On 22.05.2015 14:18, Daniel P. Berrange wrote: > On Fri, May 22, 2015 at 01:13:40PM +0100, Dimitri John Ledkov wrote: >> # VIR_TEST_VERBOSE=1 VIR_TEST_DEBUG=1 ./qemuxml2argvtest 2>&1 | grep NUMA >> 61) QEMU XML-2-ARGV hugepages-pages >> ... libvirt: error : unsupported configuration: NUMA node 1 is >> unavailable >> 64) QEMU XML-2-ARGV hugepages-shared >> ... libvirt: error : unsupported configuration: NUMA node 1 is >> unavailable >> 331) QEMU XML-2-ARGV numatune-memnode >> ... libvirt: error : unsupported configuration: NUMA node 1 is >> unavailable >> 333) QEMU XML-2-ARGV numatune-memnode-no-memory >> ... libvirt: error : unsupported configuration: NUMA node 3 is >> unavailable >> 336) QEMU XML-2-ARGV numatune-auto-prefer >> ... libvirt: error : unsupported configuration: NUMA node 1 is >> unavailable >> 449) QEMU XML-2-ARGV memory-hotplug-dimm >> ... libvirt: error : unsupported configuration: NUMA node 1 is >> unavailable >> 450) QEMU XML-2-ARGV memory-hotplug-dimm-addr >> ... libvirt: error : unsupported configuration: NUMA node 1 is >> unavailable >> >> So the test fails, but I don't believe I'm compiling libvirt with >> numad support... So I don't understand what is being asserted here. > > Can you tell us more about what platform you are building on, and > particularly what compiler & linker you are using
And what arguments do you pass to configure.
<snip>
So even though you are building with numactl, it seems to me like you don't have numa_bitmask_isbitset(). Can you check config.log to see if HAVE_NUMA_BITMASK_ISBITSET is defined to 1? If my guess is right, this causes us to not mock virNumaNodeIsAvailable() and therefore we run the original function which checks real host the build is ran on.
Or is this not the same as the issue with inline that was seen with clang before ?
Yeah, it looks quite similar to that one.
By the way, clang doesn't do much inlining with -O0, I guess that could be similar in gcc, so it should be a quick check to see if that's a compiler problem.
It appears to be caused by optimisation flag, specifically:
export CFLAGS='-fno-semantic-interposition' ./configure --with-libvirtd --with-interface --with-numactl --with-test=yes && make clean; make -j4 V=1; make -C tests check -j4 V=1
fails, yet:
export CFLAGS='-fsemantic-interposition' ./configure --with-libvirtd --with-interface --with-numactl --with-test=yes && make clean; make -j4 V=1; make -C tests check -j4 V=1
Passes with gcc-5.1.
The docs for the flag are at: https://gcc.gnu.org/onlinedocs/gcc-5.1.0/gcc/Optimize-Options.html#index-fse...
"...With -fno-semantic-interposition the compiler assumes that if interposition happens for functions the overwriting function will have precisely the same semantics (and side effects). Similarly if interposition happens for variables, the constructor of the variable will be the same. The flag has no effect for functions explicitly declared inline (where it is never allowed for interposition to change semantics) and for symbols explicitly declared weak."
I will stop using "-fno-semantic-interposition" for now, but do you think this is something that could be fixed in either numactl and/or libvirt codebase? It is desirable to use -fno-semantic-interposition.
To me, with limited understanding of compiler/linker internals, the docs are pretty unclear on what this -f flag is actually doing. I will say though, that the ability to have LD_PRELOADs which replace arbitrary libvirt functions is pretty critical to the way our unit test suite is designed. So if you want to continue using -fno-semantic-interposition then I think you'd just have to skip running the test suite with those builds. I imagine it would be fine to use this flag when doing production builds though, so you could simply skip it during development when you need todo testing. Regards, Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
participants (4)
-
Daniel P. Berrange
-
Dimitri John Ledkov
-
Michal Privoznik
-
Roman Bogorodskiy