Find the root reason: qio_channel_write is going to write 290124 data, but only wrote 238644, and for the next write 51489, it returned error, then trigger vnc_client_io_error and disconnect socket.
ssize_t vnc_client_write_buf(VncState *vs, const uint8_t *data, size_t datalen) { Error *err = NULL; ssize_t ret; ret = qio_channel_write( vs->ioc, (const char *)data, datalen, &err); VNC_DEBUG("Wrote wire %p %zd -> %ld\n", data, datalen, ret); return vnc_client_io_error(vs, ret, &err); } // log file Write Plain: Pending output 0x5579e6bd2c60 size 524288 offset 290124. Wait SSF 0 32760@1493228975.268871:object_class_dynamic_cast_assert qio-channel-socket->qio-channel (io/channel.c:60:qio_channel_writev_full) 32760@1493228975.268876:object_dynamic_cast_assert qio-channel-socket->qio-channel-socket (io/channel-socket.c:508:qio_channel_socket_writev) Wrote wire 0x5579e6bd2c60 290124 -> 290124 Write Plain: Pending output 0x5579e6bd2c60 size 524288 offset 290124. Wait SSF 0 32760@1493228975.731842:object_class_dynamic_cast_assert qio-channel-socket->qio-channel (io/channel.c:60:qio_channel_writev_full) 32760@1493228975.731846:object_dynamic_cast_assert qio-channel-socket->qio-channel-socket (io/channel-socket.c:508:qio_channel_socket_writev) Wrote wire 0x5579e6bd2c60 290124 -> 238644 Write Plain: Pending output 0x5579e6bd2c60 size 65536 offset 51480. Wait SSF 0 32760@1493228975.731934:object_class_dynamic_cast_assert qio-channel-socket->qio-channel (io/channel.c:60:qio_channel_writev_full) 32760@1493228975.731937:object_dynamic_cast_assert qio-channel-socket->qio-channel-socket (io/channel-socket.c:508:qio_channel_socket_writev) Wrote wire 0x5579e6bd2c60 51480 -> -2 vnc_set_share_mode/0x5579e7b6d730: shared -> disconnected ** Changed in: qemu Assignee: (unassigned) => leon (liayan) -- You received this bug notification because you are a member of qemu- devel-ml, which is subscribed to QEMU. https://bugs.launchpad.net/bugs/1686390 Title: vnc server closed socket after arrow "down" keyevent Status in QEMU: New Bug description: This is a rewrite for https://bugs.launchpad.net/qemu/+bug/1670377 QEMU 2.6 or later tigervncviwer 1.6 Once get into grub boot interface(choose boot os, or recovery mode), keep holding press arrow down button for a while(no release), qemu will close the connection, vnc used zrle mode. Interesting place: 1. when stopped at grub interface, only arrow up and down key could trigger it, 2. only in zrle or tight mode, could work well in raw mode 2. it only triggered by remote connection, not happen if local vncviewer and vnc server A trace is attached. Thanks To manage notifications about this bug go to: https://bugs.launchpad.net/qemu/+bug/1686390/+subscriptions