Re: xinit hangs on XWin infinite loop when using -displayfd

Jon TURNEY <[email protected]>
Newsgroups gmane.os.cygwin.xfree
Message-ID <[email protected]>
Thanks for reporting this problem.

On 21/07/2014 18:30, Matt D. wrote:
> I found as a workaround to add the arguments "-nolisten tcp" when
> invoking xinit. However, I was under the impression that it was
> incompatible with -multiwindow and -clipboard, both of which seem to be
> working fine:
>
> https://cygwin.com/ml/cygwin-xfree/2009-05/msg00016.html

That restriction no longer exists.

https://cygwin.com/ml/cygwin-xfree/2009-10/msg00007.html

> On 7/21/2014 12:00 PM, Matt D. wrote:
>> Ok.. so I let xinit do its thing to see if it got anywhere. Eventually
>> it will pop and error box. Interestingly, I specified a displayfd value
>> of "3" and yet both the popup and the log are reporting "5":

This is expected.  xinit must know the display number of the X server it 
starts, so it can pass it on to any clients it starts, so it has a patch 
which should notice the -displayfd option, transparently use it to 
determine the display number for any clients they start, and then pass 
on the display number to the specified file descriptor

>> My XWin.0.log is about 15MB of repeated attempts to open a socket. Here
>> is a snippet. I hope this helps:
>>
>> InitConnectionLimits: MaxClients = 255
>> Welcome to the XWin X Server
>> Vendor: The Cygwin/X Project
>> Release: 1.15.1.0
>> OS: CYGWIN_NT-5.1 matthew-17ffb52 1.7.30(0.272/5/3) 2014-05-23 10:36 i686
>> OS: Windows XP Service Pack 3 [Windows NT 5.1 build 2600] (Win32)
>> Snapshot: 20140709-git-2e9c13ea41c51df7
>>
>> XWin was started with the following command line:
>>
>> X -displayfd 5
>>
>> ddxProcessArgument - Initializing default screens
>> winInitializeScreenDefaults - primary monitor w 1062 h 703
>> winInitializeScreenDefaults - native DPI x 96 y 96
>> ddxProcessArgument - arg: -displayfd
>> Trying to create socket for display number 0
>> _XSERVTransSocketOpenCOTSServer: Unable to open socket for inet6
>> _XSERVTransOpen: transport open failed for inet6/matthew-17ffb52:0
>> _XSERVTransMakeAllCOTSServerListeners: failed to open listener for inet6
>>
>> ..
>> Trying to create socket for display number 59534
>> _XSERVTransSocketOpenCOTSServer: Unable to open socket for inet6
>> _XSERVTransOpen: transport open failed for inet6/matthew-17ffb52:59534
>> _XSERVTransMakeAllCOTSServerListeners: failed to open listener for inet6
>> (EE) Fatal server error:
>> (EE) Failed to find a socket to listen on(EE)
>> [ 58128.390] (EE) Server terminated with error (1). Closing log file.

Ah.  So, it seems that we have checked all ports from 6000 to 59534 + 
6000 = 65534 and decided they are no good because we can't open an ipv6 
socket.

(It looks like there is another minor bug here in that we don't try port 
65535! :-))

I guess if you just run XWin, it reports that it can't create an inet6 
listener, but it continues anyway (unless the -nopn option is used).

But, the implementation of -displayfd requires that creating all the 
listener socket succeeds.  (It's not clear that this should be changed, 
otherwise we could reach the conclusion that it's ok to start a server 
on display n with a limited set of protocols, when a server already 
exists on display n with an non-intersecting set of protocols)

So, you may find that -nolisten inet6, rather than -nolisten tcp (which 
prevents both ipv4 and ipv6 listening) also works around the problem.

You might want to also investigate why inet6 sockets can't be opened.

-- 
Jon TURNEY
Volunteer Cygwin/X X Server maintainer

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://x.cygwin.com/docs/
FAQ:                   http://x.cygwin.com/docs/faq/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.