Bug 2169522

Summary: xvfb-run "-l" or "--listen-tcp" option does not work
Product: Red Hat Enterprise Linux 8 Reporter: Carlos Santos <casantos>
Component: xorg-x11-serverAssignee: Olivier Fourdan <ofourdan>
Status: CLOSED ERRATA QA Contact: Desktop QE <desktop-qa-list>
Severity: medium Docs Contact:
Priority: medium    
Version: 8.7CC: ndegraef, ofourdan, tpelka
Target Milestone: rcKeywords: Triaged
Target Release: ---Flags: pm-rhel: mirror+
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: xorg-x11-server-1.20.11-15.el8 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
: 2172116 (view as bug list) Environment:
Last Closed: 2023-05-16 08:32:34 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 2172116    
Bug Blocks:    
Deadline: 2023-02-20   
Attachments:
Description Flags
xvfb-run none

Description Carlos Santos 2023-02-13 20:40:22 UTC
Description of problem:

The xvfb-run "-l" or "--listen-tcp" option does not work

Version-Release number of selected component (if applicable):

xorg-x11-server-Xvfb-1.20.11-9.el8.x86_64

How reproducible:

Always

Steps to Reproduce:
1. Install xorg-x11-server-Xvfb and xterm

2. Log in via GDM

3. Open a gnome-terminal window and run this test command:

   $ xvfb-run -d -l -s "-ac" bash -c "export DISPLAY=localhost\$DISPLAY; xterm -e 'echo hello;sleep 1';"

Actual results:

   xterm: Xt error: Can't open display: localhost:2

Expected results:

xterm should run using a Xvfb server that listens at localhost, port 6002.

Additional info:

As a workaround, it's possible to pass "-isten tcp" to Xvfb:

   $ xvfb-run -d -l -s "-ac -listen tcp" bash -c "export DISPLAY=localhost\$DISPLAY; xterm -e 'echo hello;sleep 1';"

The cause of the problem is that when we pass "-l" or "--listen-tcp" to
xvfb-run it sets the LISTENTCP variable to empty:

LISTENTCP="-nolisten tcp"
...
while :; do
    case "$1" in
        -a|--auto-servernum) SERVERNUM=$(find_free_servernum) ;;
        -d|--auto-display) AUTO_DISPLAY=1 ;;
        -e|--error-file) ERRORFILE="$2"; shift ;;
        -f|--auth-file) AUTHFILE="$2"; shift ;;
        -h|--help) SHOWHELP="yes" ;;
        -n|--server-num) SERVERNUM="$2"; shift ;;
        -l|--listen-tcp) LISTENTCP="" ;;
        -p|--xauth-protocol) XAUTHPROTO="$2"; shift ;;
        -s|--server-args) XVFBARGS="$2"; shift ;;
        -w|--wait) STARTWAIT="$2"; shift ;;
        --) shift; break ;;
        *) error "internal error; getopt permitted \"$1\" unexpectedly"
           exit 6
           ;;
    esac
    shift
done

Starting on RHEL 8, however the X server (including Xvfb) does not listen on a
TCP port by default, as it did up to RHEL 7. So it would be necessary to set
LISTENTCP to "-listen tcp".

The problem happens on RHEL 9 too, for the same reason.

Comment 3 Olivier Fourdan 2023-02-21 14:30:22 UTC
Created attachment 1945526 [details]
xvfb-run

Can you please try this version and report?

Comment 11 errata-xmlrpc 2023-05-16 08:32:34 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (Moderate: xorg-x11-server security and bug fix update), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHSA-2023:2806

Comment 12 Red Hat Bugzilla 2023-09-19 04:33:33 UTC
The needinfo request[s] on this closed bug have been removed as they have been unresolved for 120 days