libvirt/tests
Eric Blake d51023d4c2 qemu: fix restoring a compressed save image
Latent bug introduced in commit 2d6a581960 (Aug 2009), but not exposed
until commit 1859939a (Jan 2011).  Basically, when virExec creates a
pipe, it always marks libvirt's side as cloexec.  If libvirt then
wants to hand that pipe to another child process, things work great if
the fd is dup2()'d onto stdin or stdout (as with stdin: or exec:
migration), but if the pipe is instead used as-is (such as with fd:
migration) then qemu sees EBADF because the fd was closed at exec().

This is a minimal fix for the problem at hand; it is slightly racy,
but no more racy than the rest of libvirt fd handling, including the
case of uncompressed save images.  A more invasive fix, but ultimately
safer at avoiding leaking unintended fds, would be to _always and
atomically_ open all fds as cloexec in libvirt (thanks to primitives
like open(O_CLOEXEC), pipe2(), accept4(), ...), then teach virExec to
clear that bit for all fds explicitly marked to be handed to the child
only after forking.

* src/qemu/qemu_command.c (qemuBuildCommandLine): Clear cloexec
flag.
* tests/qemuxml2argvtest.c (testCompareXMLToArgvFiles): Tweak test.
2011-03-28 10:26:32 -06:00
..
capabilityschemadata Add a more featureful qemu capabilities test data 2009-09-10 12:25:42 +01:00
commanddata maint: improve tests distribution 2010-12-17 11:57:11 -07:00
confdata maint: improve tests distribution 2010-12-17 11:57:11 -07:00
cputestdata tests: Add unit tests for internal CPU APIs 2010-12-01 14:12:54 +01:00
domainschemadata schema: Move timer element inside clock 2010-11-09 15:35:43 +01:00
domainsnapshotxml2xmlin Domain snapshot RNG and tests. 2010-05-20 13:50:03 -04:00
domainsnapshotxml2xmlout Domain snapshot RNG and tests. 2010-05-20 13:50:03 -04:00
interfaceschemadata Update interface.rng and xml test files to match netcf 0.1.5 2010-01-19 21:13:03 +01:00
networkxml2xmlin Give each virtual network bridge its own fixed MAC address 2011-02-17 13:36:32 -05:00
networkxml2xmlout Give each virtual network bridge its own fixed MAC address 2011-02-17 13:36:32 -05:00
nodedevschemadata nodedev: Add removable storage 'media_label' prop 2009-12-14 14:58:23 +01:00
nodeinfodata Get thread and socket information in virsh nodeinfo. 2010-03-08 09:26:04 -05:00
nwfilterxml2xmlin nwfilter: Add test case for testing the state attribute 2010-10-07 06:43:35 -04:00
nwfilterxml2xmlout nwfilter: Add test case for testing the state attribute 2010-10-07 06:43:35 -04:00
qemuhelpdata Add txmode attribute to interface XML for virtio backend 2011-02-17 11:07:58 -05:00
qemuxml2argvdata qemu: Support vram for video of qxl type 2011-03-06 22:00:27 +08:00
qemuxml2xmloutdata Add VIR_DIV_UP to divide memory or storage request sizes with round up 2011-01-29 00:42:10 +01:00
sexpr2xmldata maint: avoid long lines in more tests 2011-03-03 07:45:31 -07:00
storagepoolxml2xmlin storage: add support for Vendor and Model in XML 2010-08-19 15:58:43 -06:00
storagepoolxml2xmlout storage: add support for Vendor and Model in XML 2010-08-19 15:58:43 -06:00
storagevolxml2xmlin tests: Add storage volume XML 2 XML tests. 2009-10-16 10:52:27 -04:00
storagevolxml2xmlout tests: Add storage volume XML 2 XML tests. 2009-10-16 10:52:27 -04:00
vmx2xmldata vmx: Add support for video device VRAM size 2011-01-06 18:18:35 +01:00
xencapsdata maint: improve tests distribution 2010-12-17 11:57:11 -07:00
xmconfigdata Add support for multiple serial ports into the Xen driver 2011-02-25 11:33:27 -07:00
xml2sexprdata maint: avoid long lines in more tests 2011-03-03 07:45:31 -07:00
xml2vmxdata vmx: Add support for video device VRAM size 2011-01-06 18:18:35 +01:00
.gitignore Introduce new APIs for spawning processes 2010-12-02 16:00:44 -07:00
.valgrind.supp Supress annoying libcap-ng errors from valgrind 2009-11-26 12:07:17 +00:00
Makefile.am Move event code out of the daemon/ into src/util/ 2011-03-07 14:16:13 +00:00
capabilityschematest Make test suite output less verbose 2010-01-15 16:28:05 +00:00
commandhelper.c commandtest: avoid printing loader-control variables from commandhelper 2011-01-06 14:21:17 -07:00
commandtest.c command: add virCommandAbort for cleanup paths 2011-03-25 05:34:48 -06:00
conftest.c avoid calling exit with a constant; use EXIT_* instead 2009-12-15 17:46:04 +01:00
cpuset tests: use GPLv2+, not GPLv3 2010-05-12 08:41:10 +02:00
cputest.c tests: Add unit tests for internal CPU APIs 2010-12-01 14:12:54 +01:00
daemon-conf tests: fix daemon-conf testing failure 2010-11-03 11:43:11 +01:00
define-dev-segfault domain conf: Track <console> target type 2010-07-28 16:47:59 -04:00
domainschematest tests: Test qemuxml2xml when expected xml changes 2010-07-28 16:47:56 -04:00
domainsnapshotschematest Domain snapshot RNG and tests. 2010-05-20 13:50:03 -04:00
esxutilstest.c esx: Move VMX handling code out of the driver directory 2010-12-21 22:40:17 +01:00
eventtest.c Move event code out of the daemon/ into src/util/ 2011-03-07 14:16:13 +00:00
int-overflow tests: don't alter state in $HOME 2011-03-28 09:55:46 -06:00
interfaceschematest Make test suite output less verbose 2010-01-15 16:28:05 +00:00
interfacexml2xmltest.c Remove virConnectPtr from interface XML APIs 2010-02-10 13:32:48 +00:00
libvirtd-fail Fix up "make check" 2009-10-07 12:18:13 +02:00
libvirtd-pool Fix up "make check" 2009-10-07 12:18:13 +02:00
networkschematest Make test suite output less verbose 2010-01-15 16:28:05 +00:00
networkxml2xmltest.c Remove virConnectPtr from network XML APis 2010-02-10 13:31:28 +00:00
nodedevschematest Make test suite output less verbose 2010-01-15 16:28:05 +00:00
nodedevxml2xmltest.c Remove virConnectPtr from all node device XML APIs 2010-02-10 13:32:01 +00:00
nodeinfotest.c tests: avoid spurious failure of nodeinfotest 2010-12-20 10:31:40 -07:00
nwfilterschematest nwfilter: Add filter schema for nwfilter XML, extend domain XML schema 2010-04-06 11:09:46 -04:00
nwfilterxml2xmltest.c Put <stdbool.h> into internal.h so it is available everywhere 2011-02-24 12:04:06 +00:00
object-locking.ml build: import latest gnulib 2010-04-02 10:18:55 -06:00
oomtrace.pl Generic test suite helpers for OOM testing 2008-05-29 15:21:45 +00:00
qemuargv2xmltest.c Put <stdbool.h> into internal.h so it is available everywhere 2011-02-24 12:04:06 +00:00
qemuhelptest.c qemu: Support vram for video of qxl type 2011-03-06 22:00:27 +08:00
qemuxml2argvtest.c qemu: fix restoring a compressed save image 2011-03-28 10:26:32 -06:00
qemuxml2xmltest.c qemu: Support vram for video of qxl type 2011-03-06 22:00:27 +08:00
qparamtest.c build: enable redundant-const check 2009-02-03 13:08:59 +00:00
read-bufsiz build: use portable sed expressions 2010-09-14 08:42:10 -06:00
read-non-seekable tests: use GPLv2+, not GPLv3 2010-05-12 08:41:10 +02:00
reconnect.c avoid calling exit with a constant; use EXIT_* instead 2009-12-15 17:46:04 +01:00
schematestutils.sh schematestutils.sh: improve shell portability: avoid "echo -e" 2010-04-14 17:34:12 +02:00
seclabeltest.c Refactor the security drivers to simplify usage 2011-01-10 18:10:52 +00:00
sexpr2xmltest.c Add support for multiple serial ports into the Xen driver 2011-02-25 11:33:27 -07:00
sockettest.c Add test suite for virSocket APIs 2010-10-22 11:59:37 +01:00
start tests: use GPLv2+, not GPLv3 2010-05-12 08:41:10 +02:00
statstest.c Fix statstest when driver modules are enabled 2010-10-19 17:31:30 +01:00
storagepoolschematest Make test suite output less verbose 2010-01-15 16:28:05 +00:00
storagepoolxml2xmltest.c storage: add support for Vendor and Model in XML 2010-08-19 15:58:43 -06:00
storagevolschematest Make test suite output less verbose 2010-01-15 16:28:05 +00:00
storagevolxml2xmltest.c Remove virConnectPtr from storage APIs & driver 2010-02-10 13:32:11 +00:00
test-lib.sh build: don't use "test cond1 -o cond2": it's not portable 2010-03-25 09:28:24 +01:00
test_conf.sh Make test suite output less verbose 2010-01-15 16:28:05 +00:00
testutils.c tests: handle backspace-newline pairs in test input files 2011-01-31 11:25:34 -07:00
testutils.h tests: silence qemuargv2xmltest noise 2010-09-16 10:45:33 -06:00
testutilsqemu.c tests: Fake host capabilities properly 2011-02-15 22:51:37 +01:00
testutilsqemu.h remove all trailing blank lines 2009-07-16 15:06:42 +02:00
testutilsxen.c Fix crashes in Xen capabilities code 2009-07-27 16:45:01 +01:00
testutilsxen.h remove all trailing blank lines 2009-07-16 15:06:42 +02:00
undefine tests: use GPLv2+, not GPLv3 2010-05-12 08:41:10 +02:00
vcpupin tests: use GPLv2+, not GPLv3 2010-05-12 08:41:10 +02:00
virbuftest.c tests: Fix preprocessor indentation 2010-09-13 13:35:04 +02:00
virsh-all tests: use GPLv2+, not GPLv3 2010-05-12 08:41:10 +02:00
virsh-schedinfo tests: use GPLv2+, not GPLv3 2010-05-12 08:41:10 +02:00
virsh-synopsis tests: use GPLv2+, not GPLv3 2010-05-12 08:41:10 +02:00
virshtest.c virsh: add tests for recent cli improvements 2010-10-15 14:25:39 -06:00
virt-aa-helper-test virt-aa-helper-test cleanups 2010-09-30 15:01:36 -06:00
vmx2xmltest.c vmx: Add support for video device VRAM size 2011-01-06 18:18:35 +01:00
xencapstest.c deprecate fclose() and introduce VIR_{FORCE_}FCLOSE() 2010-11-16 21:13:29 -05:00
xmconfigtest.c Add support for multiple serial ports into the Xen driver 2011-02-25 11:33:27 -07:00
xml2sexprtest.c Add support for multiple serial ports into the Xen driver 2011-02-25 11:33:27 -07:00
xml2vmxtest.c vmx: Add support for video device VRAM size 2011-01-06 18:18:35 +01:00