[libvirt] [PATCH] Do not inline virNumaNodeIsAvailable

Ján Tomko jtomko at redhat.com
Tue Mar 10 13:27:44 UTC 2015


On Tue, Mar 10, 2015 at 01:45:38PM +0100, Martin Kletzander wrote:
> On Tue, Mar 10, 2015 at 12:24:03PM +0000, Daniel P. Berrange wrote:
> >On Tue, Mar 10, 2015 at 01:05:22PM +0100, Ján Tomko wrote:
> >> These are the failing qemuxml2argvtest cases:
> >> 60) QEMU XML-2-ARGV hugepages-pages
> >> ... libvirt:  error : internal error: NUMA node 1 is unavailable
> >> 63) QEMU XML-2-ARGV hugepages-shared
> >> ... libvirt:  error : internal error: NUMA node 1 is unavailable
> >> 324) QEMU XML-2-ARGV numatune-memnode
> >> ... libvirt:  error : internal error: NUMA node 1 is unavailable
> >> 326) QEMU XML-2-ARGV numatune-memnode-no-memory
> >> ... libvirt:  error : internal error: NUMA node 3 is unavailable
> >> 329) QEMU XML-2-ARGV numatune-auto-prefer
> >> ... libvirt:  error : internal error: NUMA node 1 is unavailable
> >>
> >> So with 4 fake nodes, the tests could still pass even if the function is
> >> not mocked. Try changing the nodeset in #326 to 4 if it fails.
> >>
> 
> I tried changing that, it fails.  I tried adjusting the tests to more
> nodes, it fails.  After adjusting the mock function again, it works.
> So it gets mocked all the time, but I know where the difference is,
> probably.  Try building with -O0, it will probably disable the
> inlining.  However, if that's the case, I believe it's still clang's
> fault since they don't document inlining functions without the
> "inline" keyword just because you optimize.
> 

-O0 does disable the inlining, but introduces the stack size warning.

> >> >
> >> > >> [1] https://gcc.gnu.org/onlinedocs/gcc/Inline.html
> >> > >> [2] http://clang.llvm.org/compatibility.html
> >> > >>
> >> > >> >>---
> >> > >> >>This only leaves the mysterious check-protocol failure.
> >> > >>
> >> > >> That's not that mysterious, it's just that we check the order and
> >> > >> clang sorts enums before structs, but gcc doesn't.  Also clang adds
> >> > >> "public:" to structs, so it probably treats it as a C++ or C# structs
> >> > >> or something?
> >> > >>
> >> >
> >> > By the way if I compile with clang with -std=gnu11 or -std=gnu99, the
> >> > "public:" stuff is gone :)
> >> >
> >>
> >> It is mysterious, because it doesn't fail consistently.
> 
> Oh, it does fail all the time for me.

Did I mistakenly build with gcc to fix it?

> 
> >> It was working for me after I tried it again after
> >> 'git clean -fxd', today it failed again (though I don't remember if I
> >> ran autogen again).
> >
> >How exactly are you running the build with clang ? Are you just doing
> >this
> >
> >  CC=clang ./autogen.sh && make && make check
> >
> >Or is there more to it than that ?
> >

./autogen.sh --system --without-driver-modules CC="clang" && make -j5
check

Now it failed two times in a row, and once without parallel make. I have
no idea what I did back then that fixed it.

Jan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20150310/351c9e34/attachment-0001.sig>


More information about the libvir-list mailing list