Date: Thu, 12 Jun 2014 16:29:26 +0200 From: =?UTF-8?Q?Bernhard_Fr=C3=B6hlich?= <decke@FreeBSD.org> To: Ron Thomas <ron@vopenhouse.ca> Cc: "freebsd-emulation@freebsd.org" <freebsd-emulation@freebsd.org> Subject: Re: FreeBSD Port: emulators/virtualbox-ose Message-ID: <CAE-m3X2Lo0o_Ka%2BsCGNPxVa2sCzsOfKfSJaHyQZDkhv04BvHLw@mail.gmail.com> In-Reply-To: <CAHf5H2k3WEAuV=G5rUvdcwUBWK6KcPRcTcYhW-9-zTvoB0k=Lw@mail.gmail.com> References: <CAHf5H2n6NRcKNBtwCn_PU6bhPoMoyc_4uUMG0G=8XPCN6d2BsQ@mail.gmail.com> <CAHf5H2k3WEAuV=G5rUvdcwUBWK6KcPRcTcYhW-9-zTvoB0k=Lw@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, Jun 12, 2014 at 3:17 AM, Ron Thomas <ron@vopenhouse.ca> wrote: > Not sure if this is the right venue for this, if not, could you point me in > the right direction? You're absolutely at the right place. > VBoxHeadless crashes on VNC disconnect. Every time I close a VNC session > VBoxHeadless crashes. I am starting VirtualBox using "service vboxheadless > start" > > #uname -a > FreeBSD my.domain.com 9.2-RELEASE-p6 FreeBSD 9.2-RELEASE-p6 #0: Tue May 13 > 08:21:53 UTC 2014 > root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC > amd64 > > #pkg version | grep 'virtualbox' > virtualbox-ose-4.3.12_1 = > virtualbox-ose-kmod-4.3.12 = > > Installed with following options: > DBUS > DEBUG > GUESTADDITIONS > PYTHON > UDPTUNNEL > VNC > > > (gdb) backtrace > #0 0x0000000805963e48 in ConsoleVRDPServer::AuthDisconnect > (this=0x805013f00, uuid=@0x7ffffeeb3ce0, u32ClientId=4294967295) at > /usr/ports/emulators/virtualbox-ose/work/VirtualBox-4.3.12/src/VBox/Main/src-client/ConsoleVRDPServer.cpp:3339 > #1 0x0000000805919ddb in Console::VRDPClientDisconnect (this=0x805095800, > u32ClientId=4294967295, fu32Intercepted=0) at > /usr/ports/emulators/virtualbox-ose/work/VirtualBox-4.3.12/src/VBox/Main/src-client/ConsoleImpl.cpp:1411 > #2 0x000000080596962c in ConsoleVRDPServer::VRDPCallbackIntercept > (pvCallback=0x805013f00, u32ClientId=4294967295, fu32Intercept=0, > ppvIntercept=0x80596962c) > at > /usr/ports/emulators/virtualbox-ose/work/VirtualBox-4.3.12/src/VBox/Main/src-client/ConsoleVRDPServer.cpp:1016 > #3 0x00000008084014c0 in VNCServerImpl::clientGoneHook (cl=0x80a078000) at > /usr/ports/emulators/virtualbox-ose/work/VirtualBox-4.3.12/src/VBox/ExtPacks/VNC/VBoxVNC.cpp:1294 > #4 0x00000008086178f8 in rfbClientConnectionGone () from > /usr/local/lib/libvncserver.so.0 > #5 0x0000000808611dec in clientInput () from > /usr/local/lib/libvncserver.so.0 > #6 0x0000000800829d34 in pthread_getprio () from /lib/libthr.so.3 > #7 0x0000000000000000 in ?? () The stacktrace looks very much like a bug in libvncserver. There is no information passed to libvncserver that makes me believe that the passed data is wrong so I guess it this is nothing that VBox can fix. https://www.virtualbox.org/browser/vbox/trunk/src/VBox/ExtPacks/VNC/VBoxVNC.cpp#L1297 It might be worth trying to recompile libvncserver port with debug options to get a full stacktrace but it is somewhere here: https://github.com/LibVNC/libvncserver/blob/79e68d065004b24811d68e211c27b918654aabed/libvncserver/main.c#L509 and the patch that we have in our libvncserver port looks quite like it fixes a similar issue in another place to me http://svnweb.freebsd.org/ports/head/net/libvncserver/files/patch-libvncserver__sockets.c?revision=340725&view=markup so my first idea would be to do something like that to libvncserver: --- main.c.orig 2014-06-12 16:20:35.163489814 +0200 +++ main.c 2014-06-12 16:22:00.598491327 +0200 @@ -546,10 +546,10 @@ } /* We have some space on the transmit queue, send some data */ - if (FD_ISSET(cl->sock, &wfds)) + if (cl->sock >= 0 && FD_ISSET(cl->sock, &wfds)) rfbSendFileTransferChunk(cl); - if (FD_ISSET(cl->sock, &rfds) || FD_ISSET(cl->sock, &efds)) + if (cl->sock >= 0 && (FD_ISSET(cl->sock, &rfds) || FD_ISSET(cl->sock, &efds))) rfbProcessClientMessage(cl); } This patch is completely untested was produced within 2 minutes of looking at the code and I am not familiar with the VNC code at all so this might be completely nonsense - please take it for what it's worth. Since the libvncserver port is unmaintained right now but bapt@ was the former maintainer I will CC him just in case he knows something about it. -- Bernhard Froehlich http://www.bluelife.at/
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAE-m3X2Lo0o_Ka%2BsCGNPxVa2sCzsOfKfSJaHyQZDkhv04BvHLw>