Linux mobile development & HTML5 Games/App


X Window Troubleshooting
Appendix A      Host Access

Host Access 
When an X client attempts to open an X display, the server checks to
see if that client is authorized to connect before it allows the
connection.  If the client is not authorized, it gives a message such

	Xlib:   Connection to "server:0.0" refused by server Xlib:
	Server is not authorized to connect to host Error:  Can't open

The X11R3 release gave only one method of authorizing clients to
connect.  That method is giving access based on the IP address of the
host on which the client runs, also known as "xhost".  The disadvantage
of this method is that when you give access to a host, call it "host1",
everyone who has an account on "host1" can access your display.

X11R4 introduced a new method of authorizing clients, called X
authorization, or MIT-MAGIC-COOKIE-1.  When you log in using X11,
revision 4, xdm creates a file named ".Xauthority" in your home
directory.  In this file is a 16-byte key, or cookie, that is sent to
the server as part of the connection setup information by X11R4
clients.  If your client is running on a host that is not in the
"xhost" list, but the client sends the correct cookie, then it will
still be allowed to connect.  Thus, when using an X11R4 xdm, your
"xhost" access list will typically be empty but clients will still be
able to connect.

X-Win32 obtains the "magic cookie" from xdm using XDMCP.  The cookie is
generated by a random generator in xdm.  If X-Win32 is started this
way, the initial "xhost" access list is empty, and access is
restricted.  If it is not started with XDMCP, then access control is
disabled (any client is allowed to connect).

If you use an X11R4 xdm to get your login window, and want to bring up
older (R3) clients on your display, you need to add the hosts on which
those clients run to your access list.  To do this, simply add the host
using the xhost command before bringing up the window.  You can make a
permanent list of hosts that are in the access list of X-Win32 by
adding those hosts to the Xhost list under the Options selection.  You
may want to do this in two cases:

	1. You use X-Win32 in the non-XDMCP mode (any client can connect),
	   and want to limit the access list to "trusted" hosts.  
	2. You use it in the XDMCP mode (only R4 clients with correct 
	   cookie allowed) and want to allow R3 clients from specific 
	   hosts to connect to your server.

Clients are granted access if:

		1. the client passes the correct MIT-MAGIC-COOKIE-1.
		2. the client resides on a host whose IP address is in
		   the Host Access list.

		1. there are no entries in the Xhost list.
		2. the client resides on a host whose IP address is in
		   the Xhost list.

A client can change the Host Access list (residing in local RAM memory)
if its entry in the Xhost list is preceded by a plus sign (+).
			Page 22

Appendix B      XDMCP

X-Win32 uses the standard protocol specified by the X Consortium for
use with X terminals, the X Display Manager Control Protocol, or
XDMCP.  XDMCP is used by X terminals to control the xdm program on a
host on the network, The X terminal sends a request to the xdm host,
the host and the X terminal send a few XDMCP messages between
themselves, and then the xdm program brings up a login window on the X
terminal. XDMCP is a part of revision 4 of X version 11 and is
available from Sun as part of SunOS 4.1 or from DEC as part of Ultrix
4.2. If you have a host on your network with these versions or later,
you should run X-Win32 in one of the XDMCP modes if you want to use xdm
to manage your X server.

xdm goals 
A major goal of providing a display manager program is to integrate the
X terminal completely into a networked environment.  As nearly as
possible the "log-in window" should automatically appear after the X
server is started.

Once you log in, an automatic initialization procedure should run to
bring up applications and position their windows as specified in your
personal session "profile" script.  After you log out of the X session,
all connections should be closed, the terminal should be reset to a
known state, and a new log-in window should appear, ready for the next
user.  This scenario can be achieved by having the X server communicate
with a display manager program between user sessions.

If you are running X11R4, you do not need to make any additions to the
host.  However, if your are running X11R3, you may need to add a line
to the "Xservers" file on the host in the directory  /usr/lib/X11/xdm.
The line you must add is "PC:0 foreign PC" where PC is the name of your
personal computer.
			Page 23

Appendix C      Transports

The supported winsock transports should already be configured to run
under Microsoft Windows.  If it is not running properly, check the

