Browse Source

vncserver: Display check should confirm lock file is still valid

If the X server is not shut down cleanly, it may leave lock files
around that "vncserver" has previously mis-identified as evidence that
the display number is still in use.

Instead of checking for existence of /tmp/.X<n>-lock, the code will
now extract the PID from the lock file and confirm that a process
exists with the same PID. This will eliminate false positives in the
case that this file references a PID that no longer exists. The Xorg
server does not have a problem with fixing this file when it next
starts up. It is only important to avoid using the port if it is still
in use.
tags/v1.10.90
Mark Mielke 3 years ago
parent
commit
bf243a3329
1 changed files with 5 additions and 3 deletions
  1. 5
    3
      unix/vncserver/vncserver.in

+ 5
- 3
unix/vncserver/vncserver.in View File

@@ -366,9 +366,11 @@ sub CheckDisplayNumber
my $x11_lock_path = "/tmp/.X$n-lock";

if (-e $x11_lock_path) {
warn "\nWarning: $host:$n is taken because of $x11_lock_path\n";
warn "Remove this file if there is no X server $host:$n\n";
return 0;
my($pid) = `cat "$x11_lock_path"` =~ /^\s*(\d+)\s*$/;
if (defined($pid) && kill(0, $pid)) {
# Lock is associated with valid PID.
return 0;
}
}

my $rfb_port = 5900 + $n;

Loading…
Cancel
Save