VNC unix-domain socket unlink()ed prematurely
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
QEMU |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
With qemu 3.0.0 (I don't believe this happened with previous
versions), if I tell it `-vnc unix:/path/
unlink() that file when the first client disconnects, meaning that
once I disconnect, I can't ever reconnect without restarting the VM.
A stupid testcase demonstrating the issue:
In terminal A:
$ qemu-system-x86_64 -vnc unix:$PWD/vnc.sock
In terminal B:
$ ls vnc.sock
vnc.sock
$ socat STDIO UNIX-CONNECT:
RFB 003.008
$ ls vnc.sock
ls: cannot access 'vnc.sock': No such file or directory
I have determined that the offending unlink() call is the one in
io/channel-
introduced in commit d66f78e1eaa832f
first appeared in version 3.0.0.
This type of premature unlink() does not happen on monitor.sock with
`-monitor unix:/path/
I am not familiar enough with the QIO subsystem to suggest a fix that
fixes VNC, but preserves the QMP fix targeted in the offending commit.
Changed in qemu: | |
status: | Fix Committed → Fix Released |
This is still a problem with 3.1.0.