[libvirt] [PATCH] tests: avoid test failure on rawhide gnutls

Daniel P. Berrange berrange at redhat.com
Sun Jan 8 16:55:20 UTC 2012


On Fri, Jan 06, 2012 at 02:27:42PM -0700, Eric Blake wrote:
> I hit a VERY weird testsuite failure on rawhide, which included
> _binary_ output to stderr, followed by a hang waiting for me
> to type something! (Here, using ^@ for NUL):
> 
> $ ./commandtest
> TEST: commandtest
>       WARNING: gnome-keyring:: couldn't send data: Bad file descriptor
> .WARNING: gnome-keyring:: couldn't send data: Bad file descriptor
> .WARNING: gnome-keyring:: couldn't send data: Bad file descriptor
> WARNING: gnome-keyring:: couldn't send data: Bad file descriptor
> .8^@^@^@8^@^@^@^A^@^@^@^Bay^A^@^@^@)PRIVATE-GNOME-KEYRING-PKCS11-PROTOCOL-V-1
> 
> I finally traced it to the fact that gnome-keyring, called via
> gnutls_global_init which is turn called by virNetTLSInit, opens
> an internal fd that it expects to communicate to via a
> pthread_atfork handler (never mind that it violates POSIX by
> using non-async-signal-safe functions in that handler:
> https://bugzilla.redhat.com/show_bug.cgi?id=772320).
> 
> Our problem stems from the fact that we pulled the rug out from
> under the library's expectations by closing an fd that it had
> just opened.  While we aren't responsible for fixing the bugs
> in that pthread_atfork handler, we can at least avoid the bugs
> by not closing the fd in the first place.
> 
> * tests/commandtest.c (mymain): Avoid closing fds that were opened
> by virInitialize.
> ---
> 
> Pushing under the build-breaker rule.  It cost me the better part of
> a morning to track this one down, so I left a super-long comment
> to help the next person to read the file understand what we're
> fighting against.

ACK, nasty one to debug !

Daniel




More information about the libvir-list mailing list