[libvirt] Cannot write data: Broken pipe when accesing libvirt from a forked process

Josef Stribny jstribny at redhat.com
Wed Sep 30 11:06:48 UTC 2015


Hi all,

I am trying to add vagrant-libvirt support for landrush plugin[0] and 
found out that libvirt fails for me with:


Call to virConnectNumOfNetworks failed: Cannot write data: Broken pipe 
(Libvirt::RetrieveError)

I created a minimal reproducer that causes this:

```
#!/usr/bin/ruby
require 'libvirt'

conn = Libvirt::open("qemu:///system")

fork do
  puts conn.list_networks
end

puts conn.list_networks
```

This works just fine on my host, but fails on my virtualized guest 
(when using nested KVM). The journal shows
the following lines in logs:

Failed to acquire pid file '/run/user/1001/libvirt/libvirtd.pid': 
Resource temporarily unavailable

So the forked process here tries to access not-existing libvirtd pid 
file for root (1001 on the VM).

Is this a feature/bug? How can one avoid it?

Thanks everyone
Josef


[0] https://github.com/phinze/landrush/pull/124
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20150930/2ccf680c/attachment-0001.htm>


More information about the libvir-list mailing list