This is the mail archive of the
mailing list for the Cygwin project.
Fork/resource unavailable - SSH/Citrix
- From: Adam Thompson <adwulf at gmail dot com>
- To: cygwin at cygwin dot com
- Date: Tue, 21 Feb 2012 14:53:12 +0000
- Subject: Fork/resource unavailable - SSH/Citrix
- Authentication-results: mr.google.com; spf=pass (google.com: domain of firstname.lastname@example.org designates 10.229.135.85 as permitted sender) email@example.com; dkim=pass firstname.lastname@example.org
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:
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 , 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
Problem reports: http://cygwin.com/problems.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple