Win 10 Threshold 2 issues

I have recently installed the Threshold 2 update to Win 10, and apart from a number of small issues, it seriously broke my grabber environment on a 64 bit machine.

The error messages:

5 [main] lftp 2944 C:\bin\lftp\bin\lftp.exe: *** fatal error in forked process - fork: can't reserve memory for parent stack 0x600000 - 0x800000, (child has 0x400000 - 0x600000), Win32 error 487
1481 [main] lftp 2944 cygwin_exception::open_stackdumpfile: Dumping stack trace to lftp.exe.stackdump
6 [main] lftp 5008 fork: child -1 - forked process 2944 died unexpectedly, retry 0, exit code 0x100, errno 11
...

For that environment, I use an lftp port to Windows (https://nwgat.ninja/lftp-for-windows/), and had installed the 64bit verion which is essentially a cygwin compilation packaged with the necessary DLLs. (This issue probably more widely affects cygwin, or perhaps just the bash shell under cygwin.)

This all worked fine under Win8.0, Win8.1, and Win10.0, but failed with the TH2 update.

Though the batch files worked fine from the console, they did not work when executed from SpectrumLab or nncron… so time for some investigation.

It seems the issue is with a 32bit app invoking a 64bit executable, and a work around was to wrap the 64bit executable in a 64bit command processor… something is wrong with TH2 that it now doesn’t work properly as it did previously.

set LFTP=c:\bin\lftp\bin\lftp
c:
cd \qrss
rem wrap this with 64bit cmd.exe to overcome issues in Win10 TH2
%windir%\sysnative\cmd.exe /c %LFTP% -f images.lftp

The code above shows how to wrap the lftp command.

You won’t find a sysnative directory, it is virtual. You can dig into Microsoft’s documentation to find out what it does / how and why it works.