On Tue, May 26, 2015 at 11:54:38AM +0100, Dimitri John Ledkov wrote: > On 23 May 2015 at 18:14, Roman Bogorodskiy <bogorodskiy@xxxxxxxxx> 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@xxxxxxxxxx> 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-fsemantic-interposition-972 > > "...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 :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list