Trumpet.....Trumpet Winsock 
	For best use the Trumpet MTU setting should be 512.  
	It comes preset to 1500.

	When using PPP it may be necessary to change the mtu setting to 552.
	(Where x will be some integer depending on your system.)

	1. From the Run menu enter "regedit" 
	2. Make selections on above path down to 00x.  
	   Select the 00x section for "tcp/ip" 
	3. Select "New String Value".  
	   Edit string to read "MaxMTU" 
	4. Under Edit, select Modify.  
	   Enter "552" 
	5. Exit

   000  ab(Default)                     (value not set)
	ab DeviceVxDs
	"vtdi.386,vip.386,vtcp.386,vdhcp.386.vnbt.386" ab
	DevLoader                    "*ndis" ab DriverDesc
	"TCP/IP" ab InfPath          "NETTRANS.INF"
	ab IPAddress                 "" ab
	Mask                         "" ab
	MaxMTU                       "552"

Ftp Software.....PC/TCP 
PC/TCP should be run in the 386 enhanced mode.
The following options should be used with the kernel startup:

	[pctcp kernel] tcp-connections =15

The following may need to be added to SYSTEM.INI under [386Enh].

	device=C:/ftp/vpctcp.386 UniqueDOSPSP=TRUE

The following may need to be added to SYSTEM.INI under [386Enh].

	InDOSPolling=on UniqueDOSPSP=true PSPIncrement=5
			Page 24

The default setting (no entry) in the net.cfg file for "tcp sockets" 
is 8.  To increase the number of sockets:

	Protocol TCIP
		tcp_sockets 16

Recommended changes to the net.cfg file

	Link Support Buffers 16 3000 MemPool 8096 Max Stacks 16

Implementations and revisions of WinSock vary.  The X server needs 
to know the IP address of the PC.  The above "IP Address Error" 
may appear.  It may be necessary for the user to either have:

	1. the domain name server specified
	   (if the transport does host name resolution)


	2. put an entry into the local HOSTS table for the PC.
	   (The entry should have the PC's name and IP address.
	    This file will usually look like the /etc/hosts file.)

IP Address Error It the error "I don't know my IP Address" appears
while trying to start-up in any mode, then the IP Address and Name of
the PC should be entered into TCPOpen under the DATABASE option into
			Page 25

Appendix D      Troubleshooting

No X Window(s) 
The X-Win32 icon was selected, and a session was then selected, but no
X windows appeared.  When having trouble getting the connection
started, it is best to not have auto-startup turned on for any

1. Check the Messages window for messages.

2. If one of the XDMCP modes was selected, you must make sure that xdm
   is running.  This can be done by using the Rsh... or Rexec...
   function with the following command:

		ps -ax | grep xdm

	Look in the X-Win32 window for the results.  If xdm is not
	running, check with you system administrator.  If xdm is
	running, determine next if it is an X11R4 or later XDMCP

		netstat -an | grep 177

	If an X11R4 or later xdm deamon running, the following line
	will appear in the Messages window:

		udp             0 0               *.177

3. A session will have to be started by selecting one of the
   entered sessions.  If there are not any entered sessions, then one,
   or more, will have to be configured.  All entries under the Sessions
   list are started using either RSH or REXEC.  The user should make
   sure that the hosts can accept these commands.  RSH may require an
   entry in
   .rhosts in that users home directory.
			Page 26

