diff options
author | Corentin Chary <corentincj@iksaif.net> | 2011-02-04 09:05:53 +0100 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2011-02-04 06:53:52 -0600 |
commit | 602c075070f113c69c2100776f7a67cee55dd61e (patch) | |
tree | 1dd226007c6df3f38fef3212036cfd9e8563c373 | |
parent | cb5281b1998c12b8d93d0c6a29aeae13934ceb1a (diff) |
vnc: qemu can die if the client is disconnected while updating screen
agraf reported that qemu_mutex_destroy(vs->output_mutex) while failing
in vnc_disconnect_finish().
It's because vnc_worker_thread_loop() tries to unlock the mutex while
not locked. The unlocking call doesn't fail (pthread bug ?), but
the destroy call does.
Signed-off-by: Corentin Chary <corentincj@iksaif.net>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
(cherry picked from commit 73eb4c04e9e8ea7f6eb83694cb0c43e38d882a7c)
-rw-r--r-- | ui/vnc-jobs-async.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/ui/vnc-jobs-async.c b/ui/vnc-jobs-async.c index 6e9cf08b69..0b5d750f26 100644 --- a/ui/vnc-jobs-async.c +++ b/ui/vnc-jobs-async.c @@ -227,6 +227,10 @@ static int vnc_worker_thread_loop(VncJobQueue *queue) if (job->vs->csock == -1) { vnc_unlock_display(job->vs->vd); + /* output mutex must be locked before going to + * disconnected: + */ + vnc_lock_output(job->vs); goto disconnected; } |