Hi Daniel, This commit ("char: convert from GIOChannel to QIOChannel"): https://github.com/qemu/qemu/commit/9894dc0cdcc397ee5b26370bc53da6d360a363c2 ... appears to have broken socket events for character devices on Win32. For example, I can no longer connect to a GDB stub (started with: "-gdb tcp:127.0.0.1:1234"), since tcp_chr_accept is never called.
Without having looked very closely at the code, I suspect the problem may be that we've lost the special-case treatment of socket handles as distinct from file descriptors on Win32 (they are different namespaces, and different APIs are needed). The previous version of qemu-char.c special-cased sockets in io_channel_from_socket(): -#ifdef _WIN32 - chan = g_io_channel_win32_new_socket(fd); -#else - chan = g_io_channel_unix_new(fd); -#endif ... but I don't see anything equivalent in io/channel-socket.c. Am I looking in the wrong place? BTW, The same change introduces another problem on win32: server sockets like the GDB example above fail on getpeername() with "Unable to query remote socket address: Unknown error". This seems to be caused by a definition of ENOTCONN that is not WSAENOTCONN. I'm still trying to figure out why that is, and how to best fix it. Regards, Andrew