Tuesday 4 October 2011

X Server Testing and Troubleshooting

Purpose

Use this document to test your X Servers ability to display X programs and troubleshoot problems displaying the OUI, dbassist and netasst.

Scope and Application

The intention of this article is not to troubleshoot vendor specific problems with X Servers. You need to contact your X Server vendor if the X Server is configured properly and products do not display correctly. Examples would be:
  • Fonts are too large or too small
  • Buttons are missing or are not selectable
  • Boiler plate is displayed with no text or buttons
  • Java products hang
  • Java products core dump

FAQ: X Server Testing and Troubleshooting[ID 153960.1]

X Server testing

1. Testing your X Server configuration

The easiest way to test your X Server is to use an X11 based program that comes with the native operating system such as "xclock". In the session where you are trying to start the Oracle java product such as "runInstaller", "dbassist" or "netasst" do the following:
On Sun Solaris:
      % /usr/openwin/bin/xclock
On HP/UX, Compaq Tru64 and IBM RS6000:
      % /usr/bin/X11/xclock
On Linux:
      % /usr/X11R6/bin/xclock 

ERRORS OCCURRING WHEN RUNNING XCLOCK

After executing the "xclock" command a clock should be displayed on your X Server display. If a clock is not displayed use the following sections for troubleshooting common display problems:

   A. Error: Can't open display:

You will see this this error if you do not have the "DISPLAY" environment variable set to your X Servers IP address. Note that no display name is listed after the "Can't open display:" message. The correct procedure for setting the "DISPLAY" environment variable is to verify the IP address of the X Server and do the following from the shell where you are executing "xclock":

For csh:
% setenv DISPLAY <hostname or ip address>:0.0
example: setenv DISPLAY 192.168.1.128:0.0

For sh, ksh and bash:
    $ DISPLAY=<hostname or ip address>:0.0; export DISPLAY
example: DISPLAY=192.168.1.128:0.0; export DISPLAY

   B. Error: Can't open display: <hostname or ip address>

You will see this message if you have the "DISPLAY" environment variable set but it is not followed by the screen number which is usually ":0.0". You can verify the current setting by using the "echo" command:
            % echo $DISPLAY
See Section A for the correct syntax to use when setting the "DISPLAY" environment variable.

   C. Error: Can't open display: <hostname or ip address>:0.0

Notice that the correct syntax is being used for the "DISPLAY" environment variable. This message is displayed when there is no X Server running on the machine that the "DISPLAY" variable points to. 

To correct this you will need to verify that the host is capable of displaying X11 applications. If the host is a Windows machine such as Windows 95/98, NT, Windows ME or Windows 2000 it is likely that there is not an X Server running. If the host machine is UNIX or other operating system, be sure that there is a graphical display which is capable of displaying X11 based programs. If it is a graphical capable DISPLAY also be sure an X Server is running on the system. 

Check with your operating system vendor on the procedure for starting an X Server on non Windows based hosts. If using a PC X Server, check with vendor of the PC X Server product on the correct procedure for starting the X Server.

It is also important to understand that the "DISPLAY" variable should be set to the host where you are displaying the application to. This is not always the same machine where you are executing the product. For example if you are executing "xclock" on a Sun Solaris machine name "sun1" and you are physically sitting in front of a Linux server with name "linux1" the "DISPLAY" environment variable should be set to:
            linux1:0.0

   D. _X11TransSocketINETConnect: Can't connect: errno = 111

See section 1E for details on resolving this problem. Some systems will report this error instead of:
        Error: Can't open display: <hostname or ip address>:0.0
If the "DISPLAY" environment variable is set properly and the host is running an X Server but does not have a console open. This is common for systems that run XDM but do not have a graphical login.

   E. Xlib: connection to "<hostname or ip address>:0.0" refused by server

Xlib: connection to "<hostname or ip address>:0.0" refused
     by server
Xlib: Client is not authorized to connect to Server
Error: Can't open display: <hostname or ip address>:0.0 
You will see this if the X Server is refusing your request to display an application. Seeing this error means that there is an X Server running on the machine that your "DISPLAY" is set to but that host is denying your request. The first thing to verify is that your "DISPLAY" is set to the correct host:
            % echo $DISPLAY
Make sure the setting matches the IP address of the server you wish to display to. A common mistake is to set the "DISPLAY" to the system where the command is being executed not displayed.

