Git Product home page Git Product logo

x11vnc's Introduction

Build Status

โ— The project currently is unmaintained and is looking for a new maintainer, please see #186 โ—

This is x11vnc with its development continued by LibVNC and the GitHub community. While 0.9.13 was the last release by the original author Karl Runge, 0.9.14 was the first community-based release here on GitHub.

This repo represents the x11vnc codebase that once resided in the LibVNCServer repo. It was split off LibVNCServer and moved here with https://github.com/LibVNC/libvncserver/commit/498d222976975f53dea885cfe43ef0f805abd412.

Copyright (C) 2002-2010 Karl J. Runge [email protected] All rights reserved.

x11vnc: a VNC server for real X displays

x11vnc allows one to view remotely and interact with real X displays (i.e. a display corresponding to a physical monitor, keyboard, and mouse) with any VNC viewer. In this way it plays the role for Unix/X11 that WinVNC plays for Windows.

It has built-in SSL/TLS encryption and 2048 bit RSA authentication, including VeNCrypt support; UNIX account and password login support; server-side scaling; single port HTTPS/HTTP+VNC; Zeroconf service advertising; and TightVNC and UltraVNC file-transfer. It has also been extended to work with non-X devices: natively on Mac OS X Aqua/Quartz, webcams and TV tuner capture devices, and embedded Linux systems such as Qtopia Core. Full IPv6 support is provided. More features are described here.

It also provides an encrypted Terminal Services mode (-create, -svc, or -xdmsvc options) based on Unix usernames and Unix passwords where the user does not need to memorize his VNC display/port number. Normally a virtual X session (Xvfb) is created for each user, but it also works with X sessions on physical hardware. See the tsvnc terminal services mode of the SSVNC viewer for one way to take advantage of this mode.

I wrote x11vnc back in 2002 because x0rfbserver was basically impossible to build on Solaris and had poor performance. The primary x0rfbserver build problems centered around esoteric C++ toolkits. x11vnc is written in plain C and needs only standard libraries and so should work on nearly all Unixes, even very old ones. I also created enhancements to improve the interactive response, added many features, and etc.

This page including the FAQ contains much information [*]; solutions to many problems; and interesting applications, but nevertheless please feel free to contact me if you have problems or questions (and if I save you time or expense by giving you some of my time, please consider a PayPal Donation.) Do check the FAQ and this page first; I realize the pages are massive, but you can often use your browser's find-in-page search action using a keyword to find the answer to your problem or question.

SSVNC: An x11vnc side-project provides an Enhanced TightVNC Viewer package (SSVNC) for Unix, Windows, and Mac OS X with automatic SSL and/or SSH tunnelling support, SSL Certificate creation, Saved connection profiles, Zeroconf, VeNCrypt, and built-in Proxy support. Added features for the TightVNC Unix viewer: NewFBSize, ZRLE encoding, Viewer-side Scaling, cursor alphablending, low color modes, and enhanced popup menu; UltraVNC extensions support for: File Transfer, Text Chat, Single Window, Server Input, and 1/n Scaling extensions, and UltraVNC DSM encryption. The SSVNC bundle could be placed on, say, a USB memory stick for SSL/SSH VNC viewing from nearly any networked computer.

Announcements

Important: If you created any permanent SSL certificates (e.g. via "x11vnc -ssl SAVE ...") on a Debian or Ubuntu system from Sept. 2006 through May 2008, then those keys are likely extremely weak and can be easily cracked. The certificate files should be deleted and recreated on a non-Debian system or an updated one. See http://www.debian.org/security/2008/dsa-1571 for details. The same applies to SSH keys (not used by x11vnc directly, but many people use SSH tunnels for VNC access.)

News

See NEWS

Frequently Asked Questions (FAQs)

See FAQ.md

Background

VNC (Virtual Network Computing) is a very useful network graphics protocol (applications running on one computer but displaying their windows on another) in the spirit of X, however, unlike X, the viewing-end is very simple and maintains no state. It is a remote framebuffer (RFB) protocol.

Some VNC links:

For Unix, the traditional VNC implementation includes a "virtual" X11 server Xvnc (usually launched via the vncserver command) that is not associated with a physical display, but provides a "fake" one X11 clients (xterm, firefox, etc.) can attach to. A remote user then connects to Xvnc via the VNC client vncviewer from anywhere on the network to view and interact with the whole virtual X11 desktop.

The VNC protocol is in most cases better suited for remote connections with low bandwidth and high latency than is the X11 protocol because it involves far fewer "roundtrips" (an exception is the cached pixmap data on the viewing-end provided by X.) Also, with no state maintained the viewing-end can crash, be rebooted, or relocated and the applications and desktop continue running. Not so with X11.

So the standard Xvnc/vncserver program is very useful, I use it for things like:

  • Desktop conferencing with other users (e.g. code reviews.)
  • Long running apps/tasks I want to be able to view from many places (e.g. from home and work.)
  • Motif, GNOME, and similar applications that would yield very poor performance over a high latency link.

However, sometimes one wants to connect to a real X11 display (i.e. one attached to a physical monitor, keyboard, and mouse: a Workstation or a SunRay session) from far away. Maybe you want to close down an application cleanly rather than using kill, or want to work a bit in an already running application, or would like to help a distant colleague solve a problem with their desktop, or would just like to work out on the deck for a while. This is where x11vnc is useful.

How to use x11vnc

In this basic example let's assume the remote machine with the X display you wish to view is "far-away.east:0" and the workstation you are presently working at is "sitting-here.west".

Step 0. Download x11vnc (see below) and have it available to run on far-away.east (on some linux distros it is as easy as "apt-get install x11vnc", "emerge x11vnc", etc.) Similarly, have a VNC viewer (e.g. vncviewer) ready to run on sitting-here.west. We recommend TightVNC Viewers (see also our SSVNC viewer.)

Step 1. By some means log in to far-away.east and get a command shell running there. You can use ssh, or even rlogin, telnet, or any other method to do this. We do this because the x11vnc process needs to be run on the same machine the X server process is running on (otherwise things would be extremely slow.)

Step 2. In that far-away.east shell (with command prompt "far-away>" in this example) run x11vnc directed at the far-away.east X session display:

far-away> x11vnc -display :0

You could have also set the environment variable DISPLAY=:0 instead of using "-display :0". This step attaches x11vnc to the far-away.east:0 X display (i.e. no viewer clients yet.)

Common Gotcha: To get X11 permissions right, you may also need to set the XAUTHORITY environment variable (or use the -auth option) to point to the correct MIT-MAGIC-COOKIE file (e.g. /home/joe/.Xauthority.) If x11vnc does not have the authority to connect to the display it exits immediately. More on how to fix this below.

If you suspect an X11 permissions problem do this simple test: while sitting at the physical X display open a terminal window (gnome-terminal, xterm, etc.) You should be able to run x11vnc successfully in that terminal without any need for command line options. If that works OK then you know X11 permissions are the only thing preventing it from working when you try to start x11vnc via a remote shell. Then fix this with the tips below.

Note as of Feb/2007 you can also try the -find option instead of "-display ..." and see if that finds your display and Xauthority. Note as of Dec/2009 the -findauth and "-auth guess" options may be helpful as well. (End of Common Gotcha)

When x11vnc starts up there will then be much chatter printed out (use "-q" to quiet it), until it finally says something like:

.
.
13/05/2004 14:59:54 Autoprobing selected port 5900
13/05/2004 14:59:54 screen setup finished.
13/05/2004 14:59:54
13/05/2004 14:59:54 The VNC desktop is far-away:0
PORT=5900

which means all is OK, and we are ready for the final step.

Step 3. At the place where you are sitting (sitting-here.west in this example) you now want to run a VNC viewer program. There are VNC viewers for Unix, Windows, MacOS, Java-enabled web browsers, and even for PDA's like the Palm Pilot and Cell Phones! You can use any of them to connect to x11vnc (see the above VNC links under "Background:" on how to obtain a viewer for your platform or see this FAQ. For Solaris, vncviewer is available in the Companion CD package SFWvnc.)

In this example we'll use the Unix vncviewer program on sitting-here by typing the following command in a second terminal window:

sitting-here> vncviewer far-away.east:0

That should pop up a viewer window on sitting-here.west showing and allowing interaction with the far-away.east:0 X11 desktop. Pretty nifty! When finished, exit the viewer: the remote x11vnc process will shutdown automatically (or you can use the -forever option to have it wait for additional viewer connections.)

Common Gotcha: Nowadays there will likely be a host-level firewall on the x11vnc side that is blocking remote access to the VNC port (e.g. 5900.) You will either have to open up that port (or a range of ports) in your firewall administration tool, or try the SSH tunnelling method below (even still the firewall must allow in the SSH port, 22.)

Shortcut: Of course if you left x11vnc running on far-away.east:0 in a terminal window with the -forever option or as a service, you'd only have to do Step 3 as you moved around. Be sure to use a VNC Password or other measures if you do that.

Super Shortcut: Here is a potentially very easy way to get all of it working.

  • Have x11vnc (0.9.3 or later) available to run on the remote host (i.e. in $PATH.)
  • Download and unpack a SSVNC bundle (1.0.19 or later, e.g. ssvnc_no_windows-1.0.28.tar.gz) on the Viewer-side machine.
  • Start the SSVNC Terminal Services mode GUI: ./ssvnc/bin/tsvnc
  • Enter your remote username@hostname (e.g. [email protected]) in the "VNC Terminal Server" entry.
  • Click "Connect".

That will do an SSH to username@hostname and start up x11vnc and then connect a VNC Viewer through the SSH encrypted tunnel.

There are a number of things assumed here, first that you are able to SSH into the remote host; i.e. that you have a Unix account there and the SSH server is running. On Unix and MacOS X it is assumed that the ssh client command is available on the local machine (on Windows a plink binary is included in the SSVNC bundle.) Finally, it is assumed that you are already logged into an X session on the remote machine, e.g. your workstation (otherwise, a virtual X server, e.g. Xvfb, will be started for you.)

In some cases the remote SSH server will not run commands with the same $PATH that you normally have in your shell there. In this case click on Options -> Advanced -> X11VNC Options, and type in the location of the x11vnc binary under "Full Path". (End of Super Shortcut)

Desktop Sharing: The above more or less assumed nobody was sitting at the workstation display "far-away.east:0". This is often the case: a user wants to access her workstation remotely. Another usage pattern has the user sitting at "far-away.east:0" and invites one or more other people to view and interact with his desktop. Perhaps the user gives a demo or presentation this way (using the telephone for vocal communication.) A "Remote Help Desk" mode would be similar: a technician connects remotely to the user's desktop to interactively solve a problem the user is having.

For these cases it should be obvious how it is done. The above steps will work, but more easily the user sitting at far-away.east:0 simply starts up x11vnc from a terminal window, after which the guests would start their VNC viewers. For this usage mode the "-connect host1,host2" option may be of use to automatically connect to the vncviewers in "-listen" mode on the list of hosts.

Tunnelling x11vnc via SSH

The above example had no security or privacy at all. When logging into remote machines (certainly when going over the internet) it is best to use ssh, or use a VPN (for a VPN, Virtual Private Network, the above example should be pretty safe.)

For x11vnc one can tunnel the VNC protocol through an encrypted ssh channel. It would look something like running the following commands:

sitting-here> ssh -t -L 5900:localhost:5900 far-away.east 'x11vnc -localhost -display :0'

(you will likely have to provide passwords/passphrases to login from sitting-here into your far-away.east Unix account; we assume you have a login account on far-away.east and it is running the SSH server)

And then in another terminal window on sitting-here run the command:

sitting-here> vncviewer -encodings "copyrect tight zrle hextile" localhost:0

Note: The -encodings option is very important: vncviewer will often default to "raw" encoding if it thinks the connection is to the local machine, and so vncviewer gets tricked this way by the ssh redirection. "raw" encoding will be extremely slow over a networked link, so you need to force the issue with -encodings "copyrect tight ...". Nowadays, not all viewers use the -encodings option, try "-PreferredEncoding=ZRLE" (although the newer viewers seem to autodetect well when to use raw or not.)

Note that "x11vnc -localhost ..." limits incoming vncviewer connections to only those from the same machine. This is very natural for ssh tunnelling (the redirection appears to come from the same machine.) Use of a VNC password is also strongly recommended.

Note also the -t we used above (force allocate pseudoterminal), it actually seems to improve interactive typing response via VNC!

You may want to add the -C option to ssh to enable compression. The VNC compression is not perfect, and so this may help a bit. However, over a fast LAN you probably don't want to enable SSH compression because it can slow things down. Try both and see which is faster.

If your username is different on the remote machine use something like: "[email protected]" in the above ssh command line.

Some VNC viewers will do the ssh tunnelling for you automatically, the TightVNC Unix vncviewer does this when the "-via far-away.east" option is supplied to it (this requires x11vnc to be already running on far-away.east or having it started by inetd(8).) See the 3rd script example below for more info.

SSVNC: You may also want to look at the Enhanced TightVNC Viewer (ssvnc) bundles because they contain scripts and GUIs to automatically set up SSH tunnels (e.g. the GUI, "ssvnc", does it automatically and so does this command: "ssvnc_cmd -ssh [email protected]:0") and can even start up x11vnc as well.

The Terminal Services mode of SSVNC is perhaps the easiest way to use x11vnc. You just need to have x11vnc available in $PATH on the remote side (and can SSH to the host), and then on the viewer-side you type something like:

everything else is done automatically for you. Normally this will start a virtual Terminal Services X session (RAM-only), but if you already have a real X session up on the physical hardware it will find that one for you.

Gateways: If the machine you SSH into is not the same machine with the X display you wish to view (e.g. your company provides incoming SSH access to a gateway machine), then you need to change the above to, e.g.: "-L 5900:OtherHost:5900":

sitting-here> ssh -t -L 5900:OtherHost:5900 gateway.east

Where gateway.east is the internet hostname (or IP) of the gateway machine (SSH server.) 'OtherHost' might be, e.g., freds-pc or 192.168.2.33 (it is OK for these to be private hostnames or private IP addresses, the host in -L is relative to the remote server side.)

Once logged in, you'll need to do a second login (ssh, rsh, etc.) to the workstation machine 'OtherHost' and then start up x11vnc on it (if it isn't already running.) (The "-connect gateway:59xx" option may be another alternative here with the viewer already in -listen mode.) For an automatic way to use a gateway and have all the network traffic encrypted (including inside the firewall) see Chaining SSH's.

