8.0.0rc0 Regression: spicy windows doesn't open
Host environment
- Operating system: Windows 10 22H2, Msys2/Mingw64
- OS/kernel version: 19045.2728
- Architecture: x86_64
- QEMU flavor: qemu-system-x86_64
- QEMU version: QEMU emulator version 7.2.50 (v7.2.0-2637-gabe34282) - according to
git bisect - QEMU command line:
qemu-system-x86_64 -m 1536 -vga qxl -spice port=5905,addr=127.0.0.1,disable-ticketing=on -cdrom openSUSE-Leap-15.3-GNOME-Live-x86_64-Media.iso
Emulated/Virtualized environment
- Operating system: openSUSE-Leap-15.3
- OS/kernel version: not yet started
- Architecture: x86_64
Description of problem
Soon after start the qemu process outputs
qemu-system-x86_64.exe: fd=900 is not a socket, AIO implementation is missing
qemu-system-x86_64.exe: fd=800 is not a socket, AIO implementation is missing
On connecting with spicy -h localhost -p 5905 --spice-debug spicy stops progress after writing this line
(spicy.exe:5584): GSpice-DEBUG: 18:43:54.406: ../spice-gtk-0.42/src/spice-channel.c:1415 main-1:0: channel type 1 id 0 num common caps 1 num caps 1
Steps to reproduce
- Start qemu with
qemu-system-x86_64 -m 1536 -vga qxl -spice port=5905,addr=127.0.0.1,disable-ticketing=on -cdrom openSUSE-Leap-15.3-GNOME-Live-x86_64-Media.isoin first MSYS2 MinGW64 terminal - Start spice with
spicy -h localhost -p 5905 --spice-debugin second MSYS2 MinGW64 terminal
Additional information
Final output of git bisect
abe34282b088499f4e86fff9bb6d6dafd57ae1d0 is the first bad commit
commit abe34282b088499f4e86fff9bb6d6dafd57ae1d0
Author: Marc-André Lureau <marcandre.lureau@redhat.com>
Date: Tue Feb 21 16:47:59 2023 +0400
win32: avoid mixing SOCKET and file descriptor space
Until now, a win32 SOCKET handle is often cast to an int file
descriptor, as this is what other OS use for sockets. When necessary,
QEMU eventually queries whether it's a socket with the help of
fd_is_socket(). However, there is no guarantee of conflict between the
fd and SOCKET space. Such conflict would have surprising consequences,
we shouldn't mix them.
Also, it is often forgotten that SOCKET must be closed with
closesocket(), and not close().
Instead, let's make the win32 socket wrapper functions return and take a
file descriptor, and let util/ wrappers do the fd/SOCKET conversion as
necessary. A bit of adaptation is necessary in io/ as well.
Unfortunately, we can't drop closesocket() usage, despite
_open_osfhandle() documentation claiming transfer of ownership, testing
shows bad behaviour if you forget to call closesocket().
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Stefan Berger <stefanb@linux.ibm.com>
Message-Id: <20230221124802.4103554-15-marcandre.lureau@redhat.com>
include/sysemu/os-win32.h | 4 +-
io/channel-watch.c | 6 +-
util/aio-win32.c | 9 +-
util/oslib-win32.c | 219 +++++++++++++++++++++++++++++++++++++++-------
4 files changed, 197 insertions(+), 41 deletions(-)
Complete spicy output
$ spicy -h localhost -p 5905 --spice-debug
(spicy.exe:5584): GSpice-DEBUG: 18:43:52.890: ../spice-gtk-0.42/src/spice-session.c:288 New session (compiled from package spice-gtk 0.42)
(spicy.exe:5584): GSpice-DEBUG: 18:43:53.872: ../spice-gtk-0.42/src/spice-session.c:292 Supported channels: main, display, inputs, cursor, playback, record, smartcard, usbredir, webdav
(spicy.exe:5584): GSpice-WARNING **: 18:43:53.877: SpiceSession:gl-scanout is only available on Unix
(spicy.exe:5584): GSpice-WARNING **: 18:43:53.881: UsbDk driver is not installed
(spicy.exe:5584): GSpice-DEBUG: 18:43:53.908: ../spice-gtk-0.42/src/usb-device-manager.c:393 auto-connect filter set to 0x03,-1,-1,-1,0|-1,-1,-1,-1,1
(spicy.exe:5584): GSpice-DEBUG: 18:43:53.913: ../spice-gtk-0.42/src/usb-backend.c:440 spice_usb_backend_new >>
(spicy.exe:5584): GSpice-DEBUG: 18:43:53.918: ../spice-gtk-0.42/src/usb-backend.c:462 spice_usb_backend_new <<
(spicy.exe:5584): GSpice-DEBUG: 18:43:53.995: ../spice-gtk-0.42/src/usb-backend.c:207 adding 04F2:B43C at 1:1
(spicy.exe:5584): GSpice-DEBUG: 18:43:53.998: ../spice-gtk-0.42/src/usb-backend.c:207 adding 8086:8C26 at 3:0
(spicy.exe:5584): GSpice-DEBUG: 18:43:54.000: ../spice-gtk-0.42/src/usb-backend.c:207 adding 8086:8C2D at 1:0
(spicy.exe:5584): GSpice-DEBUG: 18:43:54.003: ../spice-gtk-0.42/src/usb-backend.c:207 adding 0BDA:B728 at 1:4
(spicy.exe:5584): GSpice-DEBUG: 18:43:54.006: ../spice-gtk-0.42/src/usb-backend.c:158 created dev 00000148d2a9e280, usblib dev 00000148d27a2590
(spicy.exe:5584): GSpice-DEBUG: 18:43:54.010: ../spice-gtk-0.42/src/usb-backend.c:207 adding 8086:8C31 at 2:0
(spicy.exe:5584): GSpice-DEBUG: 18:43:54.014: ../spice-gtk-0.42/src/usb-backend.c:207 adding 05E3:0608 at 3:5
(spicy.exe:5584): GSpice-DEBUG: 18:43:54.017: ../spice-gtk-0.42/src/usb-backend.c:207 adding 8087:8008 at 1:5
(spicy.exe:5584): GSpice-DEBUG: 18:43:54.020: ../spice-gtk-0.42/src/usb-backend.c:207 adding 0BDA:0129 at 1:3
(spicy.exe:5584): GSpice-DEBUG: 18:43:54.023: ../spice-gtk-0.42/src/usb-backend.c:158 created dev 00000148d2a9e140, usblib dev 00000148d27a2b30
(spicy.exe:5584): GSpice-DEBUG: 18:43:54.027: ../spice-gtk-0.42/src/usb-backend.c:207 adding 8087:8000 at 3:4
(spicy.exe:5584): GSpice-DEBUG: 18:43:54.030: ../spice-gtk-0.42/src/usb-backend.c:207 adding 045E:00DB at 3:1
(spicy.exe:5584): GSpice-DEBUG: 18:43:54.033: ../spice-gtk-0.42/src/usb-backend.c:207 adding 17EF:6019 at 3:2
(spicy.exe:5584): GSpice-DEBUG: 18:43:54.035: ../spice-gtk-0.42/src/usb-backend.c:158 created dev 00000148d2a9e190, usblib dev 00000148d27a5460
(spicy.exe:5584): GSpice-DEBUG: 18:43:54.074: ../spice-gtk-0.42/tools/spicy.c:1881 connection_new (1)
(spicy.exe:5584): GSpice-DEBUG: 18:43:54.074: ../spice-gtk-0.42/src/usb-backend.c:469 handle_libusb_events >>
(spicy.exe:5584): GSpice-DEBUG: 18:43:54.081: ../spice-gtk-0.42/src/spice-session.c:1835 no migration in progress
Spice-INFO: 18:43:54.086: ../spice-gtk-0.42/src/channel-main.c:342:spice_main_set_property: SpiceMainChannel::color-depth has been deprecated. Property is ignored
(spicy.exe:5584): GSpice-DEBUG: 18:43:54.090: ../spice-gtk-0.42/src/spice-channel.c:142 main-1:0: spice_channel_constructed
(spicy.exe:5584): GSpice-DEBUG: 18:43:54.093: ../spice-gtk-0.42/src/spice-session.c:2330 main-1:0: new main channel, switching
(spicy.exe:5584): GSpice-DEBUG: 18:43:54.097: ../spice-gtk-0.42/tools/spicy.c:1758 new channel (#0)
(spicy.exe:5584): GSpice-DEBUG: 18:43:54.099: ../spice-gtk-0.42/tools/spicy.c:1761 new main channel
(spicy.exe:5584): GSpice-DEBUG: 18:43:54.102: ../spice-gtk-0.42/src/usb-device-manager.c:800 device added 0bda:b728 (00000148d2a9e280)
(spicy.exe:5584): GSpice-DEBUG: 18:43:54.105: ../spice-gtk-0.42/src/usb-device-manager.c:800 device added 0bda:0129 (00000148d2a9e140)
(spicy.exe:5584): GSpice-DEBUG: 18:43:54.108: ../spice-gtk-0.42/src/usb-device-manager.c:800 device added 17ef:6019 (00000148d2a9e190)
(spicy.exe:5584): GSpice-DEBUG: 18:43:54.113: ../spice-gtk-0.42/src/spice-channel.c:2763 main-1:0: Open coroutine starting 00000148d2a403f0
(spicy.exe:5584): GSpice-DEBUG: 18:43:54.116: ../spice-gtk-0.42/src/spice-channel.c:2587 main-1:0: Started background coroutine 00000148d2a402b0
(spicy.exe:5584): GSpice-DEBUG: 18:43:54.120: ../spice-gtk-0.42/src/spice-session.c:2267 main-1:0: Using plain text, port 5905
(spicy.exe:5584): GSpice-DEBUG: 18:43:54.124: ../spice-gtk-0.42/src/spice-session.c:2198 open host localhost:5905
(spicy.exe:5584): GSpice-DEBUG: 18:43:54.136: ../spice-gtk-0.42/src/spice-session.c:2120 main-1:0: connecting 000000010f1ffc90...
(spicy.exe:5584): GSpice-DEBUG: 18:43:54.402: ../spice-gtk-0.42/src/spice-session.c:2104 main-1:0: connect ready
(spicy.exe:5584): GSpice-DEBUG: 18:43:54.406: ../spice-gtk-0.42/src/spice-channel.c:1415 main-1:0: channel type 1 id 0 num common caps 1 num caps 1
Edited by Helge Konetzka