Re: xinit hangs on XWin infinite loop when using -displayfd
"Matt D." <[email protected]>
| Newsgroups | gmane.os.cygwin.xfree |
|---|---|
| Message-ID | <[email protected]> |
Doh! I was so blind! Windows XP does not have an IPv6 protocol installed by default. I added it and the problem went away. This sounds like a bug. XWin should verify whether a device which supports the target protocol exists before attempting to open a socket on it. What is this used for? Sharing a local X session with someone else? Logging onto an existing X session at work from home? I've only ever used X locally or through ssh forwarding. Matt D. On 7/28/2014 8:34 AM, Jon TURNEY wrote: > > 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. > -- 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/