delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2012/02/21/11:31:23

X-Recipient: archive-cygwin AT delorie DOT com
X-Spam-Check-By: sourceware.org
Date: Tue, 21 Feb 2012 17:28:53 +0100
From: Corinna Vinschen <corinna-cygwin AT cygwin DOT com>
To: cygwin AT cygwin DOT com
Subject: Re: Fork/resource unavailable - SSH/Citrix
Message-ID: <20120221162853.GI22597@calimero.vinschen.de>
Reply-To: cygwin AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
References: <CA+YUqE1Ts0kPGzmfb7wc678wdm=NBNZAk=KitjcpD=2UNUB-qw AT mail DOT gmail DOT com>
MIME-Version: 1.0
In-Reply-To: <CA+YUqE1Ts0kPGzmfb7wc678wdm=NBNZAk=KitjcpD=2UNUB-qw@mail.gmail.com>
User-Agent: Mutt/1.5.21 (2010-09-15)
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Unsubscribe: <mailto:cygwin-unsubscribe-archive-cygwin=delorie DOT com AT cygwin DOT com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com

On Feb 21 14:53, Adam Thompson wrote:
> Dear all,
> 
> About 3.5 years ago, I was looking into why a lot of Citrix
> Presentation Servers were seeing their SSH services fall over.
> 
> I did actually discover the issue in the end, but neglected to post back here.
> 
> I found that the issue was the Citrix API hooking, which messes with
> the fork() call.  I am not a developer, but my understanding is that
> when a process calls fork(), it is expecting to have a child process
> created with an exact copy of all its pages.  I'm guessing that the

Right.

> injected DLLs prevent this from being an exact copy, and therefore the
> fork() call fails.  I'm not sure why it fails with err 11 (EAGAIN:
> Resource temporarily unavailable).  I would have thought that err 4
> (EINTR: Interrupted system call) would be a better fit in this
> instance.  But then, I suppose this depends on how Cygwin interprets
> what is returned to it in its own NT/Win32 API calls.

No, EAGAIN is the right errno per POSIX.  EINTR is not a valid errno
for fork.

> Anyhow.... there's a Citrix KB article on how to disable hooking on a
> per-executable basis at:
> 
> http://support.citrix.com/article/CTX107825
> 
> I found that adding sshd.exe and cygrunsrv.exe to the
> ExcludedImageNames key was enough to fix the problem on the servers I
> saw the problem on.
> 
> As this applies to all versions of Citrix Metaframe Presentation
> Server / XenApp, it might be worth adding these to BLODA.
> 
> The hooking is done via AppInit_DLLs [1], so for at least
> Win2000/2003/XP, this key would be a good place to start looking for
> unexplained fork() failures, and perhaps also merits a mention on the
> BLODA page.

I added that to the FAQ.


Thanks,
Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019