Exits after XDMCP login window 
After you log in to the XLOGIN window, xdm executes the script
Xsession, which is usually in /usr/lib/X11/xdm.  (Sun's may be in

Note:  If the login session is in failsafe mode (invoked by pressing
the F1 key instead of Return after you type your password) Xsession
simply runs an xterm.

If it is in normal mode, Xsession runs the file ".xsession" in your
home directory.  In all cases, when Xsession exits, because the xterm
it runs exits or because the .xsession script exits, xdm will kill all
the windows on your display and log you out.

	Setting up a .xsession file with everything running in the
	background causes .xsession to exit early.

	For instance, if your .xsession file looks like this:

		xrdb ~/.Xdefaults twm & sleep 4 xterm &

	Then immediately after the xterm starts, .xsession will exit
	which will cause you to be logged out.  This will almost always
	happen before xterm even has time to create a window.

	To fix this problem, change the last line to:

		exec xterm

	Having a .xsession file in which the last program to be
	executed fails and exits.

	This could be for several reasons:

	1.  Because the program is not in your search path when
	.xsession is run.  To solve this problem make sure your path is
	set up correctly in .xsession itself.  Don't depend on the
	program which calls .xsession to set it for you.

	2.  An X version incompatibility.  In version 4 of the X
	protocol, two things were added.  The first was XDMCP.  Thus,
	if you are using XDMCP to get your XLOGIN window, you have at
	least an X11 R4 version of xdm.  The second thing added was the
	MIT-MAGIC_COOKIE authorization.  Under this scheme, a client,
	upon connecting to the X server, sends some authorization
	information.  This is usually a 128-bit number that the server
	has chosen and given to xdm using XDMCP.  Xdm stores this
	number in a file called ".Xauthority" in your home directory.

	3.  If X-Win32 is not in the Virtual Root (Single Window Mode)
	and the last program is a window manager, then it will fail
	because X-Win32-WIN32 uses the Microsoft window manager, which
	will not allow an X window manager to run.

	4.  Virtual Root (Single Window Mode) is selected with the
	"Enable Screen :0.1" selected and olwm is running under Open
	Windows 3.0.

	5.  If you are using, for example, xterm from X11 R3 in the
	last line of your .xsession file.  It will not know how to send
	this authorization information to the server.  As a result, the
	server will refuse the connection, xterm will exit, causing
	.xsession to exit and your session will be terminated.
			Page 27

	(1 thru 4)  To solve the first problems you can start the X
	server with XDMCP disabled, then log into your host system from
	a different terminal.  Set the environment variable "DISPLAY"
	to your PC, set your PATH variable to the default (to
	trouble-shoot problems with the search path), then run your
	.xsession file by typing "./.xsession".  If this terminates and
	you get the shell prompt again, then something is wrong.  Any
	error messages should have appeared on your screen to help you
	trouble-shoot the problem.

	(5)  Use the "Xhost" menu to add the IP address of your host to
	the list of hosts that can connect without authorization.

Cannot open display 
Usually this error will occur if the display has not been properly defined.  
As an example, the form of a display statement in an xterm command is:

	-d dispname 

Specifies the display screen on which xterm displays its window.  If
the display option is not specified, xterm uses the display screen
specified by your DISPLAY environment variable.  The display option has
the format hostname:number.  Using two colons (::) instead of one (:)
indicates that DECnet is to be used for transport.

	-display dispname 
This option is the same as the -d option.

	xterm -display xterm -display davepc:0

Cannot run olwm 
Cannot run OpenLook window manager (olwm)If you are running on a Sun
using Open Windows 3.0 and olwm, then be sure that:

	"Enable screen :0.1"

is not selected during Virtual Root (single window) mode operation.  If
"Enable screen :0.1" is enabled, then olwm should be started using the

	olwm -single &

Cannot read text in xterm 
An xterm has come up, but the text is not readable.  The cursor changes
as it is moved into and out of the xterm indicating that it is active.

This is usually a color problem.  Either the colors selected for the
xterm are not correct or not available.  It MS Windows is set to 16
colors and the xterm colors have been selected based on 256 colors, it
is possible to have both foreground and background mapped to the same

This problem can also be caused by using "crystal fonts" on the ATI
video boards.  The ATI software locks around 247 palette entries.  This
is most noticeable when 256 colors is selected under the MS Windows
video driver setup.
			Page 28

Client not authorized to connect to server 
This happens because the client does not have authorization to connect
to this X server (X-Win32).  Use of the Xhost table or the Host Access
List will give access to that client.  Use the X-Utility to add needed
clients (hosts).

REMEMBER that the Xhost table is an all or none type list.  If one host
is in the list, then ALL hosts which wish to have access to X-Win32
will either have to:

	1. be in the Xhosts table
	2. pass the magic cookie

Connection Closed 
I.P. Address or Hostname: connection closed.You should contact your
system administrator.  A connection was made and the host closed the
connection.  This may occur if:

	1. you are trying to connect using rexec and rexecd or
	   in.rexec will not allow the connection to continue.

	2. your host is running Sun OS and /etc/inetd.conf is not
	   correct or is trying to run something that does not exist.

	3. your host is running a tcp wrapper that closes the
	   connection for security reasons.

Connection Refused: Host name not known
The Winsock compliant TCP/IP stack is responsible for resolving host
names to IP addresses.  It may do it by using a DNS or by a local HOSTS
table.  It may be necessary to enter the host names and ip addresses
into a local HOSTS table.  Check the docs on your TCP/IP software.  It
may be necessary to enter the name and ip address of the local pc

Connection Refused: My IP address not known
The TCP/IP stack needs to tell the X server (X-Win32) the IP address of
the PC.  This information may need to be added to the local HOSTS

Connection Timed Out 
You tried to connect to a host that is currently down or otherwise

Hanging of X server 
The user may encounter cases where the X server hangs.  If running
under Windows 3.1 or WFW 3.11, try turning off the Async Interface
option using X-Util.

Hanging of the X server has only been observed using older versions of
Novell's tcp/ip winsock implementation.  Report any other occurrances
of hanging to

Hostname: No such file or directory 
You are likely trying to use rsh, but are running the restricted shell
instead of the remote shell.  You should change your path to get the
remote rsh.

The remote shell is normally /usr/bin/rsh.  The restricted shell is
normally /usr/lib/rsh.
			Page 29

LD:SO lib not found 
This is the result of the host (Sun SPARC) system being shipped or
installed with some files being placed in a different directory.
Either the shared library cache is out of date, the shared library is
missing, or the shared library is not in your LD_LIBRARY_PATH.  You
should either set the LD_LIBRARY_PATH environment variable ot the
appropriate value, run ldconfig to update the library cache, or install
the missing library.  Try placing the following command into your home
directory, into the .cshrc file:

	setenv LD_LIBRARY_PATH /usr/lib:/usr/openwin/lib

The directory path and the location of this file should be verified on
the host system prior to inserting the setenv line.

Permission Denied: Rsh 
A user must have an account on the remote host.  A .rhosts file entry
allows a user who has an account on that host to log in from a remote
node without supplying a password.  The .rhosts file must be in the
user's home directory.  The format of a .rhosts file entry is:

	hostname [username]

The hostname is the name of the local node (PC) from which the user
wants to log into the remote host.  The username is the user's login
name on the PC.  If you do not specify a user name, the user must have
the same login name on both the remote host and PC.

Each remote machine may have a file named /etc/hosts.equiv containing a
list of trusted hostnames with which it shares usernames.  Users with
the same username on both the local and remote machine may rsh from the
machines listed in the remote machine's /etc/hosts file.

Permission Denied: File 
If a script file is being executed, it must have execution permission.

	chmod   775  script_filename

to allow execution and r/w permissions.

stty: Operation Not Supported 
If you are using rsh, the .cshrc file on the remote host probably has
an interactive command in it, such as stty.

Warning: Cannot convert string "..." to type FontStruct 
You cannot access the specified font, either because it does not exist
or because X-Win32 does not have access to it.
			Page 30

Will not start - screen blanks 
This can happen when running unders Windows 3.1 or WFW 3.11 and Win32s
has not been installed.  Check to see if Win32s is installed.  Check
the file /windows/system/win32s.ini.  If it does not exist or the
version is 1.15 or less, then the current version of Win32 will need to
be installed.

Win32s is available from Microsoft at in
/Softlib/MSLFILES.  Check the INDEX file in /Softlib for the filename
of the current version of Win32s (usually PW1118.EXE).

X Toolkit Warning: Cannot allocate colormap entry for ...  
Your color database is corrupted.  You need to recreate the color
database.  Use the X-Utility to verify and recompile the color

X-Win32 requires that the IP address of the host running xlock to
be in the XHOST table.  Use of the -remote option is also required.
			Page 31

Appendix E      Sample Start-up Script
The user may wish to use a script start-up file in conjunction with the
RSH or REXEC commands.  This start-up script file would reside on the
remote host in the users login directory.  This would allow the user to
create his own X environment each time the X session is started.  The
following example will set the display and then provide an xterm, an
xclock, and an xlogo each time this file is run.

The session entries may look as follows:

	dick 			(not needed for PC-NFS) 
	Xwin xpc 		(using the nickname of the PC) 
	Xwin         (using the IP address of the PC)

The start-up script file, which resides on the remote host,  may be as

	#!/bin/sh if  [  "$1"  ];  then      (Set the display to the value
	DISPLAY=$1:0.0                        passed from RSH/REXEC) 
	export DISPLAY 
	/usr/bin/X11/xterm -n Login -ls & 
	/usr/bin/X11/twm &                    (Use only if SW Mode)
	/usr/bin/X11/xlogo &

