winlibs_mingw icon indicating copy to clipboard operation
winlibs_mingw copied to clipboard

make "invalid output sync mutex"

Open mdavidsaver opened this issue 2 years ago • 9 comments

The "make.exe" bundled with strawberry perl 5.38.0.1 appears to have an issue which causes the --output-sync / -O flag to error out when a recursive make is attempted.

  make -C ./configure install
  make: *** invalid output sync mutex: --.  Stop.
  make: *** [configure/RULES_DIRS:85: configure.install] Error 2

@genio points to WinLibs as the origin of this make build. https://github.com/StrawberryPerl/Perl-Dist-Strawberry/issues/148#issuecomment-1777875756

I have reported this on upstream gnumake. However, I wonder if this is the result of a buggy patch.

mdavidsaver avatar Oct 24 '23 19:10 mdavidsaver

I have confirmed that the make 4.4.1 from chocolatey.org works correctly with -Otarget.

mdavidsaver avatar Oct 25 '23 01:10 mdavidsaver

I build make from source without patches. Are you saying it needs additional patches when building for Windows?

brechtsanders avatar Oct 25 '23 08:10 brechtsanders

At this point, all I can say is that it behaves differently than the build served from chocolatey.org. At least when executed on a github actions windows image. Apparently that build from ezwinports.

I don't run windows locally, so I am limited to github actions builds for troubleshooting, which is... less than efficient.

mdavidsaver avatar Oct 25 '23 14:10 mdavidsaver

I can't reproduce your problem. Just tried building zlib using the mingw32-make.exe from my latest release and adding -Otarget gives me no errors.

I distribute it as mingw32-make.exe to avoid conflicts with customized make.exe versions like the one supplied by MSYS2.

Note: Be aware of other packages that take just the .exe file from my releases. Since I do shared build it may come with certain .dll files that are not interchangeable with other packages. So I can't speak for how they packaged this in StrawberryPerl.

brechtsanders avatar Oct 26 '23 06:10 brechtsanders

I can't reproduce your problem. ..

Unfortunately, neither can I. I do not have a windows box myself, so I am limited to testing via GHA builds. Since I opened this ticket, GHA has revised their windows image to downgrade strawberryperl back to 5.32.1, which installs (I guess?) your build of gnumake 4.2.1 as gmake.exe. I can't reproduce this issue with that build, and I am unable to persuade Choco to upgrade strawberryperl back to 5.38.0. The last may be an issue with my lack of familiarity Choco, but at this point I have exhausted the time I can spend on this issue.

To summarize my situation a few days ago, with make 4.4.1 and strawberryperl 5.38.0 installed from chocolatey.org. I was able to workaround this issue by adjusting %PATH% to select (C:\ProgramData\Chocolatey\bin\make.exe) instead of C:\Strawberry\c\bin\make.EXE.

... adding -Otarget ...

Maybe relevant. My builds also add -j2, otherwise --output-sync is not really relevant.

I distribute it as mingw32-make.exe to avoid conflicts ...

Note: Be aware of other packages that take just the .exe file from my releases ...

So noted.

mdavidsaver avatar Oct 28 '23 19:10 mdavidsaver

I build make from source without patches.

@brechtsanders Could you provide more details on your build process and environment?

There does seem to be some difference between your binary and the one shipped by ezwinports. If the input source is identical, then logically there must be some difference in the the inputs to the build process.

For my part, I find that I am able to reproduce this error in the WINE environment with your builds (from the strawberry perl "portable" .zip), while the ezwinports build appears to work.

In the following bin/make.exe is from ezwinports, while perl/c/bin/make.exe and perl/c/bin/mingw32-make.exe from strawberry perl.

$ sha1sum bin/make.exe perl/c/bin/mingw32-make.exe perl/c/bin/make.exe
863ed3cecbd5b38336b16c315704bcf265c077da  bin/make.exe
7c70601eaedb9ad74586486a6c56515e65042a55  perl/c/bin/mingw32-make.exe
7c70601eaedb9ad74586486a6c56515e65042a55  perl/c/bin/make.exe

My input Makefile is:

all: foo bar

foo:
        $(MAKE) echo-foo

bar:
        $(MAKE) echo-bar

echo-%:
        echo $@
$ WINEPREFIX=$PWD/wine wine bin/make.exe -j -Otarget
wine: Read access denied for device L"\\??\\Z:\\", FS volume label and serial are not available.
Z:/tmp/junk/bin/make.exe echo-foo
Z:/tmp/junk/bin/make.exe echo-bar
wine: Read access denied for device L"\\??\\Z:\\", FS volume label and serial are not available.
wine: Read access denied for device L"\\??\\Z:\\", FS volume label and serial are not available.
make[1]: Entering directory 'Z:/tmp/junk'
echo echo-bar
echo-bar
make[1]: Leaving directory 'Z:/tmp/junk'
make[1]: Entering directory 'Z:/tmp/junk'
echo echo-foo
echo-foo
make[1]: Leaving directory 'Z:/tmp/junk'
$ WINEPREFIX=$PWD/wine wine perl/c/bin/make.exe -j -Otarget
wine: Read access denied for device L"\\??\\Z:\\", FS volume label and serial are not available.
Z:/tmp/junk/perl/c/bin/make.exe echo-foo
Z:/tmp/junk/perl/c/bin/make.exe echo-bar
mamkaek:e :* **** *c acnannonto tp aprasres eo uotuptuptu ts ysnycn cm umtuetxe x¸ ¸È:È :I nIvnavlaildi do r
o ri nicnompcloemtpel emtuel tmiublyttieb yotre or  wwiiddee  cchhaarraacctteerr..    SSttoopp..

make: *** [makefile:8: bar] Error 2
make: *** Waiting for unfinished jobs....
make: *** [makefile:5: foo] Error 2
$ WINEPREFIX=$PWD/wine wine perl/c/bin/mingw32-make.exe -Otarget -j
wine: Read access denied for device L"\\??\\Z:\\", FS volume label and serial are not available.
Z:/tmp/junk/perl/c/bin/mingw32-make.exe echo-foo
Z:/tmp/junk/perl/c/bin/mingw32-make.exe echo-bar
mmiinnggww3322--mamkaek:e :* **** *c acnannontot  ppaarrssee  oouuttppuutt  ssyynncc  mmuutteexx  ¸¸ÈÈ::  II
nnvvaalliidd  oorr  iinnccoommpplleettee  mmuullttiibbyyttee  oorr  wwiiddee  cchhaarraacctteerr..    SSttoopp
..

mingw32-make: *** [makefile:8: bar] Error 2
mingw32-make: *** Waiting for unfinished jobs....
mingw32-make: *** [makefile:5: foo] Error 2

mdavidsaver avatar Nov 05 '23 19:11 mdavidsaver

All my build recipes are available at https://github.com/brechtsanders/winlibs_recipes/

The recipes are basically shell commands, which call some tools from https://github.com/brechtsanders/winlibs_tools

The recipe used for mingw32-make can be found here: https://github.com/brechtsanders/winlibs_recipes/blob/main/recipes/make.winlib

brechtsanders avatar Nov 05 '23 20:11 brechtsanders

Can you please check if the following release still has those issues when using the supplied mingw32-make? https://github.com/brechtsanders/winlibs_mingw/releases/tag/13.2.0mcf-11.0.1-ucrt-r3

Additional question: what kind of drive is your Z: drive?

brechtsanders avatar Nov 19 '23 20:11 brechtsanders

Any feedback on this?

brechtsanders avatar Dec 26 '23 12:12 brechtsanders