lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:	Thu, 18 Apr 2013 11:19:54 +0000
From:	"Zhanghaoyu (A)" <haoyu.zhang@...wei.com>
To:	Gerd Hoffmann <kraxel@...hat.com>,
	Stefan Hajnoczi <stefanha@...il.com>
CC:	"Huangweidong (C)" <weidong.huang@...wei.com>,
	kvm list <kvm@...r.kernel.org>,
	Marcelo Tosatti <mtosatti@...hat.com>,
	Luonengjun <luonengjun@...wei.com>,
	qemu-devel <qemu-devel@...gnu.org>,
	"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
	Zanghongyong <zanghongyong@...wei.com>,
	Zhanghuanzhong <zhanghuanzhong@...wei.com>,
	"corentin.chary@...il.com" <corentin.chary@...il.com>
Subject: reply: [Qemu-devel] reply: reply: qemu crashed when starting
 vm(kvm) with vnc connect

> > On Mon, Apr 08, 2013 at 12:27:06PM +0000, Zhanghaoyu (A) wrote:
> >> On Sun, Apr 07, 2013 at 04:58:07AM +0000, Zhanghaoyu (A) wrote:
> >>>>>> I start a kvm VM with vnc(using the zrle protocol) connect, sometimes qemu program crashed during starting period, received signal SIGABRT.
> >>>>>> Trying about 20 times, this crash may be reproduced.
> >>>>>> I guess the cause memory corruption or double free.
> >>>>>
> >>>>> Which version of QEMU are you running?
> >>>>>
> >>>>> Please try qemu.git/master.
> 
> Please try again with latest master, might be fixed meanwhile.
> 
> If it still happens pleas provide full qemu and vnc client command lines.
> 
> >> backtrace from core file is shown as below:
> >>
> >> Program received signal SIGABRT, Aborted.
> 
> >> #8  0x00007f32efd26d07 in vnc_disconnect_finish (vs=0x7f32f0c762d0)
> >>     at ui/vnc.c:1050
> 
> Do you have a vnc client connected?  Do you close it?
> 
I have a vnc client connected, it was auto closed while qemu crashed.

> Any errors reported by the vnc client (maybe it disconnects due to an error in the data stream)?
> 
No errors reported by the vnc client, just popup a reconnect window.

And, I have tried to fix this bug, not reproduce this crash after tried about 100 times, patch is shown as below,
--- a/ui/vnc-jobs.c     2013-04-18 20:10:07.000000000 +0800
+++ b/ui/vnc-jobs.c     2013-04-18 20:14:06.000000000 +0800
@@ -234,7 +234,6 @@ static int vnc_worker_thread_loop(VncJob
         vnc_unlock_output(job->vs);
         goto disconnected;
     }
-    vnc_unlock_output(job->vs);

     /* Make a local copy of vs and switch output buffers */
     vnc_async_encoding_start(job->vs, &vs);
@@ -252,6 +251,8 @@ static int vnc_worker_thread_loop(VncJob

         if (job->vs->csock == -1) {
             vnc_unlock_display(job->vs->vd);
+            vnc_async_encoding_end(job->vs, &vs);
+            vnc_unlock_output(job->vs);
             goto disconnected;
         }

@@ -269,7 +270,6 @@ static int vnc_worker_thread_loop(VncJob
     vs.output.buffer[saved_offset] = (n_rectangles >> 8) & 0xFF;
     vs.output.buffer[saved_offset + 1] = n_rectangles & 0xFF;

-    vnc_lock_output(job->vs);
     if (job->vs->csock != -1) {
         buffer_reserve(&job->vs->jobs_buffer, vs.output.offset);
         buffer_append(&job->vs->jobs_buffer, vs.output.buffer,
@@ -278,6 +278,8 @@ static int vnc_worker_thread_loop(VncJob
         vnc_async_encoding_end(job->vs, &vs);

        qemu_bh_schedule(job->vs->bh);
+    } else {
+        vnc_async_encoding_end(job->vs, &vs);
     }
     vnc_unlock_output(job->vs);

Thanks,
Zhang Haoyu
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists