On 03/15/2013 10:16 AM, Gene Czarcinski wrote:
On 03/15/2013 11:38 AM, Eric Blake wrote:
> On 03/15/2013 07:48 AM, Gene Czarcinski wrote:
>> One of the libvirt tests (conftest) has been segfaulting for some time
>> with no indication of a test failure other than a message in syslog. I
>> verified this by building libvirt-1.0.3-1 with mock.
> Generally, this is not an issue. Autoconf tests INTENTIONALLY try to
> probe for broken systems, in order to work around brokenness, so a
> segfaulting conftest during ./configure just says that things are
> probing as expected. About the only thing that could be done to avoid a
> segfault during ./configure is fixing the underlying broken system that
> the probe was detecting in the first place, but that's more likely to be
> a glibc or kernel fix, not a libvirt fix.
>
Isn't it a bit strange that it is broken under v1.0.3-maint but not
under v1.0.2-maint? The underlying system is the same.
It's not broken. If instead you mean, "Isn't it strange that a
configure triggers a conftest segfault under v1.0.3-maint but not under
v1.0.2-maint?", the answer is no, it's not strange - v1.0.3 has more
probes entered into than v1.0.2, so the new segfault is probably due to
one of those added probes.
Knowing WHICH configure.ac probe is segfaulting might be nice, for
diagnosing why it is faulting and where to send a bug report upstream.
For example, if the bug is in glibc, then fixing glibc to not segfault
will fix every program that relies on glibc without probing for the bug
- but it will have no difference to libvirt which is already prepared to
work around the glibc bug.
Look through the config.log of your 1.0.3 build to see if it you can
quickly spot a test that failed with a segfault. There's a wealth of
information in that file (maybe as simple as finding the string '$? =
139' or a message about a SEGV). But again, a segfault of conftest
during configure is NORMAL, and nothing to panic about - it means that
the package is PROPERLY going to avoid tickling that bug later on when
the package is compiled.
In fact, just in typing that, I though of at least one glibc CVE bug in
re_compile_pattern, that still has not been fixed as of the glibc
currently in Fedora 18. Furthermore, I know that this bug was reported
only recently, and that the version of gnulib used in v1.0.2 did not
check for this bug, while the version in v1.0.3 does (see libvirt commit
d09949e29 for where I updated to newer gnulib, precisely to work around
that glibc CVE). So sure enough, I looked through my config.log and found:
configure:31277: checking for working re_compile_pattern
configure:31456: gcc -std=gnu99 -o conftest -g conftest.c >&5
configure:31456: $? = 0
configure:31456: ./conftest
*** glibc detected *** ./conftest: malloc(): memory corruption:
0x0000000000b31fc0 ***
./configure: line 3528: 15097 Segmentation fault (core dumped)
./conftest$ac_exeext
configure:31456: $? = 139
configure: program exited with status 139
Libvirt is immune to that bug, but the CVE still affects other glibc
clients that use re_compile_pattern without being aware of the problems,
so you may want to put some pressure on the right people to fix
https://bugzilla.redhat.com/show_bug.cgi?id=905877.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org