Hi Dale,
Something appears to be adding cruft to your outgoing emails.. links to urldefense.com that don't work (from outside your workplace maybe) and clutter up the Cygwin email archives. Can you turn that off somehow? More below...

Dale Lobb via Cygwin wrote:
-----Original Message-----
From: Cygwin <cygwin-bounces+dale.lobb=bryanhealth....@cygwin.com>
On Behalf Of Mark Geisert via Cygwin
Sent: Wednesday, September 6, 2023 6:32 PM
To: Cygwin Mailing List <cygwin@cygwin.com>
Subject: EXTERNAL SENDER: Re: Fork errors

Dale Lobb via Cygwin wrote:
    Since upgrading to the latest version of Cygwin a few weeks ago on a
server I manage, I've been experiencing an issue with fork errors.  The
Cygwin installation had not been updated for almost a year before that.

    The issue happens every time a script is invoked that purges files from
some temporary directories, but never in the same place in the script.  The
script uses multiple calls to find -exec to remove files over 10 days old from
the directories.  Here is a typical error.  Sometime the issue will assert after
just a  few tens of files deleted, sometimes after hundreds or thousands of
files have been deleted:

      removed '/cygdrive/d/.../obfuscated.datedata.txt'
            1 [main] find 20066 dofork: child -1 - forked process 4068 died
unexpectedly, retry 0, exit code 0xC0000142, errno 11
            find: cannot fork: Resource temporarily unavailable

    It also happens randomly at other times.  I've seen the bash shell itself 
fail
on the invocation of a mintty.  I've seen it happen on all sorts of interactive
commands entered from bash.

    Today, as a test, I updated all the installed Cygwin components.  One of
the post installation scripts failed, so I re-exec'd it:

      $ ./postinstall/0p_update-info-dir.dash
      Rebuilding info directory
          2 [main] dash 2059 dofork: child -1 - forked process 7676 died
unexpectedly, retry 0, exit code 0xC0000142, errno 11
          ./postinstall/0p_update-info-dir.dash: 22: Cannot fork

    A second re-exec then worked fine.

    I've tried reinstalling all the components, and I've tried rebaseall.

    Is there anything else I can try, or troubleshooting steps to take?

Try the FAQ, specifically
https://urldefense.com/v3/__https://cygwin.com/faq.html*faq.using.fixing-
fork-
failures__;Iw!!PI4dZuVR!iMEVdwUomDN3L1KOsOWkDMmUhiuXarkAyjI6itT-
BSJ5bcjg65VVWHdP7U5Ny2VaBilIz9R3o6SkMqX3$

Example #1 of added cruft above.  Something appears to be rewriting URLs for 
"safety".


Pay attention to the subtleties of running rebaseall, e.g. make sure no Cygwin
processes (background server processes or whatnot) are running.  When the
FAQ gets
to talking about running setup.exe for this situation, it means close any open
Cygwin shell windows and manually run the Cygwin Setup program, just
taking its
defaults all the way through; you needn't install anything it suggests at this
time.  The object is to get to Setup's end where it runs a full rebase.

Speculation: The specific exit code 0xC0000142 may or may not have
something to do
with Windows error 142, which is ERROR_BUSY_DRIVE.  I cannot help further
on this.

As corrected by another poster, it's hex 142 == decimal 322 == ERROR_DEVICE_NO_RESOURCES.


..mark

________________________________

CONFIDENTIALITY NOTICE: This e-mail message, including any attachments,
is for the sole use of the intended recipients and may contain confidential
and privileged information. Any unauthorized review, use, disclosure or
distribution is prohibited. If you are not the intended recipient, please
contact the sender by reply e-mail and destroy all copies of the original
message.

P.S. You've sent your post to a public mailing list so the above notice does not
apply.  Obfuscate your system particulars if that's a problem.

Can you eliminate this confidentiality notice from your emails to the Cygwin mailing list?


--
Problem reports:
https://urldefense.com/v3/__https://cygwin.com/problems.html__;!!PI4dZu
VR!iMEVdwUomDN3L1KOsOWkDMmUhiuXarkAyjI6itT-
BSJ5bcjg65VVWHdP7U5Ny2VaBilIz9R3o_fDJhhS$
FAQ:
https://urldefense.com/v3/__https://cygwin.com/faq/__;!!PI4dZuVR!iMEVd
wUomDN3L1KOsOWkDMmUhiuXarkAyjI6itT-
BSJ5bcjg65VVWHdP7U5Ny2VaBilIz9R3o5GKnVUD$
Documentation:
https://urldefense.com/v3/__https://cygwin.com/docs.html__;!!PI4dZuVR!i
MEVdwUomDN3L1KOsOWkDMmUhiuXarkAyjI6itT-
BSJ5bcjg65VVWHdP7U5Ny2VaBilIz9R3o2A6MIc4$
Unsubscribe info:
https://urldefense.com/v3/__https://cygwin.com/ml/*unsubscribe-
simple__;Iw!!PI4dZuVR!iMEVdwUomDN3L1KOsOWkDMmUhiuXarkAyjI6itT-
BSJ5bcjg65VVWHdP7U5Ny2VaBilIz9R3o4OJCuT7$

Examples #2-#5 of added cruft above.

Hi Mark, thanks for the reply!

   I ran though the rebase-trigger process as outlined in the FAQ.
Unfortunately,  there was no difference afterwards.

   One good thing about reading the FAQ, it lead me to
"/usr/share/doc/rebase/README" which has the parameters for the
rebaseall command.  I'm thinking about running rebaseall manually with a
different base address than the default (0x70000000).

You could certainly try that but I don't expect an improvement. The most frequent fork error reports are about child DLLs not being loaded at the same address they had in the parent. In those cases, yes, a different rebase "base" might help.

From your reports it appears to be a different failure mode: the child sometimes raises an exception and dies. The exception code (exit code) seems to be the same every time 0xC0000142; is that true?

If you're up for it, you could try to find an STC (Simple Test Case) that more often than not reproduces the fork error. Then run that STC under strace. 'man strace' for more info. If you get the fork error, take a look at the strace output file and try to locate that exception code 0xC0000142. Look at the lines leading up to that and see if anything interesting appears.

You might think about posting the strace output, IF IT IS NOT TOO BIG, to the Cygwin mailing list as an attachment. The reason for minimizing is that it keeps searches of the mailing list archives more robust.
HTH,

..mark

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

Reply via email to