FreeBSD Port: emulators/virtualbox-ose
Ron Thomas
ron at vopenhouse.ca
Fri Jun 13 04:41:51 UTC 2014
On Thu, Jun 12, 2014 at 8:59 PM, Ron Thomas <ron at vopenhouse.ca> wrote:
>
>
>
> On Thu, Jun 12, 2014 at 8:32 PM, Ron Thomas <ron at vopenhouse.ca> wrote:
>
>>
>> On Thu, Jun 12, 2014 at 7:29 AM, Bernhard Fröhlich <decke at freebsd.org>
>> wrote:
>>
>>> On Thu, Jun 12, 2014 at 3:17 AM, Ron Thomas <ron at 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 at 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
>>>
>>
>> When I use make config, There doesn't appear to be debug options in the
>> net/libvncserver port
>>
>
> Ok so I found out something new to me (still pretty new to all this), for
> libvncserver I did:
> #make WITH_DEBUG=yes install
>
> I think that is right, I'm still pretty new to this.
>
> Also located the VirtualBox log file which says:
>
> 00:05:27.642965 !!Assertion Failed!!
> 00:05:27.642966 Expression: mAuthLibrary && (mpfnAuthEntry ||
> mpfnAuthEntry2 || mpfnAuthEntry3)
> 00:05:27.642967 Location :
> /usr/ports/emulators/virtualbox-ose/work/VirtualBox-4.3.12/src/VBox/Main/src-client/ConsoleVRDPServer.cpp(3348)
> void ConsoleVRDPServer::AuthDisconnect(const com::Guid&, uint32_t)
>
> Not sure if this helps.
>
Oh and of course, I forgot:
(gdb) backtrace
#0 0x0000000805963f28 in ConsoleVRDPServer::AuthDisconnect
(this=0x805013f00, uuid=@0x7ffffefb5ca0, u32ClientId=4294967295) at
/usr/ports/emulators/virtualbox-ose/work/VirtualBox-4.3.12/src/VBox/Main/src-client/ConsoleVRDPServer.cpp:3348
#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 0x000000080596970c in ConsoleVRDPServer::VRDPCallbackClientDisconnect
(pvCallback=0x805013f00, u32ClientId=4294967295, fu32Intercepted=0) at
/usr/ports/emulators/virtualbox-ose/work/VirtualBox-4.3.12/src/VBox/Main/src-client/ConsoleVRDPServer.cpp:942
#3 0x00000008084014c0 in VNCServerImpl::clientGoneHook (cl=0x8096d3000) at
/usr/ports/emulators/virtualbox-ose/work/VirtualBox-4.3.12/src/VBox/ExtPacks/VNC/VBoxVNC.cpp:1294
#4 0x00000008086136c1 in rfbClientConnectionGone (cl=0x8096d3000) at
rfbserver.c:559
#5 0x0000000808611547 in clientInput (data=0x8096d3000) at main.c:562
#6 0x0000000800829d34 in pthread_getprio () from /lib/libthr.so.3
#7 0x0000000000000000 in ?? ()
>
>
>>
>>
>>>
>>> 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.
>>>
>>>
>> I tried your patch then recompiled both libvncserver then virtualbox, no
>> luck. Any other suggestions?
>>
>>
>>> 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/
>>>
>>
>>
>>
>> Ron
>>
>
> Ron
>
--
Ron Thomas
The Video Openhouse Team
www.vopenhouse.ca
Ranked #1 in google.ca for 'Real Estate Video'
(604)732-7070
More information about the freebsd-emulation
mailing list