Hide Forgot
Created attachment 823237 [details] libvirtd.log in level 1 Description of problem: When I test it on perl-Sys-Virt with script #!/usr/bin/perl use warnings; use strict; use Sys::Virt; my $uri = "qemu:///system"; my $domname = "test"; my $con = Sys::Virt->new(address => $uri, readonly => 0); my $dom = $con->get_domain_by_name($domname); my $st = $con->new_stream(); $dom->screenshot($st, 0); $st->finish(); It will report error 2013-11-07 09:38:45.373+0000: 907: error : virFDStreamCloseInt:315 : internal error: I/O helper exited abnormally 2013-11-07 09:38:45.374+0000: 907: error : virFDStreamUpdateCallback:133 : internal error: stream is not open Version-Release number of selected component (if applicable): perl-Sys-Virt-1.1.1-2.el7.x86_64 kernel-3.10.0-26.el7.x86_64 qemu-kvm-rhev-1.5.3-16.el7.x86_64 libvirt-1.1.1-12.el7.x86_64 How reproducible: 100% Steps to Reproduce: 1. start a guest with name test 2. perl test.pl (content of test.pl show in description) 3. Actual results: report error 2013-11-07 09:38:45.373+0000: 907: error : virFDStreamCloseInt:315 : internal error: I/O helper exited abnormally 2013-11-07 09:38:45.374+0000: 907: error : virFDStreamUpdateCallback:133 : internal error: stream is not open Expected results: No error Additional info:
These log messages are in libvirtd, so not a perl client bug.
This is not a bug. First of all: you didn't specify where the stream data should go. Then: you need either to recv all data or abort the stream prior calling finish. So in fact your script needs to look like this: #!/usr/bin/perl use warnings; use strict; use Sys::Virt; my $f = shift @ARGV; my $uri = "qemu:///system"; my $domname = "gentoo"; my $con = Sys::Virt->new(address => $uri, readonly => 0); my $dom = $con->get_domain_by_name($domname); my $st = $con->new_stream(); open FILE, ">$f" or die "cannot create $f: $!"; sub foo { my $st = shift; my $data = shift; my $nbytes = shift; return syswrite FILE, $data, $nbytes; }; $dom->screenshot($st, 0); $st->recv_all(\&foo); $st->finish();