David Arnstein wrote:
Synopsis: the "fork: resource temporarily unavailable" problem may be caused by a large number of obsolete process handles.Attached to this e-mail: 1. cygcheck.out: the output from "cygcheck -s -v -r" 2. tempor.sh: A bash shell script that causes the "fork: resource temporarily unavailable" problem on my computer. This script searches for identical files by brute force: it launches cmp.exe many times. First, I ran the standard Windows Task Manager with a non-standard column shown: handle count. I noticed something disturbing immediately. There is a process (pseudo process?) named "System." What I see on my computer is that for this process, the handle count rises slowly but continuously. This occurs when my computer is almost idle (I have several daemon type processes running, so the machine is never completely idle). If I launch any program, the handle count jumps up. After terminating the program, the handle count does NOT reduce.
First of all, on this Win2k SP4 I don't see that behavior. Even when I start several "normal" Windows programs that value doesn't increase. (It's at 132 here.)
Next, I launched "Process Explorer" which is distributed from http://www.sysinternals.com. This program allows me to examine the handles owned by the "System" process. What I found is that most of the handles are Process handles. These handles have names of the form <Non-existent Process> (nnnn) where nnnn is a three to five digit number.
I don't have them installed.
Finally, I ran the attached shell script "tempor.sh." Specifically, I
opened a Cygwin command window and, at the bash shell prompt, I typed
cd C:/Windows/System32
tempor.sh *
This caused tempor.sh to process 2,302 files. This in turn caused
tempor.sh to launch cmp.exe more than 2.5 million times.
[EMAIL PROTECTED] /cygdrive/c/WINNT/system32 $ ~/tempor.sh * Will process 1858 files...
When tempor.sh started, the number of handles owned by the "System" process was less than 10,000. While tempor.sh was running, I watched the status of the "System" process in the Windows Task Manager. As expected, I saw the "handles" count for this process rise continuously and rather quickly: very roughly, 30 units per second. My computer's CPU was 50% to 75% busy at the time.
No, no change in the handles value here. Constantly at 132.
After many minutes, tempor.sh halted itself with the by-now familiar
message "fork: resource temporarily unavailable." The number of
handles owned by the "System" process was about 86,000.
It appears that Windows itself has a problem clearing out old
Process handles from some operating system table. It looks like a
problem not specific to Cygwin at all. I admit that the evidence
I present is not conclusive. Nevertheless, the fact that there is
a boundlessly increasing allocation of a resource (process handles)
looks suspiciously like breakage to me.
Would someone please suggest a forum (or book) where I can pursue
this further. I would like to try to clear out the old handles,
the ones with names like
<Non-existent Process> (nnnn)
as referenced in "Process Explorer."
I usually hate the WFM messages, but I thought I mention it anyway ;)
Thank you for any suggestions!
Try a current snapshot. That propably won't help for your problem but who knows? Volker -- PGP/GPG key (ID: 0x9F8A785D) available from wwwkeys.de.pgp.net key-fingerprint 550D F17E B082 A3E9 F913 9E53 3D35 C9BA 9F8A 785D
signature.asc
Description: OpenPGP digital signature