for Sun Sparc's the path may be:

			Page 32

Appendix F      XWIN32.INI
XWIN32.INI is a text file residing in the appropriate WINDOWS directory
which controls the set-up of X-Win32.


bart_ultrix=1:bart:demo::Xwin dick:0
esix=2: dick:0
sparc=1:sparc:demo::/usr/openwin/bin/xterm -ls -n sparc -display & sun_360=1: dick:0

			Page 33

This directs X-WIN32 to the subdirectory that contains the keyboard,
rgb, and font files.


One (1) = on and zero (0) = off.  
0 = no 3-button simulation & no panning 
1 = 3-button simulation & no panning 
2 = no 3-button simulation & panning 
3 = 3-button simulation & panning

Panning will move the selected X window on-screen by moving the cursor
to the edge of the window which is off-screen.  Panning is not
operational inside the Virtual Root.

One (1) = on and zero (0) = off.  
Debug gives a list of the X requests being processed by the X server
(X-Win32).  These requests are shown in the X-Win32 window.  The
X-Win32 window may be resized to view more past requests.

One (1) = on and zero (0) = off.  
Single controls the Virtual Root Mode.  If it is turned on, then a
single X window, whose dimensions are described by width and height, is
generated.  A remote window manager should be used to manage the
windows created in this Virtual Root Window (single window).