These gateway access modes also can be done automatically for you via the "Proxy/Gateway" setting in SSVNC (including the Chaining SSH's case, "Double Proxy".)

Chaining SSH's

Note that for use of a ssh gateway and -L redirection to an internal host (e.g. "-L 5900:otherhost:5900") the VNC traffic inside the firewall is not encrypted and you have to manually log into otherhost to start x11vnc. Kyle Amon shows a method where you chain two ssh's together that encrypts all network traffic and also automatically starts up x11vnc on the internal workstation:

#!/bin/sh
#
gateway="example.com"   # or "[email protected]"
host="labyrinth"        # or "user@hostname"
user="kyle"

# Need to sleep long enough for all of the passwords and x11vnc to start up.
# The </dev/null below makes the vncviewer prompt for passwd via popup window.
#
(sleep 10; vncviewer -encodings "copyrect tight zrle zlib hextile" \
    localhost:0 </dev/null >/dev/null) &

# Chain the vnc connection thru 2 ssh's, and connect x11vnc to user's display:
#
exec /usr/bin/ssh -t -L 5900:localhost:5900 $gateway \
     /usr/bin/ssh -t -L 5900:localhost:5900 $host \
     sudo /usr/bin/x11vnc -localhost -auth /home/$user/.Xauthority \
         -rfbauth .vnc/passwd -display :0

Also note the use of sudo(1) to switch to root so that the different user's .Xauthority file can be accessed. See the visudo(8) manpage for details on how to set this up (remove the sudo if you do not want to do this). One can also chain together ssh's for reverse connections with vncviewers using the -listen option. For this case -R would replace the -L (and 5500 the 5900, see the #2 example script above). If the gateway machine's sshd is configured with GatewayPorts=no (the default) then the double chaining of "ssh -R ..." will be required for reverse connections to work.

Firewalls/Routers

A lot of people have inexpensive devices for home or office that act as a Firewall and Router to the machines inside on a private LAN. One can usually configure the Firewall/Router from inside the LAN via a web browser.

Often having a Firewall/Router sitting between the vncviewer and x11vnc will make it impossible for the viewer to connect to x11vnc.

One thing that can be done is to redirect a port on the Firewall/Router to, say, the SSH port (22) on an inside machine (how to do this depends on your particular Firewall/Router, often the router config URL is http://192.168.100.1 See www.portforward.com for more info.) This way you reach these computers from anywhere on the Internet and use x11vnc to view X sessions running on them.

Suppose you configured the Firewall/Router to redirect these ports to two internal machines:

Port 12300 -> 192.168.1.3, Port 22 (SSH)
Port 12301 -> 192.168.1.4, Port 22 (SSH)

(where 192.168.1.3 is "jills-pc" and 192.168.1.4 is "freds-pc".) Then the ssh's would look something like:
sitting-here> ssh -t -p 12300 -L 5900:localhost:5900 [email protected] 'x11v nc -localhost -display :0'
sitting-here> ssh -t -p 12301 -L 5900:localhost:5900 [email protected] 'x11v nc -localhost -display :0'

Where far-away.east means the hostname (or IP) that the Router/Firewall is using (for home setups this is usually the IP gotten from your ISP via DHCP, the site http://www.whatismyip.com/ is a convenient way to determine what it is.)

It is a good idea to add some obscurity to accessing your system via SSH by using some high random port (e.g. 12300 in the above example.) If you can't remember it, or are otherwise not worried about port scanners detecting the presence of your SSH server and there is just one internal PC involved you could map 22:

Port 22 -> 192.168.1.3, Port 22 (SSH)

Again, this SSH gateway access can be done automatically for you via the "Proxy/Gateway" setting in SSVNC. And under the "Remote SSH Command" setting you can enter the x11vnc -localhost -display :0.

Host-Level-Firewalls: even with the hardware Firewall/Router problem solved via a port redirection, most PC systems have their own Host level "firewalls" enabled to protect users from themselves. I.e. the system itself blocks all incoming connections. So you will need to see what is needed to configure it to allow in the port (e.g. 22) that you desire. E.g. Yast, Firestarter, iptables(1), etc..

VNC Ports and Firewalls: The above discussion was for configuring the Firewall/Router to let in port 22 (SSH), but the same thing can be done for the default VNC port 5900:

Port 5900 -> 192.168.1.3, Port 5900 (VNC)
Port 5901 -> 192.168.1.4, Port 5900 (VNC)

(where 192.168.1.3 is "jills-pc" and 192.168.1.4 is "freds-pc".) This could be used for normal, unencrypted connections and also for SSL encrypted ones.

The VNC displays to enter in the VNC viewer would be, say, "far-away.east:0" to reach jills-pc and "far-away.east:1" to reach freds-pc. We assume above that x11vnc is using port 5900 (and any Host-Level-firewalls on jills-pc has been configured to let that port in.) Use the "-rfbport" option to tell which port x11vnc should listen on.

For a home system one likely does not have a hostname and would have to use the IP address, say, "24.56.78.93:0". E.g.:

vncviewer 24.56.78.93:0

You may want to choose a more obscure port on the router side, e.g. 5944, to avoid a lot of port scans finding your VNC server. For 5944 you would tell the viewer to use:

vncviewer 24.56.78.93:44

The IP address would need to be communicated to the person running the VNC Viewer. The site http://www.whatismyip.com/ can help here.

Scripts to automate ssh tunneling: As discussed below, there may be some problems with port 5900 being available. If that happens, the above port and display numbers may change a bit (e.g. -> 5901 and :1). However, if you "know" port 5900 will be free on the local and remote machines, you can easily automate the above two steps by using the x11vnc option -bg (forks into background after connection to the display is set up) or using the -f option of ssh. Some example scripts are shown below. Feel free to try the ssh -C to enable its compression and see if that speeds things up noticeably.

  1. A simple example script, assuming no problems with port 5900 being taken on the local or remote sides, looks like:

    #!/bin/sh
    # usage: x11vnc_ssh <host>:<xdisplay>
    #  e.g.: x11vnc_ssh snoopy.peanuts.com:0
    #  (user@host:N also works)
    
    host=`echo $1 | awk -F: '{print $1}'`
    disp=`echo $1 | awk -F: '{print $2}'`
    if [ "x$disp" = "x" ]; then disp=0; fi
    
    cmd="x11vnc -display :$disp -localhost -rfbauth .vnc/passwd"
    enc="copyrect tight zrle hextile zlib corre rre raw"
    
    ssh -f -t -L 5900:localhost:5900 $host "$cmd"
    
    for i in 1 2 3
    do
        sleep 2
        if vncviewer -encodings "$enc" :0; then break; fi
    done
    

    See also rx11vnc.pl below.

  2. Another method is to start the VNC viewer in listen mode "vncviewer -listen" and have x11vnc initiate a reverse connection using the -connect option:

    #!/bin/sh
    # usage: x11vnc_ssh <host>:<xdisplay>
    #  e.g.: x11vnc_ssh snoopy.peanuts.com:0
    #  (user@host:N also works)
    
    host=`echo $1 | awk -F: '{print $1}'`
    disp=`echo $1 | awk -F: '{print $2}'`
    if [ "x$disp" = "x" ]; then disp=0; fi
    
    cmd="x11vnc -display :$disp -localhost -connect localhost"   # <== note new option
    enc="copyrect tight zrle hextile zlib corre rre raw"
    
    vncviewer -encodings "$enc" -listen &
    pid=$!
    ssh -t -R 5500:localhost:5500 $host "$cmd"
    kill $pid
    

    Note the use of the ssh option "-R" instead of "-L" to set up a remote port redirection.

  3. A third way is specific to the TightVNC vncviewer special option -via for gateways. The only tricky part is we need to start up x11vnc and give it some time (5 seconds in this example) to start listening for connections (so we cannot use the TightVNC default setting for VNC_VIA_CMD):

    #!/bin/sh
    # usage: x11vnc_ssh <host>:<xdisplay>
    #  e.g.: x11vnc_ssh snoopy.peanuts.com:0
    
    host=`echo $1 | awk -F: '{print $1}'`
    disp=`echo $1 | awk -F: '{print $2}'`
    if [ "x$disp" = "x" ]; then disp=0; fi
    
    VNC_VIA_CMD="ssh -f -t -L %L:%H:%R %G x11vnc -localhost -rfbport 5900 -display
    :$disp; sleep 5"
    export VNC_VIA_CMD
    
    vncviewer -via $host localhost:0      # must be TightVNC vncviewer.
    

    Of course if you already have the x11vnc running waiting for connections (or have it started out of inetd(8)), you can simply use the TightVNC "vncviewer -via gateway host:port" in its default mode to provide secure ssh tunnelling.

VNC password file: Also note in the #1. example script that the option "-rfbauth .vnc/passwd" provides additional protection by requiring a VNC password for every VNC viewer that connects. The vncpasswd or storepasswd programs, or the x11vnc -storepasswd option can be used to create the password file. x11vnc also has the slightly less secure -passwdfile and "-passwd XXXXX" options to specify passwords.

Very Important: It is up to YOU to tell x11vnc to use password protection (-rfbauth or -passwdfile), it will NOT do it for you automatically or force you to (use -usepw if you want to be forced to.) The same goes for encrypting the channel between the viewer and x11vnc: it is up to you to use ssh, stunnel, -ssl mode, a VPN, etc. (use the Enhanced TightVNC Viewer (SSVNC) GUI if you want to be forced to use SSL or SSH.) For additional safety, also look into the -allow and -localhost options and building x11vnc with tcp_wrappers support to limit host access.

Tunnelling x11vnc via SSL/TLS

One can also encrypt the VNC traffic using an SSL/TLS tunnel such as stunnel.mirt.net (also stunnel.org) or using the built-in (Mar/2006) -ssl openssl mode. A SSL-enabled Java applet VNC Viewer is also provided in the x11vnc package (and https can be used to download it.)

Although not as ubiquitous as ssh, SSL tunnelling still provides a useful alternative. See this FAQ on -ssl and -stunnel modes for details and examples.

The Enhanced TightVNC Viewer (SSVNC) bundles contain some convenient utilities to automatically set up an SSL tunnel from the viewer-side (i.e. to connect to "x11vnc -ssl ...".) And many other enhancements too.

Downloading x11vnc

x11vnc is a contributed program to the LibVNCServer project at SourceForge.net. I use libvncserver for all of the VNC aspects; I couldn't have done without it. The full source code may be found and downloaded (either file-release tarball or GIT tree) from the above link. As of Sep 2010, the x11vnc-0.9.12.tar.gz source package is released (recommended download). The x11vnc 0.9.12 release notes.

The x11vnc package is the subset of the libvncserver package needed to build the x11vnc program. Also, you can get a copy of my latest, bleeding edge x11vnc-0.9.13-dev.tar.gz tarball to build the most up to date one.

Precompiled Binaries/Packages: See the FAQ below for information about where you might obtain a precompiled x11vnc binary from 3rd parties and some ones I create.

VNC Viewers: To obtain VNC viewers for the viewing side (Windows, Mac OS, or Unix) try these links:

More tools: Here is a ssh/rsh wrapper script rx11vnc that attempts to automatically do the above Steps 1-3 for you (provided you have ssh/rsh login permission on the machine x11vnc is to be run on.) The above example would be: "rx11vnc far-away.east:0" typed into a shell on sitting-here.west. Also included is an experimental script rx11vnc.pl that attempts to tunnel the vnc traffic through an ssh port redirection (and does not assume port 5900 is free.) Have a look at them to see what they do and customize as needed:

  • rx11vnc wrapper script
  • rx11vnc.pl wrapper script to tunnel traffic thru ssh

Building x11vnc

Make sure you have all the needed build/compile/development packages installed. On a Debian-based distro you can simply do

sudo apt-get build-dep x11vnc

to install most of them.

To generate the build system, do a

autoreconf -fiv

After that, it's the usual

./configure
make

You might want to take a look at the dfferent configure options provided by configure --help to build without X11 or adapt the build to your needs in other ways.

Building on Solaris, FreeBSD, etc

Depending on your version of Solaris or other Unix OS the jpeg and/or zlib libraries may be in non-standard places (e.g. /usr/local, /usr/sfw, /opt/sfw, etc.)

Note: If configure cannot find these two libraries then TightVNC and ZRLE encoding support will be disabled, and you don't want that!!! The TightVNC encoding gives very good compression and performance, it even makes a noticeable difference over a fast LAN.

Shortcuts: On Solaris 10 you can pick up almost everything just by insuring that your PATH has /usr/sfw/bin (for gcc) and /usr/ccs/bin (for other build tools), e.g.:

env PATH=/usr/sfw/bin:/usr/ccs/bin:$PATH sh -c './configure; make'

(The only thing this misses is /usr/X11/lib/libXrandr.so.2, which is for the little used -xrandr option, see the script below to pick it up as well.)

libjpeg is included in Solaris 9 and later (/usr/sfw/include and /usr/sfw/lib), and zlib in Solaris 8 and later (/usr/include and /usr/lib.) So on Solaris 9 you can pick up everything with something like this:

env PATH=/usr/local/bin:/usr/ccs/bin:$PATH sh -c './configure --with-jpeg=/usr/sfw; make'

assuming your gcc is in /usr/local/bin and x11vnc 0.7.1 or later. These are getting pretty long, see those assignments split up in the build script below.

If your system does not have these libraries at all you can get the source for the libraries to build them: libjpeg is available at ftp://ftp.uu.net/graphics/jpeg/ and zlib at http://www.gzip.org/zlib/. See also http://www.sunfreeware.com/ for Solaris binary packages of these libraries as well as for gcc. Normally they will install into /usr/local but you can install them anywhere with the --prefix=/path/to/anywhere, etc.

Here is a build script that indicates one way to pass the library locations information to the libvncserver configuration via the CPPFLAGS and LDFLAGS environment variables.

#!/bin/sh

# Build script for Solaris, etc, with gcc, libjpeg and libz in
# non-standard locations.

# set to get your gcc, etc:
#
PATH=/path/to/gcc/bin:/usr/ccs/bin:/usr/sfw/bin:$PATH

JPEG=/path/to/jpeg      # set to maybe "/usr/local", "/usr/sfw", or "/opt/sfw"
ZLIB=/path/to/zlib      # set to maybe "/usr/local", "/usr/sfw", or "/opt/sfw"

# Below we assume headers in $JPEG/include and $ZLIB/include and the
# shared libraries are in $JPEG/lib and $ZLIB/lib.  If your situation
# is different change the locations in the two lines below.
#
CPPFLAGS="-I $JPEG/include -I $ZLIB/include"
LDFLAGS="-L$JPEG/lib -R $JPEG/lib -L$ZLIB/lib -R $ZLIB/lib"

# These two lines may not be needed on more recent Solaris releases:
#
CPPFLAGS="$CPPFLAGS -I /usr/openwin/include"
LDFLAGS="$LDFLAGS -L/usr/openwin/lib -R /usr/openwin/lib"

# These are for libXrandr.so on Solaris 10:
#
CPPFLAGS="$CPPFLAGS -I /usr/X11/include"
LDFLAGS="$LDFLAGS -L/usr/X11/lib -R /usr/X11/lib"

# Everything needs to built with _REENTRANT for thread safe errno:
#
CPPFLAGS="$CPPFLAGS -D_REENTRANT"

export PATH CPPFLAGS LDFLAGS

./configure
make

ls -l ./x11vnc/x11vnc

Then do make install or copy the x11vnc binary to your desired destination.

BTW, To run a shell script, just cut-and-paste the above into a file, say "myscript", then modify the "/path/to/..." items to correspond to your system/environment, and then type: "sh myscript" to run it.

Note that on Solaris make is /usr/ccs/bin/make, so that is why the above puts /usr/ccs/bin in PATH. Other important build utilities are there too: ld, ar, etc. Also, it is probably a bad idea to have /usr/ucb in your PATH while building.

Starting with the 0.7.1 x11vnc release the "configure --with-jpeg=DIR --with-zlib=DIR" options are handy if you want to avoid making a script.

If you need to link OpenSSL libssl.a on Solaris see this method.

If you need to build on Solaris 2.5.1 or earlier or other older Unix OS's, see this workaround FAQ.

Building on FreeBSD, OpenBSD, ...

The jpeg libraries seem to be in /usr/local or /usr/pkg on these OS's. You won't need the openwin stuff in the above script (but you may need /usr/X11R6/....) Also starting with the 0.7.1 x11vnc release, this usually works:

./configure --with-jpeg=/usr/local
make

Building on HP-UX

For jpeg and zlib you will need to do the same sort of thing as described above for Solaris. You set CPPFLAGS and LDFLAGS to find them (see below for an example.) You do not need to do any of the above /usr/openwin stuff. Also, HP-UX does not seem to support -R, so get rid of the -R items in LDFLAGS. Because of this, at runtime you may need to set LD_LIBRARY_PATH or SHLIB_PATH to indicate the directory paths so the libraries can be found. It is a good idea to have static archives, e.g. libz.a and libjpeg.a for the nonstandard libraries so that they get bolted into the x11vnc binary (and so won't get "lost".)

Here is what we recently did to build x11vnc 0.7.2 on HP-UX 11.11

./configure --with-jpeg=$HOME/hpux/jpeg --with-zlib=$HOME/hpux/zlib
make

Where we had static archives (libjpeg.a, libz.a) only and header files in the $HOME/hpux/... directories as discussed for the build script.

On HP-UX 11.23 and 11.31 we have had problems compiling with gcc. "/usr/include/rpc/auth.h:87: error: field 'syncaddr' has incomplete type". As a workaround for x11vnc 0.9.4 and later set your CPPFLAGS to include:

CPPFLAGS="-DIGNORE_GETSPNAM"
export CPPFLAGS

This disables a very rare usage mode for -unixpw_nis by not trying getspnam(3).

Using HP-UX's C compiler on 11.23 and 11.31 we have some severe compiler errors that have not been worked around yet. If you need to do this, contact me and I will give you a drastic recipe that will produce a working binary.

Building on AIX

AIX: one user had to add the "X11.adt" package to AIX 4.3.3 and 5.2 to get build header files like XShm.h, etc. You may also want to make sure that /usr/lpp/X11/include, etc is being picked up by the configure and make.

For a recent build on AIX 5.3 we needed to add these CFLAGS to be able to build with gcc: env CFLAGS='-maix64 -Xlinker -bbigtoc' ./configure ...

we also built our own libjpeg and libz using -maix64.

BTW, one way to run an Xvfb-like virtual X server for testing on AIX is something like "/usr/bin/X11/X -force -vfb -ac :1".

Building on Mac OS X

There is now native Mac OS X support for x11vnc by using the raw framebuffer feature. This mode does not use or need X11 at all. To build you may need to disable X11:

./configure --without-x ...
make

However, if your system has the Mac OS X build package for X11 apps you will not need to supply the "--without-x" option (in this case the resulting x11vnc would be able to export both the native Mac OS X display and windows displayed in the XDarwin X server.) Be sure to include the ./configure option to find libjpeg on your system.

OpenSSL

Starting with version 0.8.3 x11vnc can now be built with SSL/TLS support. For this to be enabled the libssl.so library needs to be available at build time. So you may need to have additional CPPFLAGS and LDFLAGS items if your libssl.so is in a non-standard place. As of x11vnc 0.9.4 there is also the --with-ssl=DIR configure option.

Note that from OpenSSL 1.1.0 on SSLv2 support has been dropped and SSLv3 deactivated at build time per default. This means that unless explicitly enabled, OpenSSL builds only support TLS (any version). Since there is a reason for dropping SSLv3 (heard of POODLE?), most distributions do not enable it for their OpenSSL binary. In summary this means compiling x11vnc against OpenSSL 1.1.0 or newer is no problem, but using encryption will require a viewer with TLS support.

On Solaris using static archives libssl.a and libcrypto.a instead of .so shared libraries (e.g. from www.sunfreeware.com), we found we needed to also set LDFLAGS as follows to get the configure to work:

env LDFLAGS='-lsocket -ldl' ./configure --with-ssl=/path/to/openssl ...
make

Misc. Build problems

We collect here rare build problems some users have reported and the corresponding workarounds. See also the FAQ's on building.


ENV parameter: One user had a problem where the build script below was failing because his work environment had the ENV variable set to a script that was resetting his PATH so that gcc could no longer be found. Make sure you do not have any ENV or BASH_ENV in your environment doing things like that. Typing "unset ENV", etc. before configuring and building should clear it.


Bash xpg: One user had his bash shell compiled with --enable-xpg-echo-default that causes some strange behavior with things like echo "\1 ..." the configure script executes. In particular instead of getting "\1" the non-printable character "^A" is produced, and causes failures at compile time like:

../rfb/rfbconfig.h:9:22: warning: extra tokens at end of #ifndef directive

The workaround is to configure like this:

env CONFIG_SHELL=/bin/sh /bin/sh ./configure

i.e. avoid using the bash with the misbehavior. A bug has been filed against autoconf to guard against this.


AIX: one user had to add the "X11.adt" package to AIX to get build header files like XShm.h, etc.


Ubuntu Feisty Fawn 7.04: In May/2007 one user said he needed to add these packages to compile x11vnc on that Linux distro and version:

apt-get install build-essential make bin86 libjpeg62-dev libssl-dev libxtst-dev

Note that Ubuntu is based on Debian, so perhaps this is the list needed on Debian (testing?) as well. To build in Avahi (mDNS service advertising) support it would appear that libavahi-client-dev is needed as well.


Exceedingly slow compilation: x11vnc has a couple of files which contain very large "case statements" (over 100 cases) that on some platforms can take a very long time to compile (in extreme cases over an hour). However on 32bit Linux with intel/amd processor and gcc these files usually take less than 10 seconds to compile. For 64bit systems using gcc the problem appears to be much worse.

The two files with the large number of cases, remote.c and x11vnc.c, have no real need to be optimized (the code is used only very infrequently). So it is fine to supply "-O0" (disables optimization) to CFLAGS when compiling them. However, it is tricky with autoconf/automake to do this (especially since both the compiler and make versions have a big effect).

So if the compile times are getting too long for you for these two files you will need to manually change some things. First, run configure and when it has finished, edit the generated file x11vnc/Makefile and put these lines at the very top:

x11vnc-x11vnc.o :  CFLAGS += -O0
x11vnc-remote.o :  CFLAGS += -O0

Those lines assume gnu make (gmake) is being used. If you are using another make, say Solaris make, insert these instead:

x11vnc-x11vnc.o := CFLAGS += -O0
x11vnc-remote.o := CFLAGS += -O0

You could write a build shell script that modified the Makefile this way before running make.

The "-O0" (note it is "capital Oh" followed by "zero") assumes the gcc compiler. If you are using a different compiler you will need to find the command line option to disable optimization, or otherwise have the lines set CFLAGS to the empty string.


Broken Thread Local Storage on SuSE 9.2: Starting with x11vnc 0.9.8 the bundled libvncserver uses the __thread keyword to make some of the encodings (i.e. tight) thread safe (multiple VNC clients can be using tight at the same time in x11vnc -threads mode.) Evidently on the old SuSE 9.2 system the compiler does not support the thread local storage properly. Here is an example build failure:

tight.c:1126: error: unrecognizable insn:
(insn:HI 11 10 13 0 (nil) (set (reg/f:SI 59)
        (const:SI (plus:SI (symbol_ref:SI ("%lpalette"))
                (const_int 2048 [0x800])))) -1 (nil)
    (expr_list:REG_EQUAL (const:SI (plus:SI (symbol_ref:SI ("%lpalette"))
                (const_int 2048 [0x800])))
        (nil)))
tight.c:1126: internal compiler error: in extract_insn, at recog.c:2175
Please submit a full bug report,
with preprocessed source if appropriate.
See URL:http://www.suse.de/feedback for instructions.

The workaround is to disable thread local storage at configure time like this:

env CPPFLAGS="-DTLS=''" ./configure

and then build it.

Some Notes

Both a client and a server

It is sometimes confusing to people that x11vnc is both a client and a server at the same time. It is an X client because it connects to the running X server to do the screen polls. Think of it as a rather efficient "screenshot" program running continuously. It is a server in the sense that it is a VNC server that VNC viewers on the network can connect to and view the screen framebuffer it manages.

When trying to debug problems, remember to think of both roles. E.g. "how is x11vnc connecting to the X server?", "how is the vncviewer connecting to x11vnc?", "what permits/restricts the connection?". Both links may have reachability, permission, and other issues.

Network performance

Whether you are using Xvnc or x11vnc it is always a good idea to have a solid background color instead of a pretty background image. Each and every re-exposure of the background must be resent over the network: better to have that background be a solid color that compresses very well compared to a photo image. (This is one place where the X protocol has an advantage over the VNC protocol.) I suggest using xsetroot, dtstyle or similar utility to set a solid background while using x11vnc. You can turn the pretty background image back on when you are using the display directly. Update: As of Feb/2005 x11vnc has the -solid [color] option that works on recent GNOME, KDE, and CDE and also on classic X (background image is on the root window.) Update: As of Oct/2007 x11vnc has the -ncache option that does a reasonable job caching the background (and other) pixmap data on the viewer side.

I also find the TightVNC encoding gives the best response for my usage (Unix <-> Unix over cable modem.) One needs a tightvnc-aware vncviewer to take advantage of this encoding.

TCP port issues

Notice the lines

18/07/2003 14:36:31 Autoprobing selected port 5900
PORT=5900

in the output. 5900 is the default VNC listening port (just like 6000 is X11's default listening port.) Had port 5900 been taken by some other application, x11vnc would have next tried 5901. That would mean the viewer command above should be changed to vncviewer far-away.east:1. You can force the port with the "-rfbport NNNN" option where NNNN is the desired port number. If that port is already taken, x11vnc will exit immediately. The "-N" option will try to match the VNC display number to the X display. (also see the "SunRay Gotcha" note below)

Options

x11vnc has (far too) many features that may be activated via its command line options. Useful options are, e.g., -scale to do server-side scaling, and -rfbauth passwd-file to use VNC password protection (the vncpasswd or storepasswd programs, or the x11vnc -storepasswd option can be used to create the password file.)

Algorithm

How does x11vnc do it? Rather brute-forcedly: it continuously polls the X11 framebuffer for changes using XShmGetImage(). When changes are discovered, it instructs libvncserver which rectangular regions of the framebuffer have changed, and libvncserver compresses the changes and sends them off to any connected VNC viewers. A number of applications do similar things, such as x0rfbserver, krfb, x0vncserver, vino. x11vnc uses a 32 x 32 pixel tile model (the desktop is decomposed into roughly 1000 such tiles), where changed tiles are found by pseudo-randomly polling 1 pixel tall horizontal scanlines separated vertically by 32 pixels. This is a surprisingly effective algorithm for finding changed regions. For keyboard and mouse user input the XTEST extension is used to pass the input events to the X server. To detect XBell "beeps" the XKEYBOARD extension is used. If available, the XFIXES extension is used to retrieve the current mouse cursor shape. Also, if available the X DAMAGE extension is used to receive hints from the X server where modified regions on the screen are. This greatly reduces the system load when not much is changing on the screen and also improves how quickly the screen is updated.

Barbershop mirrors effect

What if x11vnc is started up, and vncviewer is then started up on the same machine and displayed on the same display x11vnc is polling? One might "accidentally" do this when first testing out the programs. You get an interesting recursive/feedback effect where vncviewer images keep popping up each one contained in the previous one and slightly shifted a bit by the window manager decorations. There will be an even more interesting effect if -scale is used. Also, if the XKEYBOARD is supported and the XBell "beeps" once, you get an infinite loop of beeps going off. Although all of this is mildly exciting it is not much use: you will normally run and display the viewer on a different machine!

Limitations

  • Due to the polling nature, some activities (opaque window moves, scrolling), can be pretty choppy/ragged and others (exposures of large areas) slow. Experiment with interacting a bit differently than you normally do to minimize the effects (e.g. do fullpage paging rather than line-by-line scrolling, and move windows in a single, quick motion.) Recent work has provided the -scrollcopyrect and -wireframe speedups using the CopyRect VNC encoding and other things, but they only speed up some activities, not all.

  • A rate limiting factor for x11vnc performance is that graphics hardware is optimized for writing, not reading (x11vnc reads the video framebuffer for the screen image data.) The difference can be a factor of 10 to 1000, and so it usually takes about 0.5-1 sec to read in the whole video hardware framebuffer (e.g. 5MB for 1280x1024 at depth 24 with a read rate of 5-10MB/sec.) So whenever activity changes most of the screen (e.g. moving or iconifying a large window) there is a delay of 0.5-1 sec while x11vnc reads the changed regions in. A slow framebuffer read rate will often be the performance bottleneck on a fast LAN (whereas on slower links the reduced network bandwidth becomes the bottleneck.) Note: A quick way to get a 2X speedup of this for x11vnc is to switch your X server from depth 24 (32bpp) to depth 16 (16bpp.) You get a 4X speedup going to 8bpp, but the lack of color cells is usually unacceptable. To get a sense of the read and write speeds of your video card, you can run benchmarks like: "x11perf -getimage500", "x11perf -putimage500", "x11perf -shmput500" and for XFree86 displays with direct graphics access the "dga" command (press "b" to run the benchmark and then after a few seconds press "q" to quit.) Even this "dd if=/dev/fb0 of=/dev/null" often gives a good estimate. x11vnc also prints out its estimate:

    28/02/2009 11:11:07 Autoprobing TCP port
    28/02/2009 11:11:07 Autoprobing selected port 5900
    28/02/2009 11:11:08 fb read rate: 10 MB/sec
    28/02/2009 11:11:08 screen setup finished.
    

    We have seen a few cases where the hardware fb read speed is greater than 65 MB/sec: on high end graphics workstations from SGI and Sun, and also from a Linux user using nvidia proprietary drivers for his nvidia video card. Update 2008: thankfully, these sped up drivers are becoming more common on Linux and *BSD systems and that makes x11vnc run somewhat more quickly. Sometimes they have a read rate of over 400 MB/sec. On XFree86/Xorg it is actually possible to increase the framebuffer read speed considerably (10-100 times) by using the Shadow Framebuffer (a copy of the framebuffer is kept in main memory and this can be read much more quickly.) To do this one puts the line Option "ShadowFB" "true" in the Device section of the /etc/X11/XF86Config or /etc/X11/xorg.conf file. Note that this disables 2D acceleration at the physical display and so that might be unacceptable if one plays games, etc. on the machine's local display. Nevertheless this could be handy in some circumstances, e.g. if the slower speed while sitting at the physical display was acceptable (this seems to be true for most video cards these days.) Unfortunately it does not seem shadowfb can be turned on and off dynamically... Another amusing thing one can do is use Xvfb as the X server, e.g. "xinit $HOME/.xinitrc -- /usr/X11R6/bin/Xvfb :1 -screen 0 1024x768x16" x11vnc can poll Xvfb efficiently via main memory. It's not exactly clear why one would want to do this instead of using vncserver/Xvnc, (perhaps to take advantage of an x11vnc feature, such as framebuffer scaling or built-in SSL encryption), but we mention it because it may be of use for special purpose applications. You may need to use the "-cc 4" option to force Xvfb to use a TrueColor visual instead of DirectColor. See also the description of the -create option that does all of this automatically for you (be sure to install the Xvfb package, e.g. apt-get install xvfb.) Also, a faster and more accurate way is to use the "dummy" Xorg/XFree86 device driver (or our Xdummy wrapper script.) See this FAQ for details.

  • Somewhat surprisingly, the X11 mouse (cursor) shape is write-only and cannot be queried from the X server. So traditionally in x11vnc the cursor shape stays fixed at an arrow. (see the "-cursor X" and "-cursor some" options, however, for a partial hack for the root window, etc.) However, on Solaris using the SUN_OVL overlay extension, x11vnc can show the correct mouse cursor when the -overlay option is also supplied. A similar thing is done on IRIX as well when -overlay is supplied. More generally, as of Dec/2004 x11vnc supports the new XFIXES extension (in Xorg and Solaris 10) to query the X server for the exact cursor shape, this works pretty well except that cursors with transparency (alpha channel) need to approximated to solid RGB values (some cursors look worse than others.)

  • Audio from applications is of course not redirected (separate redirectors do exist, e.g. esd, see the FAQ on this below.) The XBell() "beeps" will work if the X server supports the XKEYBOARD extension. (Note that on Solaris XKEYBOARD is disabled by default. Passing +kb to Xsun enables it.)

  • The scroll detection algorithm for the -scrollcopyrect option can give choppy or bunched up transient output and occasionally painting errors.

  • Using -threads can expose some bugs/crashes in libvncserver.

x11vnc's People

Contributors

a1346054 avatar bbidulock avatar bk138 avatar darksworm avatar dcommander avatar dscho avatar errge avatar frikiluser avatar gd-git avatar inetknght avatar jeff-dagenais avatar jlsjonas avatar kempniu avatar kraj avatar lekensteyn avatar linex-cd avatar luke-jr avatar mcb30 avatar merge avatar michalsrb avatar morgant avatar net147 avatar orbea avatar sfuhrm avatar stefanmayrhofer avatar the-42 avatar tobydox avatar vishnumotghare avatar wjt avatar znz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

x11vnc's Issues

The option "-solid" not work in xfce4 v4.12

Hi!

  1. This option "-solid" or "-solid xfce" or "-solid xfce:darkblue" not work in xfce4 v4.12, because xfce4 has another format for getting/setting wallpaper style and background color style:

xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitor%s/workspace0/image-style xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitor%s/workspace0/color-style

  1. This option not work in xfce4 v4.12 with in multi-monitor configuration too.
  2. This option can't set the background color for the xfce4 v4.12 desktop.

See the patch in the attachment:
dbk-xfce-solid-fix.patch.txt

Thx.

x11vnc on MacOS error on connection

Hello everyone,

I used x11vnc on Linux everything works fine !
But when I use it on MacOS I got this error when I connect with a VNCClient (Android App or any) ->
screen shot 2017-02-15 at 17 18 23
I got an error on my Android App VNCViewer -> "Framebuffer update too large: 1x1 at (65535, 65535)"
So I tried to modify the geometry (because maybe the resolution is too large on my Mac) like this :
x11vnc -geometry 1920.0x1080.0
but I got this error ->
screen shot 2017-02-15 at 17 22 54

This only happens on a MacOS (I have Sierra)
Can someone tell me what's wrong ?
Thank you !

Question - connecting to x11vnc on VPN

I have a question that I was wondering about for awhile.

Say I have x11vnc server setup and running on ubuntu VM. I can connect to it via vnc and all is good.
Then I run OpenVPN on that server, so my IPs changed.

From that point on, I can not access it via vnc.

Are there any ways to make sure I still can access it with or without VPN connection ?

Xinerama option doesn't work

I run this command at login but seems didn't works the -clip xinerama0 option cause it show both desktop when connecting. Is it because the new x11vnc version or am I doing something wrong?

/usr/local/bin/x11vnc -clip xinerama0 -auth /var/run/lightdm/root/:0 -display :0 -xkb -forever -shared -rfbport 5900

Keyboard input injection not working with rawfb on GNU/Linux

On GNU/Linux, it used to be possible to connect to a virtual console by using -rawfb vtX (where X is the number of the console) and to inject keyboard input. When compiling the latest source, this no longer works.
In src/linuxfb.c at lineย 361, there is a directive that excludes the code that injects keyboard input:

#if LIBVNCSERVER_HAVE_SYS_IOCTL_H && defined(TIOCSTI)
    if (keysym < 0x100) {

If I define that constant at the top of the file, everything works again properly:

#define LIBVNCSERVER_HAVE_SYS_IOCTL_H 1

Screen painting Issues

I am getting screen painting issues. Whenever I connect to my x11vnc my screen that isnt part of the -clip continually reverts back to an earlier state. It is temporary restored if I cause a repaint with my mouse or text input changes, ect. I have tried -noxdamage -xdamage -noxcomposite -xrefresh, -safer, -nocmds, -nonap, -xd_mem 0, -defer, -ncache, -ncache_cr, -noxfixes. I think I need something like -xrefresh but for windows that are not in the clip area.

`
x11vnc -many -clip 1600x900+0+0 -rfbauth ~/.vnc/passwd_1 -rfbport 5901
(Date Time) passing arg to libvncserver: -rfbauth
(Date Time) passing arg to libvncserver: /home/user/.vnc/passwd_1
(Date Time) passing arg to libvncserver: -rfbport
(Date Time) passing arg to libvncserver: 5901
(Date Time) x11vnc version: 0.9.14 lastmod: 2015-11-14 pid: 24555
(Date Time) Using X display :0.0
(Date Time) rootwin: 0x53d reswin: 0x2400001 dpy: 0x2c2ccf20
(Date Time)
(Date Time) ------------------ USEFUL INFORMATION ------------------
(Date Time) X DAMAGE available on display, using it for polling hints.
(Date Time) To disable this behavior use: '-noxdamage'
(Date Time)
(Date Time) Most compositing window managers like 'compiz' or 'beryl'
(Date Time) cause X DAMAGE to fail, and so you may not see any screen
(Date Time) updates via VNC. Either disable 'compiz' (recommended) or
(Date Time) supply the x11vnc '-noxdamage' command line option.
(Date Time) X COMPOSITE available on display, using it for window polling.
(Date Time) To disable this behavior use: '-noxcomposite'
(Date Time)
(Date Time) Wireframing: -wireframe mode is in effect for window moves.
(Date Time) If this yields undesired behavior (poor response, painting
(Date Time) errors, etc) it may be disabled:
(Date Time) - use '-nowf' to disable wireframing completely.
(Date Time) - use '-nowcr' to disable the Copy Rectangle after the
(Date Time) moved window is released in the new position.
(Date Time) Also see the -help entry for tuning parameters.
(Date Time) You can press 3 Alt_L's (Left "Alt" key) in a row to
(Date Time) repaint the screen, also see the -fixscreen option for
(Date Time) periodic repaints.
(Date Time)
(Date Time) XFIXES available on display, resetting cursor mode
(Date Time) to: '-cursor most'.
(Date Time) to disable this behavior use: '-cursor arrow'
(Date Time) or '-noxfixes'.
(Date Time) using XFIXES for cursor drawing.
(Date Time) GrabServer control via XTEST.
(Date Time)
(Date Time) Scroll Detection: -scrollcopyrect mode is in effect to
(Date Time) use RECORD extension to try to detect scrolling windows
(Date Time) (induced by either user keystroke or mouse input).
(Date Time) If this yields undesired behavior (poor response, painting
(Date Time) errors, etc) it may be disabled via: '-noscr'
(Date Time) Also see the -help entry for tuning parameters.
(Date Time) You can press 3 Alt_L's (Left "Alt" key) in a row to
(Date Time) repaint the screen, also see the -fixscreen option for
(Date Time) periodic repaints.
(Date Time)
(Date Time) XKEYBOARD: number of keysyms per keycode 7 is greater
(Date Time) than 4 and 51 keysyms are mapped above 4.
(Date Time) Automatically switching to -xkb mode.
(Date Time) If this makes the key mapping worse you can
(Date Time) disable it with the "-noxkb" option.
(Date Time) Also, remember "-remap DEAD" for accenting characters.
(Date Time)
(Date Time) X FBPM extension not supported.
(Date Time) X display is capable of DPMS.
(Date Time) --------------------------------------------------------
(Date Time)
(Date Time) Default visual ID: 0x71
(Date Time) Read initial data from X display into framebuffer.
(Date Time) initialize_screen: fb_depth/fb_bpp/fb_Bpl 24/32/6400
(Date Time)
(Date Time) X display :0.0 is 32bpp depth=24 true color
(Date Time)
(Date Time) Listening for VNC connections on TCP port 5901
(Date Time) Listening for VNC connections on TCP6 port 5900
(Date Time) Listening also on IPv6 port 5901 (socket 11)
(Date Time)
(Date Time) Xinerama is present and active (e.g. multi-head).
(Date Time) Xinerama: number of sub-screens: 5
(Date Time) Xinerama: enabling -xwarppointer mode to try to correct
(Date Time) Xinerama: mouse pointer motion. XTEST+XINERAMA bug.
(Date Time) Xinerama: Use -noxwarppointer to force XTEST.
(Date Time) Xinerama: sub-screen[0] 1920x1080+1600+452
(Date Time) Xinerama: sub-screen[1] 1920x1080+3520+452
(Date Time) Xinerama: sub-screen[2] 1024x768+576+900
(Date Time) Xinerama: sub-screen[3] 1600x900+0+0
(Date Time) Xinerama: sub-screen[4] 1680x945+5440+723
(Date Time) Xinerama: no blackouts needed (screen fills rectangle)
(Date Time)
(Date Time) fb read rate: 578 MB/sec
(Date Time) fast read: reset -wait ms to: 10
(Date Time) fast read: reset -defer ms to: 10
(Date Time) The X server says there are 20 mouse buttons.
(Date Time) screen setup finished.
(Date Time)

The VNC desktop is: hostname:1
PORT=5901


Have you tried the x11vnc '-ncache' VNC client-side pixel caching feature yet?

The scheme stores pixel data offscreen on the VNC viewer side for faster
retrieval. It should work with any VNC viewer. Try it by running:

x11vnc -ncache 10 ...

One can also add -ncache_cr for smooth 'copyrect' window motion.
More info: http://www.karlrunge.com/x11vnc/faq.html#faq-client-caching

(Date Time) Got connection from client 192.168.1.51
(Date Time) other clients:
(Date Time) Normal socket connection
(Date Time) Disabled X server key autorepeat.
(Date Time) to force back on run: 'xset r on' (3 times)
(Date Time) incr accepted_client=1 for 192.168.1.51:43226 sock=12
(Date Time) Client Protocol Version 3.8
(Date Time) Protocol version sent 3.8, using 3.8
(Date Time) rfbProcessClientSecurityType: executing handler for type 2
(Date Time) Pixel format for client 192.168.1.51:
(Date Time) 32 bpp, depth 24, little endian
(Date Time) true colour: max r 255 g 255 b 255, shift r 16 g 8 b 0
(Date Time) no translation needed
(Date Time) Using compression level 1 for client 192.168.1.51
(Date Time) Using image quality level 6 for client 192.168.1.51
(Date Time) Using JPEG subsampling 0, Q79 for client 192.168.1.51
(Date Time) Enabling X-style cursor updates for client 192.168.1.51
(Date Time) Enabling full-color cursor updates for client 192.168.1.51
(Date Time) Enabling cursor position updates for client 192.168.1.51
(Date Time) Enabling LastRect protocol extension for client 192.168.1.51
(Date Time) Using tight encoding for client 192.168.1.51
(Date Time) client 1 network rate 807.0 KB/sec (28398.8 eff KB/sec)
(Date Time) client 1 latency: 0.5 ms
(Date Time) dt1: 0.0108, dt2: 0.1922 dt3: 0.0005 bytes: 163725
(Date Time) link_rate: LR_LAN - 1 ms, 806 KB/s
(Date Time) client_set_net: 192.168.1.51 0.0021
(Date Time) created xdamage object: 0x2400036
^Ccaught signal: 2
(Date Time) deleted 50 tile_row polling images.
(Date Time) Restored X server key autorepeat to: 1
`
Note: I removed date/time/hostname/username

vnc tray menu is splitted into two monitors

With in multi-monitor configuration and the option "-gui simple,tray=noadvanced" and the panel is on the first monitor after click on the tray icon splitted the menu into two monitors.

The patch fixed this problem for one, two... monitors and top/botom .etc panel positions. Required xrandr (also linux only). There is another my stuff in this patch, also this is for example only.
dbk-tray-menu-fix.patch.txt

Stack smashing error every few minutes on Arch Linux

As the title says.

On Arch Linux, X11VNC crashes after just a few minutes, I can reliably trigger the crash, simply by trying to do anything at all using RealVNC Viewer on OSX; x11vnc will crash within 5 minutes of starting with a "stack smashing detected" error.

XOrg-Server Version: 1.18.3-2
WM: i3wm
X11VNC Version: x11vnc: 0.9.13 lastmod: 2011-08-10

*** stack smashing detected ***: x11vnc terminated
======= Backtrace: =========
/usr/lib/libc.so.6(+0x6ed4b)[0x7f532027dd4b]
/usr/lib/libc.so.6(__fortify_fail+0x37)[0x7f5320306aa7]
/usr/lib/libc.so.6(__fortify_fail+0x0)[0x7f5320306a70]
x11vnc[0x4b4f65]
x11vnc[0x4b53fb]
/usr/lib/libXtst.so.6(+0x1ab6)[0x7f5321dd7ab6]
/usr/lib/libXtst.so.6(+0x1fae)[0x7f5321dd7fae]
/usr/lib/libX11.so.6(+0x4184d)[0x7f53210ac84d]
/usr/lib/libX11.so.6(_XEventsQueued+0x55)[0x7f53210ad235]
/usr/lib/libX11.so.6(XPending+0x57)[0x7f532109eb87]
x11vnc[0x494885]
x11vnc[0x49f465]
x11vnc[0x46959c]
x11vnc[0x415d76]
/usr/lib/libc.so.6(__libc_start_main+0xf1)[0x7f532022f741]
x11vnc[0x41e879]

Add libv4l-dev to FAQ Q-2 Debian dependency list

On my Ubuntu 15.10, ./configure in http://x11vnc.sourceforge.net/dev/x11vnc-0.9.14-dev.tar.gz printed

checking linux/videodev.h usability... no
checking linux/videodev.h presence... no
checking for linux/videodev.h... no

I suggest adding to the FAQ Q-2 Debian dependency list at http://www.karlrunge.com/x11vnc/faq.html#faq-build this additional dependency:

libv4l-dev (then: sudo ln -s /usr/include/libv4l1-videodev.h /usr/include/linux/videodev.h )

Caveat: While make succeeds, and this recipe was multiply suggested on the web, I've not otherwise tested it.

-unixpw says not supported on Gentoo linux

I've always used the -unixpw option with x11vnc. At some point I upgraded and it stopped working, now it says "-unixpw is not supported on this OS/machine". I didn't have time to look at it when it first happened, and I don't recall how long ago the upgrade was, sorry. Looking at unixpw.c, this error occurs when one of LIBVNCSERVER_HAVE_FORK, LIBVNCSERVER_HAVE_SYS_WAIT_H, or LIBVNCSERVER_HAVE_WAITPID is not defined. On my system (libvncserver-0.9.10) /usr/include/rfb/rfbconfig.h doesn't seem to have LIBVNCSERVER_HAVE_WAITPID defined, although of course linux supports that call. Reviewing the source for libvncserver, I don't see that define anywhere. Why is x11vnc using it?

Some Cyrillic characters are non-printable

Hello.

While typing in cyrrilic (for example in russian language) some characters appear like "รณ" (must be russian "y") or don't appear at all. In stdout there are many messages like:

"19/04/2016 23:56:35 added missing keysym to X display: 248 0x6db "Cyrillic_sha"

If disconnect and connect again remote session, there may other characters will be unavailable. Using "-remap" key doesn't solve the problem.

In attachment there is file which I use for remapping.
remap.txt

Problems with option -timeout

I recently wrote the following script to help unskilled users connect to my listening VNC client:

https://github.com/rdiez/Tools/tree/master/VNC

I am using x11vnc version "x11vnc: 0.9.13 lastmod: 2011-08-10", which is what comes with Xubuntu.

I have discovered a few issues with x11vnc's -timeout option that I have documented in the script's comments. I'll describe them here again:

1 - If the remote IP address does exist, but drops all packets, x11vnc will wait for too long.

This is actually not an issue with -timeout itself. I wonder where the very long connection timeout comes from, and how to change it. This should probably be separate socket option, and not a global -timeout setting for the whole connection procedure.

2 - The timeout specified with -timeout can trigger when the user is being prompted by "-accept popup:0", which probably should not happen. If the timeout triggers while the user is being prompted, x11vnc freezes in such a way, that only SIGKILL will close it.

3 - If the timeout triggers, x11vnc does not exit with a non-zero exit code. Therefore, the calling script has no way to know whether the connection succeeded or not.

x11vnc -bg or -loopbg

x11vnc no longer goes into the background like previous versions. The -bg and -loopbg options no longer work.

Build issues on Linux Mint 19 (Ubuntu 18.04)

I am suffering a rather infamous (it seems) problem of "stack smashing detected" bombs. It's been fixed:

https://gist.github.com/mangoliou/407d6a39a60d128610c20c4143f39f0d
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=859213

But the x11vnc package in Ubutnu 18 repos seems to predate those fixes:

$ x11vnc --version
x11vnc: 0.9.13 lastmod: 2011-08-10

(looks like it's time someone updated the Ubuntu repos, not least as Vino sucks and x11vnc rocks by comparison)

That aside, I'm a big user of git slowly and prefer to clone the repo and build than to to do it from a tarball. There's one drawback to that, in that the build system for x11vnc differs a little between them. Clearly because the instructions here:

https://github.com/LibVNC/x11vnc#building-x11vnc

are dated. There is on configure script in the repo, instead I presume we need to run autogen.sh to make one. Fine, that seems to go all right (though installed automake, autoconf and autoreconf before that worked). But now I find myself stuck on an openssl issue, not how it bombs below with: "Package requirements (openssl >= 1.0.0) were not met"

But I have openssl installed, 1.1.0 no less:

~/workspace/x11vnc$ ./autogen.sh
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal -I m4
autoreconf: configure.ac: tracing
autoreconf: configure.ac: not using Libtool
autoreconf: running: /usr/bin/autoconf
autoreconf: running: /usr/bin/autoheader
autoreconf: running: automake --add-missing --copy --no-force
autoreconf: Leaving directory `.'
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether make supports nested variables... (cached) yes
checking whether to enable maintainer-specific portions of Makefiles... yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking for a sed that does not truncate output... /bin/sed
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for RAND_file_name in -lcrypto... no
checking for crypt... no
checking for crypt in -lcrypt... yes
checking for OPENSSL... no
configure: error: Package requirements (openssl >= 1.0.0) were not met:

No package 'openssl' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables OPENSSL_CFLAGS
and OPENSSL_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

~/workspace/x11vnc$ apt show openssl
Package: openssl
Version: 1.1.0g-2ubuntu4.1
Priority: important
Section: utils
Origin: Ubuntu
Maintainer: Ubuntu Developers <[email protected]>
Original-Maintainer: Debian OpenSSL Team <[email protected]>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 1,125 kB
Depends: libc6 (>= 2.15), libssl1.1 (>= 1.1.0)
Suggests: ca-certificates
Homepage: https://www.openssl.org/
Task: minimal
Supported: 5y
Download-Size: 532 kB
APT-Manual-Installed: yes
APT-Sources: http://mirror.aarnet.edu.au/pub/ubuntu/archive bionic-updates/main amd64 Packages
Description: Secure Sockets Layer toolkit - cryptographic utility
 This package is part of the OpenSSL project's implementation of the SSL
 and TLS cryptographic protocols for secure communication over the
 Internet.
 .
 It contains the general-purpose command line binary /usr/bin/openssl, useful for cryptographic operations such as:
  * creating RSA, DH, and DSA key parameters;
  * creating X.509 certificates, CSRs, and CRLs;
  * calculating message digests;
  * encrypting and decrypting with ciphers;
  * testing SSL/TLS clients and servers;
  * handling S/MIME signed or encrypted mail.

N: There is 1 additional record. Please use the '-a' switch to see it

So I'm left wondering why autoreconf (or rather, pkg-config) doesn't know about that, and how to fix it.

I note that:

$ pkg-config --libs openssl
Package openssl was not found in the pkg-config search path.
Perhaps you should add the directory containing `openssl.pc'
to the PKG_CONFIG_PATH environment variable
No package 'openssl' found

differs somewhat from what apt tells me. This might be useful:


$ dpkg -L openssl
/.
/etc
/etc/ssl
/etc/ssl/certs
/etc/ssl/openssl.cnf
/etc/ssl/private
/usr
/usr/bin
/usr/bin/c_rehash
/usr/bin/openssl
/usr/lib
/usr/lib/ssl
/usr/lib/ssl/misc
/usr/lib/ssl/misc/CA.pl
/usr/lib/ssl/misc/tsget
/usr/share
/usr/share/doc
/usr/share/doc/openssl
/usr/share/doc/openssl/FAQ
/usr/share/doc/openssl/HOWTO
/usr/share/doc/openssl/HOWTO/certificates.txt.gz
/usr/share/doc/openssl/HOWTO/keys.txt
/usr/share/doc/openssl/HOWTO/proxy_certificates.txt.gz
/usr/share/doc/openssl/NEWS.Debian.gz
/usr/share/doc/openssl/NEWS.gz
/usr/share/doc/openssl/README
/usr/share/doc/openssl/README.Debian
/usr/share/doc/openssl/README.ECC
/usr/share/doc/openssl/README.ENGINE.gz
/usr/share/doc/openssl/README.optimization
/usr/share/doc/openssl/fingerprints.txt
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/openssl
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/CA.pl.1ssl.gz
/usr/share/man/man1/asn1parse.1ssl.gz
/usr/share/man/man1/ca.1ssl.gz
/usr/share/man/man1/ciphers.1ssl.gz
/usr/share/man/man1/cms.1ssl.gz
/usr/share/man/man1/crl.1ssl.gz
/usr/share/man/man1/crl2pkcs7.1ssl.gz
/usr/share/man/man1/dgst.1ssl.gz
/usr/share/man/man1/dhparam.1ssl.gz
/usr/share/man/man1/dsa.1ssl.gz
/usr/share/man/man1/dsaparam.1ssl.gz
/usr/share/man/man1/ec.1ssl.gz
/usr/share/man/man1/ecparam.1ssl.gz
/usr/share/man/man1/enc.1ssl.gz
/usr/share/man/man1/engine.1ssl.gz
/usr/share/man/man1/errstr.1ssl.gz
/usr/share/man/man1/gendsa.1ssl.gz
/usr/share/man/man1/genpkey.1ssl.gz
/usr/share/man/man1/genrsa.1ssl.gz
/usr/share/man/man1/list.1ssl.gz
/usr/share/man/man1/nseq.1ssl.gz
/usr/share/man/man1/ocsp.1ssl.gz
/usr/share/man/man1/openssl.1ssl.gz
/usr/share/man/man1/passwd.1ssl.gz
/usr/share/man/man1/pkcs12.1ssl.gz
/usr/share/man/man1/pkcs7.1ssl.gz
/usr/share/man/man1/pkcs8.1ssl.gz
/usr/share/man/man1/pkey.1ssl.gz
/usr/share/man/man1/pkeyparam.1ssl.gz
/usr/share/man/man1/pkeyutl.1ssl.gz
/usr/share/man/man1/rand.1ssl.gz
/usr/share/man/man1/rehash.1ssl.gz
/usr/share/man/man1/req.1ssl.gz
/usr/share/man/man1/rsa.1ssl.gz
/usr/share/man/man1/rsautl.1ssl.gz
/usr/share/man/man1/s_client.1ssl.gz
/usr/share/man/man1/s_server.1ssl.gz
/usr/share/man/man1/s_time.1ssl.gz
/usr/share/man/man1/sess_id.1ssl.gz
/usr/share/man/man1/smime.1ssl.gz
/usr/share/man/man1/speed.1ssl.gz
/usr/share/man/man1/spkac.1ssl.gz
/usr/share/man/man1/ts.1ssl.gz
/usr/share/man/man1/tsget.1ssl.gz
/usr/share/man/man1/verify.1ssl.gz
/usr/share/man/man1/version.1ssl.gz
/usr/share/man/man1/x509.1ssl.gz
/usr/share/man/man5
/usr/share/man/man5/config.5ssl.gz
/usr/share/man/man5/x509v3_config.5ssl.gz
/usr/share/man/man7
/usr/share/man/man7/crypto.7ssl.gz
/usr/share/man/man7/ct.7ssl.gz
/usr/share/man/man7/des_modes.7ssl.gz
/usr/share/man/man7/evp.7ssl.gz
/usr/share/man/man7/ssl.7ssl.gz
/usr/share/man/man7/x509.7ssl.gz
/usr/lib/ssl/certs
/usr/lib/ssl/openssl.cnf
/usr/lib/ssl/private
/usr/share/doc/openssl/changelog.Debian.gz
/usr/share/doc/openssl/changelog.gz
/usr/share/doc/openssl/copyright
/usr/share/man/man1/blake2b.1ssl.gz
/usr/share/man/man1/blake2s.1ssl.gz
/usr/share/man/man1/c_rehash.1ssl.gz
/usr/share/man/man1/md4.1ssl.gz
/usr/share/man/man1/md5.1ssl.gz
/usr/share/man/man1/mdc2.1ssl.gz
/usr/share/man/man1/openssl-asn1parse.1ssl.gz
/usr/share/man/man1/openssl-c_rehash.1ssl.gz
/usr/share/man/man1/openssl-ca.1ssl.gz
/usr/share/man/man1/openssl-ciphers.1ssl.gz
/usr/share/man/man1/openssl-cms.1ssl.gz
/usr/share/man/man1/openssl-crl.1ssl.gz
/usr/share/man/man1/openssl-crl2pkcs7.1ssl.gz
/usr/share/man/man1/openssl-dgst.1ssl.gz
/usr/share/man/man1/openssl-dhparam.1ssl.gz
/usr/share/man/man1/openssl-dsa.1ssl.gz
/usr/share/man/man1/openssl-dsaparam.1ssl.gz
/usr/share/man/man1/openssl-ec.1ssl.gz
/usr/share/man/man1/openssl-ecparam.1ssl.gz
/usr/share/man/man1/openssl-enc.1ssl.gz
/usr/share/man/man1/openssl-engine.1ssl.gz
/usr/share/man/man1/openssl-errstr.1ssl.gz
/usr/share/man/man1/openssl-gendsa.1ssl.gz
/usr/share/man/man1/openssl-genpkey.1ssl.gz
/usr/share/man/man1/openssl-genrsa.1ssl.gz
/usr/share/man/man1/openssl-list.1ssl.gz
/usr/share/man/man1/openssl-nseq.1ssl.gz
/usr/share/man/man1/openssl-ocsp.1ssl.gz
/usr/share/man/man1/openssl-passwd.1ssl.gz
/usr/share/man/man1/openssl-pkcs12.1ssl.gz
/usr/share/man/man1/openssl-pkcs7.1ssl.gz
/usr/share/man/man1/openssl-pkcs8.1ssl.gz
/usr/share/man/man1/openssl-pkey.1ssl.gz
/usr/share/man/man1/openssl-pkeyparam.1ssl.gz
/usr/share/man/man1/openssl-pkeyutl.1ssl.gz
/usr/share/man/man1/openssl-rand.1ssl.gz
/usr/share/man/man1/openssl-rehash.1ssl.gz
/usr/share/man/man1/openssl-req.1ssl.gz
/usr/share/man/man1/openssl-rsa.1ssl.gz
/usr/share/man/man1/openssl-rsautl.1ssl.gz
/usr/share/man/man1/openssl-s_client.1ssl.gz
/usr/share/man/man1/openssl-s_server.1ssl.gz
/usr/share/man/man1/openssl-s_time.1ssl.gz
/usr/share/man/man1/openssl-sess_id.1ssl.gz
/usr/share/man/man1/openssl-smime.1ssl.gz
/usr/share/man/man1/openssl-speed.1ssl.gz
/usr/share/man/man1/openssl-spkac.1ssl.gz
/usr/share/man/man1/openssl-ts.1ssl.gz
/usr/share/man/man1/openssl-tsget.1ssl.gz
/usr/share/man/man1/openssl-verify.1ssl.gz
/usr/share/man/man1/openssl-version.1ssl.gz
/usr/share/man/man1/openssl-x509.1ssl.gz
/usr/share/man/man1/ripemd160.1ssl.gz
/usr/share/man/man1/sha.1ssl.gz
/usr/share/man/man1/sha1.1ssl.gz
/usr/share/man/man1/sha224.1ssl.gz
/usr/share/man/man1/sha256.1ssl.gz
/usr/share/man/man1/sha384.1ssl.gz
/usr/share/man/man1/sha512.1ssl.gz

Any tips here greatly appreciated and of course, the build documentation at:

https://github.com/LibVNC/x11vnc#building-x11vnc

Could use an update on how to build from a git repo clone, and I'm happy to do that and PR it if I learn enough to get it building that way!

Cannot build on Mac OS X without X11

As mentioned in docs, I used ./configure --without-x to configure, but the build is failed with the error:

  CC       x11vnc-xi2_devices.o
xi2_devices.c:26:10: fatal error: 'X11/Xproto.h' file not found
#include <X11/Xproto.h> 

I have no X11 installed, according to docs I can build x11vnc without it. How should I proceed?

Cursor is blocked when using -multipr

When running x11vnc with -multiptr (and -noxfixes as advised by the startup doc), the cursor is blocked in the middle of the screen from all my viewers (Screens4, MacOS Screensharing).

x11vnc was installed with this :
apt-get install -y libxtst-dev libssl-dev libjpeg-dev xorg-dev libxi-dev libvncserver-dev checkinstall autoconf
cd /tmp && wget https://github.com/LibVNC/x11vnc/archive/master.zip;unzip master.zip;cd x11vnc-master && autoreconf --install && ./configure && make && make install

Regular repainting of editor window (how to prevent this?)

This certainly wasn't happening under vino. And x11vnc is so rich in configurations it's alas both inspiring and disorienting. The specific problem I am seeing is that I am using the TightVNC viewer on a Windows 10 box to connect to and x11vnc server I run manually on an ssh session on a remote Linux Mint 19 box.

All works fine.

Oddly though when I work with the Eclipse IDE and edit a file, the whole editor pane seems to repaint every time I click the mouse in that pane. Slowly at that and obviously.

That's really making it hard to do anything in that editor. So I'm curious, if:

  1. there are any well known reasons for this that can be fixed by using appropriate options.
  2. there are useful debugging methods for working out why it happens. For example is Eclipse repainting its window? Or x11vnc repainting it on my client?

I have a gut feel it's x11vnc doing the repaint not eclipse. That vino doesn't, and that there's something to do with efforts at cleverly repainting only parts of the window that are playing up because of some subtle screen change when clicking. The selection changes, and so perhaps it's invalidating the whole editor pane? Even so it's really slow, slower than working with vino was. Though x11vnc is much faster in other contexts it seems (that and it's rich configurations bring me here).

Video dead loop (server side issue)

Affected versions: all x64 from there

Environment: ArchLinux x64, gnome, xorg, gdm, mutter, all up to date
Hardware:

MSI-1221 (PR200)
BIOS: A1221IMS V1.51
CPU: Intel(R) Core(TM)2 Duo CPU T7700  @ 2.40GHz
GPU: Mobile GM965/GL960 Integrated Graphics Controller

Basically, all vnc sessions (I have tried all possible server parameters, just FYI) behave as follows:
when server is started it takes a screen snapshot, after a few time, when client connects, it takes another snapshot, and it is all, nothing more happens. Server renders these two snapshots to a client in endless loop.

To check this I made simple debugging patch (hashing snap buffer, to see if it actually changes):

diff -aur a/scan.c b/scan.c
--- a/scan.c	2015-11-15 03:49:21.000000000 +1000
+++ b/scan.c	2017-10-05 05:39:49.043697103 +1000
@@ -46,7 +46,7 @@
 #include "screen.h"
 #include "macosx.h"
 #include "userinput.h"
-
+#include <openssl/md5.h>
 /*
  * routines for scanning and reading the X11 display for changes, and
  * for doing all the tile work (shm, etc).
@@ -2796,6 +2796,8 @@
 	dtime0(&dt);
 	X_LOCK;
 
+        unsigned char digest[33]; digest[32] = 0;
+
 	/* screen may be too big for 1 shm area, so broken into fs_factor */
 	for (i=0; i < fs_factor; i++) {
 		XRANDR_SET_TRAP_RET(-1, "copy_snap-set");
@@ -2804,6 +2806,16 @@
 
 		memcpy(fbp, snaprect->data, (size_t) block_size);
 
+                MD5(fbp, block_size, digest);
+                for(int _dt = 31, _ds = 15; _ds >= 0 ; --_ds) {
+                    unsigned char _cin = digest[_ds],
+                                  _nibble = _cin & 0x0F;
+                    digest[_dt--] = _nibble + (_nibble > 9 ? ('a'-10) : '0');
+                    _nibble = (_cin >> 4) & 0x0F;
+                    digest[_dt--] = _nibble + (_nibble > 9 ? ('a'-10) : '0');
+                }
+                rfbLog("copy_snap(%d): %.32s\n", fs_factor, digest);
+
 		y += dpy_y / fs_factor;
 		fbp += block_size;
 	}

After long enough run I filtered the results

$ cat wrong.log |grep 'copy_snap(1)'|cut -f4 -d\ |sort -u
2a422a2f0642ed3567acf1987b5ac1cb
4e2abcb76b10ab14ff1b728caf0f2740
bfe34c8d50cb61afa12ec3c7256de42f

That shows the server actually serves only 2 pictures to a client. Then I killed vnc server and after a few time (a few minutes or so) run it again, that gives one more md5 checksum, keeping first three ones intact (this is very strange, looks as there is something cached somewhere, it is not expected to get the same initial screen on sub-sequential server run)

cat wrong.log |grep 'copy_snap(1)'|cut -f4 -d\ |sort -u
2a422a2f0642ed3567acf1987b5ac1cb
4e2abcb76b10ab14ff1b728caf0f2740
bfe34c8d50cb61afa12ec3c7256de42f
e9e5eb4961197d6801ffc5fe1bb91edb

Server is run with
sudo -u "#$uid" x11vnc -display "$dpy" -localhost -nopw -auth "$auth_file" -snapfb for the test

But, any other parameters combinations on vanilla x11vnc give the same endless loop.

Mouse and keyboard events do work fine. I can open apps, type commands etc, having both machines staying near by.

Another interesting thing, when there is screen lock curtain on the target machine, clicking mouse button in vnc client shows desktop, while on the target there is still curtain on the screen, need to slide mouse up to remove it.

Also tried with locking disabled, nothing changes, the same two pictures endlessly.

I have a logs, have a video showing the issue. Please let me know what else information, testing can I feed to help debugging and fixing issue.

Sometimes gone works and sometimes is doesnt.

I seem to be having issues with the -gone feature. This is the the command I am running

/usr/bin/x11vnc -localhost -clientdpms -rfbauth /opt/vnc/passwd -auth /run/lightdm/root/:0 -display :0 -forever -nevershared -gone '/usr/bin/xflock4 &' -noipv6 -bg -o /var/log/x11vnc.log -v

Sometimes when I log out the screen is locked sometimes is isn't. I have tried switching xflock over to just xscreensaver but still have the same results. I have checked the log's and dont's see any difference between when it works and when it doesn't all it does is print out the command when I close the session. Please let me know what additional info I can provide.

Oh I am using the latest package from arch linux
x11vnc: 0.9.14 lastmod: 2015-11-14

Compile error after clone

Hello,

I'm on Linux.
I just want to recompile the binary "tkx11vnc".
After cloning the repo and doing "./autogen.sh", a Makefile is generated.
When I'm doing "make", after some time I got this errors :

/home/myhome/x11vnc/src/8to24.c:1226: undefined reference to `sraRgnDestroy'
/home/myhome/x11vnc/src/8to24.c:1292: undefined reference to `sraRgnCreateRect'
/home/myhome/x11vnc/src/8to24.c:1320: undefined reference to `sraRgnCreateRect'
/home/myhome/x11vnc/src/8to24.c:1325: undefined reference to `sraRgnSubtract'
/home/myhome/x11vnc/src/8to24.c:1327: undefined reference to `sraRgnDestroy'
/home/myhome/x11vnc/src/8to24.c:1329: undefined reference to `sraRgnEmpty'
/home/myhome/x11vnc/src/8to24.c:1334: undefined reference to `sraRgnEmpty'
/home/myhome/x11vnc/src/xinerama.c:359: undefined reference to `rfbLog'
/home/myhome/x11vnc/src/xinerama.c:369: undefined reference to `rfbLog'
/home/myhome/x11vnc/src/xinerama.c:377: undefined reference to `rfbLog'
/home/myhome/x11vnc/src/xinerama.c:378: undefined reference to `rfbLog'

... and many others (it's like libvncserver.so is not linked)

Can someone please help me?
Thank you !

X DPMS extension not supported

src/pm.c checks for LIBVNCSERVER_HAVE_DPMS which seems to be no longer defined in libvncserver's rfb/rfbconfig.h. Should it be HAVE_DPMS from generated config.h instead?

Same could be true for other macros as well, please double-check.

Remote windows can't be dragged within VNC viewer if x11vnc is started with -grabkbd option

I'm using Epoptes for management of my school lab. It uses x11vnc as a VNC server for student clients. If I tell Epoptes to open remote client desktop for assisting, with input grabbing enabled, it spawns x11vnc on the client with options -grabkbd and -grabptr.

However, I've noticed that, when x11vnc is started with -grabkbd option, all windows accessed within VNC viewer seems out of focus (see e.g. a xterm cursor aspect). Moreover, I'm unable to drag windows within VNC viewer (it beeps when I try to drag one).

If I start x11vnc without -grabkbd option, everything goes fine.

All computers in my lab are running Debian Jessie.

-unixpw / -unixpw_nis does not work on Alpine Linux

Hello,

I compiled libvncserver and x11vnc through git sources without any errors and managed to launch x11vnc. However, using -unixpw fails everytime with the logs showing

x11vnc stderr | unixpw_verify: su_verify login for 'user' failed.
x11vnc stderr | 02/02/2017 04:18:14 unixpw_verify: 'user'
x11vnc stderr | 02/02/2017 04:18:14 su_verify: 'user' for login.
x11vnc stderr | 02/02/2017 04:18:14 unixpw_verify: su_verify login for 'user' failed.

There is no prior error before that however there is one line with 'unixpw' when I first connect.

x11vnc stderr | 02/02/2017 04:17:50 new client: ::1 in non-unixpw_in_rfbPE.
x11vnc stderr | 02/02/2017 04:17:50 rfbPE: got new client in non-rfbPE

I connect via a SSH local tunnel via VNC Viewer client from UltraVNC.

As with the error with -unixpw_nis, it says that this os/machine is unsupported.

Do let me know if further logs / info is needed

No unicode support for clipboard

OS: Arch Linux (Server) / Debian Sid (Client)
x11vnc version: 0.9.15
VNC client: Vinagre 3.22.0

When I try to do a copy/paste from the client to the server, and the string that's in the clipboard has CJK/Unicode characters, it translates to question marks on the server for some reason. Not sure if there's something misconfigured, or if I did something wrong, but I did read the manpage for x11vnc, and there aren't specific switches for this problem, so I'll assume this hasn't been implemented yet, or Vinagre is the culprit.

Here's the command line with which I start x11vnc:

$ x11vnc -many -allow 192.168.1. -nodragging

Ubuntu 18.04 ARM64 w/ XFCE 4.12 - stack smash randomly

I'm using Ubuntu 18.04 arm64 on a Raspberry Pi 3B. I use xrdp with x11vnc to connect through windows rdp. It works well to look at the display, however when hitting keys and taking actions that change large portions of the screen, then the x11vnc server closes, saying it received signal 6 and had a stack smash.

x11vnc version: 0.9.13 lastmod: 2011-08-10 (ubuntu bionic repository version)
xfce version 4.12
xorg version x11r7 (I think. Xorg -version throws me 'only console users may run this')

I'm running a display (and only that display) on a ribbon cable that's connected to the pi's display output. This may or may not be related, probably isn't though.

So what I did to create this logfile is to run
x11vnc -nopw -o ~/Desktop/x11vnc_crash.log -debug_pointer -debug_keyboard -debug_tiles -debug_sel -debug_grabs -debug_scroll -debug_wireframe -debug_ncache
for testing. normally I'd run:
env UNIXPW_DISABLE_SSL=1 x11vnc -display :0 -auth .Xauthority -rfbport 5900 -no6 -shared โ€“forever โ€“loop2000 -localhost -unixpw -solid #000044 -oa /var/log/vncserver.log -wait 50 -xdamage -ncache 10 -ncache_cr
from xfce autostart (~/.config/autostart)

Then I opened a terminal and hit new tab a couple of times (ctrl + shift + t), which caused a crash. I did not record that one. So I reopened and attempted to close the tabs in the terminal window. This is the crash recorded:

x11vnc_crash.log

I don't need it often, but It must run stable.
I tried running with -noxdamge -nowf -noncache:
x11vnc -display :0 -auth .Xauthority -rfbport 5900 -no6 -shared -forever -localhost -o ~/Desktop/x11vnc_crash2.log -wait 50 -noxdamage -noncache -nowf -debug_pointer -debug_keyboard -debug_tiles -debug_sel -debug_grabs -debug_scroll -debug_wireframe -debug_ncache
It still crashes like so (closing tabs in xfce term again):

x11vnc_crash2.log

Server mouse cursor has slow refresh rate on client

Environment

Tested with the 0.9.13 package that comes with ubuntu trusty (14.04).

Summary

When the client supports CursorPosUpdates and CursorShapeUpdates, the refresh rate for the mouse cursor is slow enough that, if the user is moving the mouse on the server but observing the cursor on the client, the hand-eye coordination is impaired, and usability of the cursor suffers.

This happens even on the best connection possible, over an ethernet cable directly connecting two machines.

A Workaround is to use -nocursorshape -nocursorpos to force the server to draw the cursor.

Description

When the client supports CursorPosUpdates and CursorShapeUpdates, the refresh rate for the cursor is somewhat slow. Much slower than the refresh rate of the rest of the screen.

For example, a x11vnc server connected to a client over ethernet cable refreshes video fast enough to to be (barely) watchable, if not smooth.

But the refresh rate of the mouse cursor under the same circumstances is low enough that if I'm moving the mouse on the server while looking at the cursor on the client, it's usual for me to miss the mark and have to correct the mouse position while clicking on things.

Notice that, under usual circumstances, this is not an issue:

  • When the mouse of the client is being used to control the server, the mouse movement observed is the local mouse movement, so the server mouse position is ignored/overridden by the mouse at the client.

  • When the mouse of the server is being moved by a user looking at the screen on the server, while being watched by another user at the client, this is also not an issue, since all the user at the client has to see is an approximate trajectory that the mouse takes.

The problem only happens when a user is moving the mouse at the server but is forced to see the cursor through the client. This could happen in two situations that I'm aware of:

  • The user is using a vnc client as an extended screen (this is my issue, currently), like in this stack overflow answer or the original ArchLinux forum tutorial .

  • The user is using a vnc client as a big projection screen or meeting room TV and needs to look at the client screen rather than the server screen for some reason (think meetings).

Workaround

Using both -nocursorshape -nocursorpos switches for x11vnc on the server forces it to draw the server mouse over the connection, which has a fast enough refresh rate that hand-eye coordination is improved and is usable, though like in the video case, still not perfect. And it reduces performance of the connection by forcing more redraws (though this is not noticeable on a fast enough connection).

Ideal final solution

If the connection is good enough, there is no reason for the mouse movement rate to be so low. Both x2x and Synergy can transfer mouse movements fast enough that it feels like a local mouse.

If it's not desirable to swamp the client or the connection with mouse movements, the server could get a new parameter for -cursorpos like some or all (some would be the default, mimicking current behavior), or perhaps a numeric refresh rate.

With plenty of old notebooks, old tablets with large screens and vnc-capable SmartTVs lying around, I can expect the "extended screen" use of x11vnc to start gaining more users.

disable extra monitors

Hi,

Is it possible to configure x11vnc to disable any monitor that isn't the primary? This is to avoid having to scroll through 3 different screens. If the monitors were disabled, all the windows will move to the primary monitor

-unixpw doesn't seem to work, OpenSUSE 42.3

Dear x11vnc team!

I'm a long time x11vnc user. I'm observing an issue.

I compiled x11vnc 0.9.15 lastmod: 2018-02-04 version successfully, on OpenSUSE 42.3.
I'm trying to use x11vnc in a systemd service, it would run with below options:

/etc/systemd/system/x11vnc.socket

[Unit]
Description=x11vnc Socket for Per-Connection Servers

[Socket]
ListenStream=5900
Accept=yes

[Install]
WantedBy=sockets.target

/etc/systemd/system/[email protected]

[Unit]
Description=x11vnc Systemd Service Component
After=network.target
Requires=x11vnc.socket

[Service]
EnvironmentFile=-/etc/sysconfig/x11vnc_config
Type=simple
ExecStart=-/usr/local/bin/x11vnc $X11VNC_ARGUMENTS
ExecReload=-/usr/local/bin/x11vnc $X11VNC_ARGUMENTS
RemainAfterExit=yes
StandardInput=socket
StandardOutput=inherit

[Install]
WantedBy=multi-user.target
Also=x11vnc.socket

/etc/sysconfig/x11vnc_config

UNIXPW_DISABLE_LOCALHOST=1
UNIXPW_DISABLE_SSL=1
FD_SESS=xfce
X11VNC_CREATE_GEOM=1600x950
FD_USERPREFS=x11vnc_create
X11VNC_ARGUMENTS="-inetd -unixpw -users unixpw= -xdummy -o /var/log/x11vnc.log -sloppy_keys -clear_keys -skip_lockkeys -repeat"

Please note that I'm not fully sure if systemd is configured properly, but it seems to work.
Also please note that above is sending is cleartext, and its not recommended in normal cases. Anyway I get the same issue also with SSL.

Service is started:
systemctl daemon-reload
systemctl status x11vnc.socket
systemctl start x11vnc.socket

Now, after connecting with a VNC viewer (TigerVNC), the '-unixpw' authentication getting failed always.
I'm no sure if some configuration is missing or this is an issue in x11vnc.

x11vnc log:

09/03/2018 14:55:24 Skipping -ssl/-stunnel requirement due to
09/03/2018 14:55:24 UNIXPW_DISABLE_SSL setting.
09/03/2018 14:55:24
09/03/2018 14:55:24 x11vnc version: 0.9.15 lastmod: 2018-02-04 pid: 4094
09/03/2018 14:55:24 Enabling -xrandr for possible use of Xdummy server.
09/03/2018 14:55:24
09/03/2018 14:55:24 wait_for_client: WAIT:cmd=FINDCREATEDISPLAY-Xdummy
09/03/2018 14:55:24
09/03/2018 14:55:24 initialize_screen: fb_depth/fb_bpp/fb_Bpl 24/32/2560
09/03/2018 14:55:24
09/03/2018 14:55:24 other clients:
09/03/2018 14:55:24 Normal socket connection
09/03/2018 14:55:24 incr accepted_client=1 for ::ffff:10.0.2.2:49557 sock=3
09/03/2018 14:55:24 new client: ::ffff:10.0.2.2 in non-unixpw_in_rfbPE.
09/03/2018 14:55:24 rfbPE: got new client in non-rfbPE
09/03/2018 14:55:24 wait_for_client: got client
09/03/2018 14:55:24 taking unixpw_client off hold.
09/03/2018 14:55:24 Client Protocol Version 3.8
09/03/2018 14:55:24 Protocol version sent 3.8, using 3.8
09/03/2018 14:55:24 rfbProcessClientSecurityType: executing handler for type 1
09/03/2018 14:55:24 rfbProcessClientSecurityType: returning securityResult for client rfb version >= 3.8
09/03/2018 14:55:24 Pixel format for client ::ffff:10.0.2.2:
09/03/2018 14:55:24 32 bpp, depth 24, little endian
09/03/2018 14:55:24 true colour: max r 255 g 255 b 255, shift r 16 g 8 b 0
09/03/2018 14:55:24 no translation needed
09/03/2018 14:55:24 Enabling X-style cursor updates for client ::ffff:10.0.2.2
09/03/2018 14:55:24 Enabling full-color cursor updates for client ::ffff:10.0.2.2
09/03/2018 14:55:24 rfbProcessClientNormalMessage: ignoring unsupported encoding type Enc(0xFFFFFEC6)
09/03/2018 14:55:24 Enabling NewFBSize protocol extension for client ::ffff:10.0.2.2
09/03/2018 14:55:24 rfbProcessClientNormalMessage: ignoring unsupported encoding type Enc(0xFFFFFECC)
09/03/2018 14:55:24 rfbProcessClientNormalMessage: ignoring unsupported encoding type Enc(0xFFFFFECD)
09/03/2018 14:55:24 Enabling LastRect protocol extension for client ::ffff:10.0.2.2
09/03/2018 14:55:24 rfbProcessClientNormalMessage: ignoring unsupported encoding type Enc(0xFFFFFEC7)
09/03/2018 14:55:24 rfbProcessClientNormalMessage: ignoring unsupported encoding type Enc(0xFFFFFEC8)
09/03/2018 14:55:24 Using image quality level 8 for client ::ffff:10.0.2.2
09/03/2018 14:55:24 Using JPEG subsampling 0, Q92 for client ::ffff:10.0.2.2
09/03/2018 14:55:24 Using tight encoding for client ::ffff:10.0.2.2
09/03/2018 14:55:28 unixpw_verify: 'user'
09/03/2018 14:55:28 su_verify: 'user' for login.
09/03/2018 14:55:28 unixpw_verify: su_verify login for 'user' failed.
09/03/2018 14:55:32 unixpw_verify: 'user'
09/03/2018 14:55:32 su_verify: 'user' for login.
09/03/2018 14:55:32 unixpw_verify: su_verify login for 'user' failed.
09/03/2018 14:55:35 rfbProcessClientNormalMessage: read: Connection reset by peer
09/03/2018 14:55:35 client_count: 0
09/03/2018 14:55:35 inetd viewer exited.

OS is OpenSUSE 42.3, 64bit.
Kernel version: 4.4.114-42-default

Could you check this? How can I troubleshoot it?
Thanks in advance

question - enforce <x11vnc_server:0>

Simple question, but it drives me crazy.

I start x11vnc from crontab.

Command line:
@reboot sleep 20 && sudo x11vnc -forever -loop -rfbauth /etc/x11vnc.pass -shared

and connect to it with remmina client like: x11vnc_server:XX .

Sometimes, if I have any issues, I stop start x11vnc
The problem - why my connection string changes:
x11vnc_server:0 and then x11vnc_server:1 and then x11vnc_server:2?
And how to make it not change?

Thanks in advance

Existing display not found when running as service, OpenSUSE 42.3

Dear x11vnc team!

I'm using latest x11vnc 0.9.15 , master code taken on 2018-07-24.
OpenSUSE 42.3. It's running as systemd service.

Basicly this arguments used:

UNIXPW_DISABLE_SSL=1
x11vnc -inetd -unixpw -users unixpw= -xdummy -o /var/log/x11vnc.log -sloppy_keys -clear_keys -skip_lockkeys -repeat

Problem: an existing running Xdummy display is not found by x11vnc. The service is creating a new display again, even if one was already created and running.

The issue is not a new, problem is already present in x11vnc 0.9.13.
It worked with OpenSUSE 13.1, but issue since OpenSUSE 13.2.

Reproduction steps:

  1. Login with a user

virtsuse:~ # ps -ef | grep dummy
username 4285 1 2 13:34 ? 00:00:00 /usr/local/bin/x11vnc -inetd -unixpw -users unixpw= -xdummy -o /var/log/x11vnc.log -sloppy_keys -clear_keys -skip_lockkeys -repeat
root 4870 1 0 13:34 ? 00:00:00 /usr/bin/xinit /bin/su - username -c /tmp/.cd450914215.N1gzCg -- /usr/local/bin/Xdummy :20 -geometry 1600x950 -depth 24 -nolisten tcp -auth /tmp/.xas450925628.YZLE0G
root 4877 4870 2 13:34 ? 00:00:00 Xorg :20 -depth 24 -nolisten tcp -auth /tmp/.xas450925628.YZLE0G -config xdummy_modified_xconfig.conf_20 vt17
root 5174 1656 0 13:35 pts/1 00:00:00 grep --color=auto dummy
virtsuse:~ #

  1. Check display

username@virtsuse:/Desktop> echo $DISPLAY
:20.0
username@virtsuse:/Desktop>

  1. Close VNC window

virtsuse:~ # ps -ef | grep dummy
root 4870 1 0 13:34 ? 00:00:00 /usr/bin/xinit /bin/su - username -c /tmp/.cd450914215.N1gzCg -- /usr/local/bin/Xdummy :20 -geometry 1600x950 -depth 24 -nolisten tcp -auth /tmp/.xas450925628.YZLE0G
root 4877 4870 5 13:34 ? 00:00:03 Xorg :20 -depth 24 -nolisten tcp -auth /tmp/.xas450925628.YZLE0G -config xdummy_modified_xconfig.conf_20 vt17
root 5208 1656 0 13:36 pts/1 00:00:00 grep --color=auto dummy
virtsuse:~ #

  1. Login with same user again

virtsuse:~ # ps -ef | grep dummy
root 4870 1 0 13:34 ? 00:00:00 /usr/bin/xinit /bin/su - username -c /tmp/.cd450914215.N1gzCg -- /usr/local/bin/Xdummy :20 -geometry 1600x950 -depth 24 -nolisten tcp -auth /tmp/.xas450925628.YZLE0G
root 4877 4870 3 13:34 ? 00:00:03 Xorg :20 -depth 24 -nolisten tcp -auth /tmp/.xas450925628.YZLE0G -config xdummy_modified_xconfig.conf_20 vt17
username 5210 1 2 13:36 ? 00:00:00 /usr/local/bin/x11vnc -inetd -unixpw -users unixpw= -xdummy -o /var/log/x11vnc.log -sloppy_keys -clear_keys -skip_lockkeys -repeat
root 5770 1 0 13:36 ? 00:00:00 /usr/bin/xinit /bin/su - username -c /tmp/.cd542521118.gITjWa -- /usr/local/bin/Xdummy :21 -geometry 1600x950 -depth 24 -nolisten tcp -auth /tmp/.xas54253340.BlbcWf
root 5775 5770 5 13:36 ? 00:00:00 Xorg :21 -depth 24 -nolisten tcp -auth /tmp/.xas54253340.BlbcWf -config xdummy_modified_xconfig.conf_21 vt17
root 6050 1656 0 13:36 pts/1 00:00:00 grep --color=auto dummy
virtsuse:~ #

  1. Check display

username@virtsuse:/Desktop> echo $DISPLAY
:21.0
username@virtsuse:/Desktop>

Could you check this? How can I troubleshoot it?
Thanks in advance

Need a new release

There were some important fixes (e.g. "Fix buffer overflow in record_CW") and features (e.g. OpenSSL 1.1.0 support). However, some distributions (e.g. Arch) prefer to package released versions and not random git snapshots. Can we have a new official release, 0.9.15, please?

Stack Smashing Detected - x11vnc terminated

Hi,

I get the following error with websockify and novnc in Debian stable.

command line:
x11vnc -noxdamage -forever -nopw -listen 0.0.0.0 -safer -noxfixes -forever -desktop asdfasdf -pipeinput tee:"/usr/bin/ts '%Y-%m-%d %H:%M:%S' >> $LOGS/x11_keys.log"

I'm running it with Xorg with a dummy display and input.

30/12/2017 19:37:18 Enabling full-color cursor updates for client 127.0.0.1
30/12/2017 19:37:18 Using tight encoding for client 127.0.0.1
30/12/2017 19:37:19 client useCopyRect: 127.0.0.1 -1
30/12/2017 19:37:19 client_set_net: 127.0.0.1  0.0001
30/12/2017 19:37:22 client 2 network rate 165.2 KB/sec (4644.3 eff KB/sec)
30/12/2017 19:37:22 client 2 latency:  48.8 ms
30/12/2017 19:37:22 dt1: 0.0013, dt2: 0.0876 dt3: 0.0488 bytes: 14675
30/12/2017 19:37:22 link_rate: LR_UNKNOWN - 48 ms, 165 KB/s
30/12/2017 19:37:28 created selwin: 0x80002c
*** stack smashing detected ***: x11vnc terminated
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x70bcb)[0x7feb18601bcb]
/lib/x86_64-linux-gnu/libc.so.6(__fortify_fail+0x37)[0x7feb1868a227]
/lib/x86_64-linux-gnu/libc.so.6(__fortify_fail+0x0)[0x7feb1868a1f0]
x11vnc(+0xb8887)[0x55dd04bf2887]
x11vnc(+0xb8d3b)[0x55dd04bf2d3b]
/usr/lib/x86_64-linux-gnu/libXtst.so.6(+0x19d8)[0x7feb1a3729d8]
/usr/lib/x86_64-linux-gnu/libXtst.so.6(+0x1f55)[0x7feb1a372f55]
/usr/lib/x86_64-linux-gnu/libX11.so.6(+0x421dd)[0x7feb1964a1dd]
/usr/lib/x86_64-linux-gnu/libX11.so.6(_XEventsQueued+0x55)[0x7feb1964ab15]
/usr/lib/x86_64-linux-gnu/libX11.so.6(XPending+0x57)[0x7feb1963c7e7]
x11vnc(+0x97060)[0x55dd04bd1060]
x11vnc(+0xa1f95)[0x55dd04bdbf95]
x11vnc(+0x6a77c)[0x55dd04ba477c]
x11vnc(+0x13ae4)[0x55dd04b4dae4]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf1)[0x7feb185b12b1]
x11vnc(+0x1cd7a)[0x55dd04b56d7a]
======= Memory map: ========
55dd04b3a000-55dd04c8b000 r-xp 00000000 00:93 1171                       /usr/bin/x11vnc
55dd04e8a000-55dd04e8b000 r--p 00150000 00:93 1171                       /usr/bin/x11vnc
55dd04e8b000-55dd04ed1000 rw-p 00151000 00:93 1171                       /usr/bin/x11vnc
55dd04ed1000-55dd05112000 rw-p 00000000 00:00 0
55dd055ff000-55dd058c1000 rw-p 00000000 00:00 0                          [heap]
7feb14266000-7feb1427c000 r-xp 00000000 00:93 175                        /lib/x86_64-linux-gnu/libgcc_s.so.1
7feb1427c000-7feb1447b000 ---p 00016000 00:93 175                        /lib/x86_64-linux-gnu/libgcc_s.so.1
7feb1447b000-7feb1447c000 r--p 00015000 00:93 175                        /lib/x86_64-linux-gnu/libgcc_s.so.1
7feb1447c000-7feb1447d000 rw-p 00016000 00:93 175                        /lib/x86_64-linux-gnu/libgcc_s.so.1
7feb1447d000-7feb14487000 r-xp 00000000 00:93 57                         /lib/x86_64-linux-gnu/libnss_files-2.24.so
7feb14487000-7feb14687000 ---p 0000a000 00:93 57                         /lib/x86_64-linux-gnu/libnss_files-2.24.so
7feb14687000-7feb14688000 r--p 0000a000 00:93 57                         /lib/x86_64-linux-gnu/libnss_files-2.24.so
7feb14688000-7feb14689000 rw-p 0000b000 00:93 57                         /lib/x86_64-linux-gnu/libnss_files-2.24.so
7feb14689000-7feb1468f000 rw-p 00000000 00:00 0
7feb1468f000-7feb146b7000 rw-s 00000000 00:05 1376297                    /SYSV00000000 (deleted)
7feb146b7000-7feb146de000 rw-s 00000000 00:05 1343528                    /SYSV00000000 (deleted)
7feb146de000-7feb14704000 rw-s 00000000 00:05 1310759                    /SYSV00000000 (deleted)
7feb14704000-7feb14729000 rw-s 00000000 00:05 1277990                    /SYSV00000000 (deleted)
7feb14729000-7feb1474d000 rw-s 00000000 00:05 1245221                    /SYSV00000000 (deleted)
7feb1474d000-7feb14770000 rw-s 00000000 00:05 1212452                    /SYSV00000000 (deleted)
7feb14770000-7feb14792000 rw-s 00000000 00:05 1179683                    /SYSV00000000 (deleted)
7feb14792000-7feb147b3000 rw-s 00000000 00:05 1146914                    /SYSV00000000 (deleted)
7feb147b3000-7feb147d3000 rw-s 00000000 00:05 1114145                    /SYSV00000000 (deleted)
7feb147d3000-7feb147f2000 rw-s 00000000 00:05 1081376                    /SYSV00000000 (deleted)
7feb147f2000-7feb14810000 rw-s 00000000 00:05 1048607                    /SYSV00000000 (deleted)
7feb14810000-7feb1482d000 rw-s 00000000 00:05 1015838                    /SYSV00000000 (deleted)
7feb1482d000-7feb14849000 rw-s 00000000 00:05 983069                     /SYSV00000000 (deleted)
7feb14849000-7feb14864000 rw-s 00000000 00:05 950300                     /SYSV00000000 (deleted)
7feb14864000-7feb1487e000 rw-s 00000000 00:05 917531                     /SYSV00000000 (deleted)
7feb1487e000-7feb14c03000 rw-p 00000000 00:00 0
7feb14c04000-7feb14f88000 rw-s 00000000 00:05 65537                      /SYSV00000000 (deleted)
7feb14f88000-7feb14ffa000 r-xp 00000000 00:93 74                         /lib/x86_64-linux-gnu/libpcre.so.3.13.3
7feb14ffa000-7feb151f9000 ---p 00072000 00:93 74                         /lib/x86_64-linux-gnu/libpcre.so.3.13.3
7feb151f9000-7feb151fa000 r--p 00071000 00:93 74                         /lib/x86_64-linux-gnu/libpcre.so.3.13.3
7feb151fa000-7feb151fb000 rw-p 00072000 00:93 74                         /lib/x86_64-linux-gnu/libpcre.so.3.13.3
7feb151fb000-7feb1520c000 r-xp 00000000 00:93 234                        /usr/lib/x86_64-linux-gnu/liblz4.so.1.7.1
7feb1520c000-7feb1540b000 ---p 00011000 00:93 234                        /usr/lib/x86_64-linux-gnu/liblz4.so.1.7.1
7feb1540b000-7feb1540c000 r--p 00010000 00:93 234                        /usr/lib/x86_64-linux-gnu/liblz4.so.1.7.1
7feb1540c000-7feb1540d000 rw-p 00011000 00:93 234                        /usr/lib/x86_64-linux-gnu/liblz4.so.1.7.1
7feb1540d000-7feb15432000 r-xp 00000000 00:93 172                        /lib/x86_64-linux-gnu/liblzma.so.5.2.2
7feb15432000-7feb15631000 ---p 00025000 00:93 172                        /lib/x86_64-linux-gnu/liblzma.so.5.2.2
7feb15631000-7feb15632000 r--p 00024000 00:93 172                        /lib/x86_64-linux-gnu/liblzma.so.5.2.2
7feb15632000-7feb15633000 rw-p 00025000 00:93 172                        /lib/x86_64-linux-gnu/liblzma.so.5.2.2
7feb15633000-7feb1563a000 r-xp 00000000 00:93 195                        /lib/x86_64-linux-gnu/librt-2.24.so
7feb1563a000-7feb15839000 ---p 00007000 00:93 195                        /lib/x86_64-linux-gnu/librt-2.24.so
7feb15839000-7feb1583a000 r--p 00006000 00:93 195                        /lib/x86_64-linux-gnu/librt-2.24.so
7feb1583a000-7feb1583b000 rw-p 00007000 00:93 195                        /lib/x86_64-linux-gnu/librt-2.24.so
7feb1583b000-7feb15860000 r-xp 00000000 00:93 72                         /lib/x86_64-linux-gnu/libselinux.so.1
7feb15860000-7feb15a5f000 ---p 00025000 00:93 72                         /lib/x86_64-linux-gnu/libselinux.so.1
7feb15a5f000-7feb15a60000 r--p 00024000 00:93 72                         /lib/x86_64-linux-gnu/libselinux.so.1
7feb15a60000-7feb15a61000 rw-p 00025000 00:93 72                         /lib/x86_64-linux-gnu/libselinux.so.1
7feb15a61000-7feb15a63000 rw-p 00000000 00:00 0
7feb15a63000-7feb15a76000 r-xp 00000000 00:93 193                        /lib/x86_64-linux-gnu/libbsd.so.0.8.3
7feb15a76000-7feb15c76000 ---p 00013000 00:93 193                        /lib/x86_64-linux-gnu/libbsd.so.0.8.3
7feb15c76000-7feb15c77000 r--p 00013000 00:93 193                        /lib/x86_64-linux-gnu/libbsd.so.0.8.3
7feb15c77000-7feb15c78000 rw-p 00014000 00:93 193                        /lib/x86_64-linux-gnu/libbsd.so.0.8.3
7feb15c78000-7feb15c79000 rw-p 00000000 00:00 0
7feb15c79000-7feb15c80000 r-xp 00000000 00:93 418                        /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4
7feb15c80000-7feb15e80000 ---p 00007000 00:93 418                        /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4
7feb15e80000-7feb15e81000 r--p 00007000 00:93 418                        /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4
7feb15e81000-7feb15e82000 rw-p 00008000 00:93 418                        /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4
7feb15e82000-7feb15e87000 r-xp 00000000 00:93 191                        /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
7feb15e87000-7feb16086000 ---p 00005000 00:93 191                        /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
7feb16086000-7feb16087000 r--p 00004000 00:93 191                        /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
7feb16087000-7feb16088000 rw-p 00005000 00:93 191                        /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
7feb16088000-7feb1608b000 r-xp 00000000 00:93 189                        /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
7feb1608b000-7feb1628a000 ---p 00003000 00:93 189                        /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
7feb1628a000-7feb1628b000 r--p 00002000 00:93 189                        /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
7feb1628b000-7feb1628c000 rw-p 00003000 00:93 189                        /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
7feb1628c000-7feb1630d000 r-xp 00000000 00:93 1110                       /usr/lib/x86_64-linux-gnu/libgmp.so.10.3.2
7feb1630d000-7feb1650d000 ---p 00081000 00:93 1110                       /usr/lib/x86_64-linux-gnu/libgmp.so.10.3.2
7feb1650d000-7feb1650e000 r--p 00081000 00:93 1110                       /usr/lib/x86_64-linux-gnu/libgmp.so.10.3.2
7feb1650e000-7feb1650f000 rw-p 00082000 00:93 1110                       /usr/lib/x86_64-linux-gnu/libgmp.so.10.3.2
7feb1650f000-7feb16542000 r-xp 00000000 00:93 1108                       /usr/lib/x86_64-linux-gnu/libhogweed.so.4.3
7feb16542000-7feb16742000 ---p 00033000 00:93 1108                       /usr/lib/x86_64-linux-gnu/libhogweed.so.4.3
7feb16742000-7feb16743000 r--p 00033000 00:93 1108                       /usr/lib/x86_64-linux-gnu/libhogweed.so.4.3
7feb16743000-7feb16744000 rw-p 00034000 00:93 1108                       /usr/lib/x86_64-linux-gnu/libhogweed.so.4.3
7feb16744000-7feb16779000 r-xp 00000000 00:93 1106                       /usr/lib/x86_64-linux-gnu/libnettle.so.6.3
7feb16779000-7feb16978000 ---p 00035000 00:93 1106                       /usr/lib/x86_64-linux-gnu/libnettle.so.6.3
7feb16978000-7feb1697a000 r--p 00034000 00:93 1106                       /usr/lib/x86_64-linux-gnu/libnettle.so.6.3
7feb1697a000-7feb1697b000 rw-p 00036000 00:93 1106                       /usr/lib/x86_64-linux-gnu/libnettle.so.6.3
7feb1697b000-7feb1698c000 r-xp 00000000 00:93 1104                       /usr/lib/x86_64-linux-gnu/libtasn1.so.6.5.3
7feb1698c000-7feb16b8c000 ---p 00011000 00:93 1104                       /usr/lib/x86_64-linux-gnu/libtasn1.so.6.5.3
7feb16b8c000-7feb16b8d000 r--p 00011000 00:93 1104                       /usr/lib/x86_64-linux-gnu/libtasn1.so.6.5.3
7feb16b8d000-7feb16b8e000 rw-p 00012000 00:93 1104                       /usr/lib/x86_64-linux-gnu/libtasn1.so.6.5.3
7feb16b8e000-7feb16bc0000 r-xp 00000000 00:93 1102                       /lib/x86_64-linux-gnu/libidn.so.11.6.16
7feb16bc0000-7feb16dc0000 ---p 00032000 00:93 1102                       /lib/x86_64-linux-gnu/libidn.so.11.6.16
7feb16dc0000-7feb16dc1000 r--p 00032000 00:93 1102                       /lib/x86_64-linux-gnu/libidn.so.11.6.16
7feb16dc1000-7feb16dc2000 rw-p 00033000 00:93 1102                       /lib/x86_64-linux-gnu/libidn.so.11.6.16
7feb16dc2000-7feb16e1c000 r-xp 00000000 00:93 1100                       /usr/lib/x86_64-linux-gnu/libp11-kit.so.0.2.0
7feb16e1c000-7feb1701b000 ---p 0005a000 00:93 1100                       /usr/lib/x86_64-linux-gnu/libp11-kit.so.0.2.0
7feb1701b000-7feb17025000 r--p 00059000 00:93 1100                       /usr/lib/x86_64-linux-gnu/libp11-kit.so.0.2.0
7feb17025000-7feb17027000 rw-p 00063000 00:93 1100                       /usr/lib/x86_64-linux-gnu/libp11-kit.so.0.2.0
7feb17027000-7feb1703a000 r-xp 00000000 00:93 226                        /lib/x86_64-linux-gnu/libgpg-error.so.0.21.0
7feb1703a000-7feb17239000 ---p 00013000 00:93 226                        /lib/x86_64-linux-gnu/libgpg-error.so.0.21.0
7feb17239000-7feb1723a000 r--p 00012000 00:93 226                        /lib/x86_64-linux-gnu/libgpg-error.so.0.21.0
7feb1723a000-7feb1723b000 rw-p 00013000 00:93 226                        /lib/x86_64-linux-gnu/libgpg-error.so.0.21.0
7feb1723b000-7feb17288000 r-xp 00000000 00:93 205                        /lib/x86_64-linux-gnu/libdbus-1.so.3.14.14
7feb17288000-7feb17488000 ---p 0004d000 00:93 205                        /lib/x86_64-linux-gnu/libdbus-1.so.3.14.14
7feb17488000-7feb1748a000 r--p 0004d000 00:93 205                        /lib/x86_64-linux-gnu/libdbus-1.so.3.14.14
7feb1748a000-7feb1748b000 rw-p 0004f000 00:93 205                        /lib/x86_64-linux-gnu/libdbus-1.so.3.14.14
7feb1748b000-7feb174b2000 r-xp 00000000 00:93 187                        /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
7feb174b2000-7feb176b1000 ---p 00027000 00:93 187                        /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
7feb176b1000-7feb176b2000 r--p 00026000 00:93 187                        /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
7feb176b2000-7feb176b3000 rw-p 00027000 00:93 187                        /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
7feb176b3000-7feb176bc000 r-xp 00000000 00:93 339                        /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0
7feb176bc000-7feb178bb000 ---p 00009000 00:93 339                        /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0
7feb178bb000-7feb178bc000 r--p 00008000 00:93 339                        /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0
7feb178bc000-7feb178bd000 rw-p 00009000 00:93 339                        /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0
7feb178bd000-7feb178cc000 r-xp 00000000 00:93 344                        /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0
7feb178cc000-7feb17acb000 ---p 0000f000 00:93 344                        /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0
7feb17acb000-7feb17acc000 r--p 0000e000 00:93 344                        /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0
7feb17acc000-7feb17acd000 rw-p 0000f000 00:93 344                        /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0
7feb17acd000-7feb17ad0000 r-xp 00000000 00:93 41                         /lib/x86_64-linux-gnu/libdl-2.24.so
7feb17ad0000-7feb17ccf000 ---p 00003000 00:93 41                         /lib/x86_64-linux-gnu/libdl-2.24.so
7feb17ccf000-7feb17cd0000 r--p 00002000 00:93 41                         /lib/x86_64-linux-gnu/libdl-2.24.so
7feb17cd0000-7feb17cd1000 rw-p 00003000 00:93 41                         /lib/x86_64-linux-gnu/libdl-2.24.so
7feb17cd1000-7feb17e5b000 r-xp 00000000 00:93 987                        /usr/lib/x86_64-linux-gnu/libgnutls.so.30.13.1
7feb17e5b000-7feb1805b000 ---p 0018a000 00:93 987                        /usr/lib/x86_64-linux-gnu/libgnutls.so.30.13.1
7feb1805b000-7feb18068000 r--p 0018a000 00:93 987                        /usr/lib/x86_64-linux-gnu/libgnutls.so.30.13.1
7feb18068000-7feb18069000 rw-p 00197000 00:93 987                        /usr/lib/x86_64-linux-gnu/libgnutls.so.30.13.1
7feb18069000-7feb1806a000 rw-p 00000000 00:00 0
7feb1806a000-7feb18171000 r-xp 00000000 00:93 209                        /lib/x86_64-linux-gnu/libgcrypt.so.20.1.6
7feb18171000-7feb18371000 ---p 00107000 00:93 209                        /lib/x86_64-linux-gnu/libgcrypt.so.20.1.6
7feb18371000-7feb18373000 r--p 00107000 00:93 209                        /lib/x86_64-linux-gnu/libgcrypt.so.20.1.6
7feb18373000-7feb1837a000 rw-p 00109000 00:93 209                        /lib/x86_64-linux-gnu/libgcrypt.so.20.1.6
7feb1837a000-7feb1838e000 r-xp 00000000 00:93 157                        /lib/x86_64-linux-gnu/libresolv-2.24.so
7feb1838e000-7feb1858d000 ---p 00014000 00:93 157                        /lib/x86_64-linux-gnu/libresolv-2.24.so
7feb1858d000-7feb1858e000 r--p 00013000 00:93 157                        /lib/x86_64-linux-gnu/libresolv-2.24.so
7feb1858e000-7feb1858f000 rw-p 00014000 00:93 157                        /lib/x86_64-linux-gnu/libresolv-2.24.so
7feb1858f000-7feb18591000 rw-p 00000000 00:00 0
7feb18591000-7feb18726000 r-xp 00000000 00:93 36                         /lib/x86_64-linux-gnu/libc-2.24.so
7feb18726000-7feb18926000 ---p 00195000 00:93 36                         /lib/x86_64-linux-gnu/libc-2.24.so
7feb18926000-7feb1892a000 r--p 00195000 00:93 36                         /lib/x86_64-linux-gnu/libc-2.24.so
7feb1892a000-7feb1892c000 rw-p 00199000 00:93 36                         /lib/x86_64-linux-gnu/libc-2.24.so
7feb1892c000-7feb18930000 rw-p 00000000 00:00 0
7feb18930000-7feb18999000 r-xp 00000000 00:93 1183                       /usr/lib/x86_64-linux-gnu/libjpeg.so.62.2.0
7feb18999000-7feb18b99000 ---p 00069000 00:93 1183                       /usr/lib/x86_64-linux-gnu/libjpeg.so.62.2.0
7feb18b99000-7feb18b9a000 r--p 00069000 00:93 1183                       /usr/lib/x86_64-linux-gnu/libjpeg.so.62.2.0
7feb18b9a000-7feb18b9b000 rw-p 0006a000 00:93 1183                       /usr/lib/x86_64-linux-gnu/libjpeg.so.62.2.0
7feb18b9b000-7feb18bb4000 r-xp 00000000 00:93 170                        /lib/x86_64-linux-gnu/libz.so.1.2.8
7feb18bb4000-7feb18db3000 ---p 00019000 00:93 170                        /lib/x86_64-linux-gnu/libz.so.1.2.8
7feb18db3000-7feb18db4000 r--p 00018000 00:93 170                        /lib/x86_64-linux-gnu/libz.so.1.2.8
7feb18db4000-7feb18db5000 rw-p 00019000 00:93 170                        /lib/x86_64-linux-gnu/libz.so.1.2.8
7feb18db5000-7feb18dcd000 r-xp 00000000 00:93 76                         /lib/x86_64-linux-gnu/libpthread-2.24.so
7feb18dcd000-7feb18fcc000 ---p 00018000 00:93 76                         /lib/x86_64-linux-gnu/libpthread-2.24.so
7feb18fcc000-7feb18fcd000 r--p 00017000 00:93 76                         /lib/x86_64-linux-gnu/libpthread-2.24.so
7feb18fcd000-7feb18fce000 rw-p 00018000 00:93 76                         /lib/x86_64-linux-gnu/libpthread-2.24.so
7feb18fce000-7feb18fd2000 rw-p 00000000 00:00 0
7feb18fd2000-7feb18fe6000 r-xp 00000000 00:93 53                         /lib/x86_64-linux-gnu/libnsl-2.24.so
7feb18fe6000-7feb191e6000 ---p 00014000 00:93 53                         /lib/x86_64-linux-gnu/libnsl-2.24.so
7feb191e6000-7feb191e7000 r--p 00014000 00:93 53                         /lib/x86_64-linux-gnu/libnsl-2.24.so
7feb191e7000-7feb191e8000 rw-p 00015000 00:93 53                         /lib/x86_64-linux-gnu/libnsl-2.24.so
7feb191e8000-7feb191ea000 rw-p 00000000 00:00 0
7feb191ea000-7feb191fa000 r-xp 00000000 00:93 1181                       /usr/lib/x86_64-linux-gnu/libavahi-client.so.3.2.9
7feb191fa000-7feb193f9000 ---p 00010000 00:93 1181                       /usr/lib/x86_64-linux-gnu/libavahi-client.so.3.2.9
7feb193f9000-7feb193fa000 r--p 0000f000 00:93 1181                       /usr/lib/x86_64-linux-gnu/libavahi-client.so.3.2.9
7feb193fa000-7feb193fb000 rw-p 00010000 00:93 1181                       /usr/lib/x86_64-linux-gnu/libavahi-client.so.3.2.9
7feb193fb000-7feb19407000 r-xp 00000000 00:93 1179                       /usr/lib/x86_64-linux-gnu/libavahi-common.so.3.5.3
7feb19407000-7feb19606000 ---p 0000c000 00:93 1179                       /usr/lib/x86_64-linux-gnu/libavahi-common.so.3.5.3
7feb19606000-7feb19607000 r--p 0000b000 00:93 1179                       /usr/lib/x86_64-linux-gnu/libavahi-common.so.3.5.3
7feb19607000-7feb19608000 rw-p 0000c000 00:93 1179                       /usr/lib/x86_64-linux-gnu/libavahi-common.so.3.5.3
7feb19608000-7feb19742000 r-xp 00000000 00:93 185                        /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
7feb19742000-7feb19942000 ---p 0013a000 00:93 185                        /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
7feb19942000-7feb19943000 r--p 0013a000 00:93 185                        /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
7feb19943000-7feb19948000 rw-p 0013b000 00:93 185                        /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
7feb19948000-7feb1994a000 r-xp 00000000 00:93 277                        /usr/lib/x86_64-linux-gnu/libXdamage.so.1.1.0
7feb1994a000-7feb19b49000 ---p 00002000 00:93 277                        /usr/lib/x86_64-linux-gnu/libXdamage.so.1.1.0
7feb19b49000-7feb19b4a000 r--p 00001000 00:93 277                        /usr/lib/x86_64-linux-gnu/libXdamage.so.1.1.0
7feb19b4a000-7feb19b4b000 rw-p 00002000 00:93 277                        /usr/lib/x86_64-linux-gnu/libXdamage.so.1.1.0
7feb19b4b000-7feb19b50000 r-xp 00000000 00:93 279                        /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0
7feb19b50000-7feb19d4f000 ---p 00005000 00:93 279                        /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0
7feb19d4f000-7feb19d50000 r--p 00004000 00:93 279                        /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0
7feb19d50000-7feb19d51000 rw-p 00005000 00:93 279                        /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0
7feb19d51000-7feb19d5b000 r-xp 00000000 00:93 337                        /usr/lib/x86_64-linux-gnu/libXrandr.so.2.2.0
7feb19d5b000-7feb19f5a000 ---p 0000a000 00:93 337                        /usr/lib/x86_64-linux-gnu/libXrandr.so.2.2.0
7feb19f5a000-7feb19f5b000 r--p 00009000 00:93 337                        /usr/lib/x86_64-linux-gnu/libXrandr.so.2.2.0
7feb19f5b000-7feb19f5c000 rw-p 0000a000 00:93 337                        /usr/lib/x86_64-linux-gnu/libXrandr.so.2.2.0
7feb19f5c000-7feb19f5e000 r-xp 00000000 00:93 1043                       /usr/lib/x86_64-linux-gnu/libXinerama.so.1.0.0
7feb19f5e000-7feb1a15d000 ---p 00002000 00:93 1043                       /usr/lib/x86_64-linux-gnu/libXinerama.so.1.0.0
7feb1a15d000-7feb1a15e000 r--p 00001000 00:93 1043                       /usr/lib/x86_64-linux-gnu/libXinerama.so.1.0.0
7feb1a15e000-7feb1a15f000 rw-p 00002000 00:93 1043                       /usr/lib/x86_64-linux-gnu/libXinerama.so.1.0.0
7feb1a15f000-7feb1a170000 r-xp 00000000 00:93 183                        /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
7feb1a170000-7feb1a36f000 ---p 00011000 00:93 183                        /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
7feb1a36f000-7feb1a370000 r--p 00010000 00:93 183                        /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
7feb1a370000-7feb1a371000 rw-p 00011000 00:93 183                        /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
7feb1a371000-7feb1a376000 r-xp 00000000 00:93 342                        /usr/lib/x86_64-linux-gnu/libXtst.so.6.1.0
7feb1a376000-7feb1a575000 ---p 00005000 00:93 342                        /usr/lib/x86_64-linux-gnu/libXtst.so.6.1.0
7feb1a575000-7feb1a576000 r--p 00004000 00:93 342                        /usr/lib/x86_64-linux-gnu/libXtst.so.6.1.0
7feb1a576000-7feb1a577000 rw-p 00005000 00:93 342                        /usr/lib/x86_64-linux-gnu/libXtst.so.6.1.0
7feb1a577000-7feb1a57f000 r-xp 00000000 00:93 650                        /lib/x86_64-linux-gnu/libcrypt-2.24.so
7feb1a57f000-7feb1a77f000 ---p 00008000 00:93 650                        /lib/x86_64-linux-gnu/libcrypt-2.24.so
7feb1a77f000-7feb1a780000 r--p 00008000 00:93 650                        /lib/x86_64-linux-gnu/libcrypt-2.24.so
7feb1a780000-7feb1a781000 rw-p 00009000 00:93 650                        /lib/x86_64-linux-gnu/libcrypt-2.24.so
7feb1a781000-7feb1a7af000 rw-p 00000000 00:00 0
7feb1a7af000-7feb1aa14000 r-xp 00000000 00:93 1177                       /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1
7feb1aa14000-7feb1ac13000 ---p 00265000 00:93 1177                       /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1
7feb1ac13000-7feb1ac31000 r--p 00264000 00:93 1177                       /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1
7feb1ac31000-7feb1ac3f000 rw-p 00282000 00:93 1177                       /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1
7feb1ac3f000-7feb1ac42000 rw-p 00000000 00:00 0
7feb1ac42000-7feb1aca4000 r-xp 00000000 00:93 1176                       /usr/lib/x86_64-linux-gnu/libssl.so.1.1
7feb1aca4000-7feb1aea4000 ---p 00062000 00:93 1176                       /usr/lib/x86_64-linux-gnu/libssl.so.1.1
7feb1aea4000-7feb1aea8000 r--p 00062000 00:93 1176                       /usr/lib/x86_64-linux-gnu/libssl.so.1.1
7feb1aea8000-7feb1aeae000 rw-p 00066000 00:93 1176                       /usr/lib/x86_64-linux-gnu/libssl.so.1.1
7feb1aeae000-7feb1aecc000 r-xp 00000000 00:93 1175                       /usr/lib/x86_64-linux-gnu/libvncclient.so.1.0.0
7feb1aecc000-7feb1b0cc000 ---p 0001e000 00:93 1175                       /usr/lib/x86_64-linux-gnu/libvncclient.so.1.0.0
7feb1b0cc000-7feb1b0cd000 r--p 0001e000 00:93 1175                       /usr/lib/x86_64-linux-gnu/libvncclient.so.1.0.0
7feb1b0cd000-7feb1b0ce000 rw-p 0001f000 00:93 1175                       /usr/lib/x86_64-linux-gnu/libvncclient.so.1.0.0
7feb1b0ce000-7feb1b11a000 r-xp 00000000 00:93 1173                       /usr/lib/x86_64-linux-gnu/libvncserver.so.1.0.0
7feb1b11a000-7feb1b319000 ---p 0004c000 00:93 1173                       /usr/lib/x86_64-linux-gnu/libvncserver.so.1.0.0
7feb1b319000-7feb1b31a000 r--p 0004b000 00:93 1173                       /usr/lib/x86_64-linux-gnu/libvncserver.so.1.0.0
7feb1b31a000-7feb1b31c000 rw-p 0004c000 00:93 1173                       /usr/lib/x86_64-linux-gnu/libvncserver.so.1.0.0
7feb1b31c000-7feb1b331000 rw-p 00000000 00:00 0
7feb1b331000-7feb1b354000 r-xp 00000000 00:93 33                         /lib/x86_64-linux-gnu/ld-2.24.so
7feb1b368000-7feb1b381000 rw-s 00000000 00:05 884762                     /SYSV00000000 (deleted)
7feb1b381000-7feb1b399000 rw-s 00000000 00:05 851993                     /SYSV00000000 (deleted)
7feb1b399000-7feb1b3b0000 rw-s 00000000 00:05 819224                     /SYSV00000000 (deleted)
7feb1b3b0000-7feb1b3c6000 rw-s 00000000 00:05 786455                     /SYSV00000000 (deleted)
7feb1b3c6000-7feb1b3db000 rw-s 00000000 00:05 753686                     /SYSV00000000 (deleted)
7feb1b3db000-7feb1b3ef000 rw-s 00000000 00:05 720917                     /SYSV00000000 (deleted)
7feb1b3ef000-7feb1b402000 rw-s 00000000 00:05 688148                     /SYSV00000000 (deleted)
7feb1b402000-7feb1b414000 rw-s 00000000 00:05 655379                     /SYSV00000000 (deleted)
7feb1b414000-7feb1b425000 rw-s 00000000 00:05 622610                     /SYSV00000000 (deleted)
7feb1b425000-7feb1b435000 rw-s 00000000 00:05 589841                     /SYSV00000000 (deleted)
7feb1b435000-7feb1b444000 rw-s 00000000 00:05 557072                     /SYSV00000000 (deleted)
7feb1b444000-7feb1b452000 rw-s 00000000 00:05 524303                     /SYSV00000000 (deleted)
7feb1b452000-7feb1b45f000 rw-s 00000000 00:05 491534                     /SYSV00000000 (deleted)
7feb1b45f000-7feb1b46b000 rw-s 00000000 00:05 458765                     /SYSV00000000 (deleted)
7feb1b46b000-7feb1b476000 rw-s 00000000 00:05 425996                     /SYSV00000000 (deleted)
7feb1b476000-7feb1b480000 rw-s 00000000 00:05 393227                     /SYSV00000000 (deleted)
7feb1b480000-7feb1b489000 rw-s 00000000 00:05 360458                     /SYSV00000000 (deleted)
7feb1b489000-7feb1b491000 rw-s 00000000 00:05 327689                     /SYSV00000000 (deleted)
7feb1b491000-7feb1b498000 rw-s 00000000 00:05 294920                     /SYSV00000000 (deleted)
7feb1b498000-7feb1b49e000 rw-s 00000000 00:05 262151                     /SYSV00000000 (deleted)
7feb1b49e000-7feb1b4a3000 rw-s 00000000 00:05 229382                     /SYSV00000000 (deleted)
7feb1b4a3000-7feb1b4a7000 rw-s 00000000 00:05 196613                     /SYSV00000000 (deleted)
7feb1b4a7000-7feb1b4b2000 rw-p 00000000 00:00 0
7feb1b4b2000-7feb1b536000 r-xp 00000000 00:93 219                        /lib/x86_64-linux-gnu/libsystemd.so.0.17.0
7feb1b536000-7feb1b537000 ---p 00084000 00:93 219                        /lib/x86_64-linux-gnu/libsystemd.so.0.17.0
7feb1b537000-7feb1b53a000 r--p 00084000 00:93 219                        /lib/x86_64-linux-gnu/libsystemd.so.0.17.0
7feb1b53a000-7feb1b53b000 rw-p 00087000 00:93 219                        /lib/x86_64-linux-gnu/libsystemd.so.0.17.0
7feb1b53b000-7feb1b549000 rw-p 00000000 00:00 0
7feb1b549000-7feb1b54c000 rw-s 00000000 00:05 163844                     /SYSV00000000 (deleted)
7feb1b54c000-7feb1b54e000 rw-s 00000000 00:05 131075                     /SYSV00000000 (deleted)
7feb1b54e000-7feb1b54f000 rw-s 00000000 00:05 98306                      /SYSV00000000 (deleted)
7feb1b54f000-7feb1b551000 rw-s 00000000 00:05 32768                      /SYSV00000000 (deleted)
7feb1b551000-7feb1b554000 rw-p 00000000 00:00 0
7feb1b554000-7feb1b555000 r--p 00023000 00:93 33                         /lib/x86_64-linux-gnu/ld-2.24.so
7feb1b555000-7feb1b556000 rw-p 00024000 00:93 33                         /lib/x86_64-linux-gnu/ld-2.24.so
7feb1b556000-7feb1b557000 rw-p 00000000 00:00 0
7fffbdb7a000-7fffbdb9c000 rw-p 00000000 00:00 0                          [stack]
7fffbdbad000-7fffbdbaf000 r--p 00000000 00:00 0                          [vvar]
7fffbdbaf000-7fffbdbb1000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]
caught signal: 6
30/12/2017 19:38:07 deleted 40 tile_row polling images.
Command exited with non-zero status 2
6.10user 5.10system 0:52.70elapsed 21%CPU (0avgtext+0avgda

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.