URL:
  <https://savannah.gnu.org/bugs/?61409>

                 Summary: The code used to create sub-processes on Windows
triggers the spawnve() issue
                 Project: make
            Submitted by: ilg
            Submitted on: Mon 01 Nov 2021 11:13:09 AM EET
                Severity: 3 - Normal
              Item Group: Bug
                  Status: None
                 Privacy: Public
             Assigned to: None
             Open/Closed: Open
         Discussion Lock: Any
       Component Version: 4.3
        Operating System: MS Windows
           Fixed Release: None
           Triage Status: None

    _______________________________________________________

Details:

Although I cannot tag this report as a direct bug in make, it is a major
contributing factor.

It seems that the implementation of 'spawnve()' in the modern Microsoft UCRT
API has a problem, and in certain conditions, calling the 'spawn*e()'
functions with a non-NULL environment, crashes with Error -1073741819 which is
0xC0000005, or ERROR_ACCESS_DENIED.

Unfortunately these conditions are met by GNU make, and some programs invoked
by 'make.exe' that try to create sub-processes with 'spawn*e()', fail.

Since 'spawnve()' is also called by BusyBox in its 'sh.exe' implementation,
this is a major issue, because it affects most common build tools.

I documented this issue in a separate project:

- https://github.com/xpack-dev-tools/ms-spawn-issue


Since ideally make should be able to start any sub-processes, including those
who use the unreliable 'spawnve()', it would be useful to review the Windows
specific code and try to avoid this problem.

A good source of inspiration might be Ninja Build code, which does not trigger
the condition that affects 'spawnve()' calls.

My knowledge of Windows is not good enough to provide a patch myself, but I
did my best to diagnose this issue, and I offer my help for further testing.






    _______________________________________________________

Reply to this item at:

  <https://savannah.gnu.org/bugs/?61409>

_______________________________________________
  Message sent via Savannah
  https://savannah.gnu.org/


Reply via email to