0

I am trying to get Real VNC server on Ubuntu 10.04 LTS 64 bit.

I tried 2 options. First, I got Real VNC free edition and got it working after getting all requires 32 bit libraries, configuration hacking etc. It's almost good with one little problem, after I disconnect client, server prints Aborted and exits. I tried many combination of parameters and could not figure it.

This is roughly a command line I used (but I tried many parameter combinations).

Xvnc :2 -desktop user-desktop -query localhost -geometry 1920x1200 -depth 16 -AcceptCutText -SendCutText -rfbauth /home/user/.vnc/passwd -SecurityTypes None -DisconnectClients

Second option. I got trial version of Real VNC Enterprise 4.6.1 and installed it. Now I can happily start it as standalone server and my clients can disconnect without killing server but when I try to use it with -inetd option it just silently exits. When I try free edition it would go into stdio mode and print handshake message

RFB 003.008

Not the case with enterprise edition. It just exits. No message and no logs.

So does anyone have any idea on how to get either option work?


Per recommendation from @grawity I run strace and ltrace. Here is most interesting output from ltrace (I collected data in file called abc and only pasted lines that I find interesting):

$cat abc | egrep 'strchr|print'

fprintf(0x7f330223e860, "\n%s", "Sun Jul 10 13:07:30 2011\n") = 26
strchr("inetd client gone, exiting", ' ')        = " client gone, exiting"
strchr("client gone, exiting", ' ')              = " gone, exiting"
strchr("gone, exiting", ' ')                     = " exiting"


$ cat abc | egrep 'strchr|print' | grep socket
strchr("getpeername: Socket operation on"..., ' ') = " Socket operation on non-socket "...
strchr("Socket operation on non-socket ("..., ' ') = " operation on non-socket (88)"
strchr("operation on non-socket (88)", ' ')      = " on non-socket (88)"
strchr("on non-socket (88)", ' ')                = " non-socket (88)"
strchr("non-socket (88)", ' ')                   = " (88)" 

1 Answers1

1

Try running it under ltrace or strace.

It could be that the inetd mode requires that stdin and stdout be sockets – for example, this is required for determining the client's IP address. It's likely that RealVNC isn't prepared for getpeername() to return failure.

Alternatively, use Xvnc.

grawity
  • 501,077