One (1) = on and zero (0) = off.  
Screen1enable, when turned on, allows the generation of X windows to
xpc:0.1, the second screen.  This second screen is managed by the
Microsoft window manager.

This entry tells X-Win32 which keyboard file to use.  The available
.kbd files are in /xwin/lib.  If this field is not present X-Win32
checks MS Windows to  select the proper keyboard.  If it cannot
determine the proper .kbd file it will default to the built-in us.kbd

This entry directs the left and right Alt keys.  0 = both to MS,
1 = left to X, 2 = right to X, 3 = both to X.

Microsoft Windows 3.1 and WFW 3.11 have limited GDI (graphics)
resources.  X-Win32 will try to maintain the selected level of % of GDI
resourses free.  Obviously, you must start with greater than the amount
selected for X-Win32 to try to maintain that level.  Setting the level
too high will cause X-Win32 to run slower.
			Page 34

The X Window system allows more than 1 X server, also called a display,
to run on one machine (IP address).  To distinguish between diferent X
servers (displays) on the same IP address, different TCP ports are used
starting with 6000.  Display 0 listens on TCP port 6000, display 1
listens on TCP port 6001, display 2 listens on 6002, and so on.

The "DISPLAY" parameter to an X client tells it to which port to
connect.  The display number is the first number to the right of the
colon (:).

X-Win32 can be configured to serve as any display number.  The display
number is specified in the XWIN32.INI file as "display=n" where n is
the displaynumber, which defaults to 0.  X-Win32 can only be run once
per PC serving as only one display at a time.

Named rsh, rexec, or xdmcp sessions.

A list of those hosts having access to X-Win32.  No entries mean that
all hosts have access to X-Win32.  If one entry is made to allow
access, then all hosts that wish to have access to X-Win32 will either
need to pass the magic cookie or be in this list also.  It is an all or
none type field.
			Page 35
个人分类: 1.技术类
想对作者说点什么? 我来说一句



X Window Troubleshooting