public inbox for cygwin@cygwin.com
 help / color / mirror / Atom feed
* Fork/resource unavailable - SSH/Citrix
@ 2012-02-21 14:53 Adam Thompson
  2012-02-21 16:29 ` Corinna Vinschen
  0 siblings, 1 reply; 2+ messages in thread
From: Adam Thompson @ 2012-02-21 14:53 UTC (permalink / raw)
  To: cygwin

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
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.

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.

-- 
AdamT


[1] http://blogs.msdn.com/b/oldnewthing/archive/2007/12/13/6648400.aspx

--
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

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Fork/resource unavailable - SSH/Citrix
  2012-02-21 14:53 Fork/resource unavailable - SSH/Citrix Adam Thompson
@ 2012-02-21 16:29 ` Corinna Vinschen
  0 siblings, 0 replies; 2+ messages in thread
From: Corinna Vinschen @ 2012-02-21 16:29 UTC (permalink / raw)
  To: cygwin

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

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2012-02-21 16:29 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-02-21 14:53 Fork/resource unavailable - SSH/Citrix Adam Thompson
2012-02-21 16:29 ` Corinna Vinschen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).