FreeBSD Port: emulators/virtualbox-ose

Ron Thomas ron at vopenhouse.ca
Fri Jun 13 03:59:38 UTC 2014


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.


>
>
>>
>> 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


More information about the freebsd-emulation mailing list