Commit 2ed6cc7bec41dd344d41ea1531f6760c93099128 "Expose event loop implementation as a public API" turned a failure to initialize the default event loop into a fatal error in virsh on Windows. Before that commit such a failure was ignored. virEventRegisterDefaultImpl calls virEventPollInit that calls virSetNonBlock that calls ioctl that is replaced by gnulib and calls ioctlsocket. ioctlsocket fails because the given FD is a pipe but ioctlsocket expects a socket. A version that works on pipes on Windows looks like this. Although the pipe is actually not a named pipe the call to SetNamedPipeHandleState doesn't fail at least. int virSetPipeNonBlock(int fd) { DWORD mode = PIPE_NOWAIT; HANDLE handle = _get_osfhandle(fd) BOOL result = SetNamedPipeHandleState(handle, &mode, NULL, NULL); return result ? 0 : -1; } So, is the event loop stuff supposed to work on Windows at all and we should get it fixed? Or do we just put an #ifndef WIN32 around virEventRegisterDefaultImpl in virsh, because the only event loop user in virsh is the console command that is disabled on Windows anyway? Matthias -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list