Another common cause is if you use the switch user, "su", command. If you can execute "xclock" as the user you logged into the system as but can not execute it as user that you are testing then the problem is that the X Server is denying packets from other users or servers. This can be the default for your X Server. To change the default behavior consult with your operating system or X Server vendor. To temporarily allow access to the X Server do the following on UNIX:
i. Open a shell as the user you logged in as. For example if you logged in as root then used "su" to switch to "oracle" open a xterm, dtterm or xconsole as the root user and type the following command:
% xhost +
You should see the following message:
access control disabled, clients can connect from any host
Alternatively if you do not want to allow access to any host you can issue the command:
% xhost + <hostname or ip address>
Example:
% xhost + 192.168.1.128
192.168.1.128 being added to access control list
Where <hostname or ip address> is the hostname or IP address of the server that you are displaying to.

ii. Test an X11 program such as "xclock" to be sure access is allowed.
If you are using a PC X Server you will need to consult with X Server vendor for instruction on how to enable access to from other servers. Listed below are the instructions for doing this on WRQ Reflections X and Hummingbird Communications Exceed:

WRQ Reflections X:

1. Start Reflections X
2. Select "Tools" from the menu
3. Select "Security" from the "Tools" menu
4. Under "Security Settings" select "Unrestricted Access"
5. Press the "OK" button

Hummingbird Communications Exceed:

1. Start the Exceed "Xconfig" tool
2. Select "Security"
3. Select the "Disabled (any host access) button
4. Press the "OK" button

   F. Nothing is displayed and the prompt does not returned

"xclock" appears to hang and nothing is displayed. Hanging may be caused by a firewall or router configuration problem. Especially if the application is running across two different geographical locations. For example if you execute "xclock" on a machine in New York but are physically displaying the "xclock" program in California.

Another common problem is displaying to the wrong machine. For instance if you incorrectly set your display to a machine in another room that is running an X Server. The program may appear to hang but is is actually running but being displayed elsewhere. It is not actually hanging, you just can not see that it is running.

OTHER COMMON ORACLE JAVA PRODUCT ERRORS

    G.  DISPLAY not set. Please set the DISPLAY and try again.

     DISPLAY not set. Please set the DISPLAY and try again.
     : No such file or directory
    
     or

     DISPLAY not set.
     Set DISPLAY environment variable, then re-run. 


The "DISPLAY" environment variable is not set. See section A for instructions on setting the "DISPLAY" environment variable.

   H. java.lang.InternalError: Can't connect to X11 window server using

java.lang.InternalError: Can't connect to X11 window 
    server using '<hostname or ip address>' as the value of the
    DISPLAY variable.
"DISPLAY" not set properly. It is missing the ":0.0" from the setting. See section B for more information

   I. java.lang.InternalError: Can't connect to X11 window server using

java.lang.InternalError: Can't connect to X11 window
    server using '<hostname or ip address>:0.0' as
    the value of the DISPLAY variable.
at sun.awt.motif.MToolkit.<init>(Compiled Code)
at java.awt.Toolkit.getDefaultToolkit(Compiled Code)
Section C and D has information that explains why you would get this error. Please review those sections of the document. Note that no "Xlib" errors are displayed. 

   J. Xlib: connection to "Xlib: connection to "<hostname or ip address>" refused by server

Xlib: connection to "Xlib: connection to
    "<hostname or ip address>" refused by server
Xlib: Client is not authorized to connect to Server
java.lang.InternalError: Can't connect to X11 window
    server using '<hostname or ip addres>:0.0' as
    the value of the DISPLAY variable.
at sun.awt.motif.MToolkit.<init>(Compiled Code)
at java.awt.Toolkit.getDefaultToolkit(Compiled Code)
Although the text of this error is similar to that of section I., the reason for error is different. The X Server is refusing X11 packets from the client which could be any of Oracle X11 java products. See section E for details on how to resolve this error.

   K. Products appear to hang and do not display anything

See section F for more information. Most likely the "DISPLAY" environment variable is set to a valid X Server but it is not set to display on the machine you expect. Also there could be a firewall or other network configuration problem preventing X11 traffic from transferring over the network or the network is so slow that it is taking a long time for the products to display. 

References

NOTE:113443.1 - Configure and Test an X Server for Running X Windows Applications

No comments: