mmap failure [was: cygrunsrv + sshd + rsync = 20 times too slow -- throttled?]

Eliot Moss
Mon Sep 6 17:43:12 GMT 2021

On 9/6/2021 1:38 PM, Ken Brown via Cygwin wrote:
> On 9/6/2021 1:12 PM, Ken Brown via Cygwin wrote:
>> On 9/6/2021 11:32 AM, Corinna Vinschen via Cygwin wrote:
>>> On Sep  5 09:24, Ken Brown via Cygwin wrote:
>>>> On 9/4/2021 8:04 PM, Ken Brown via Cygwin wrote:
>>>>> On 9/4/2021 6:58 PM, Ken Brown via Cygwin wrote:
>>>>>> Here are the correct commits:
>>>>>> 8169e39ab Cygwin: C++17: register keyword is deprecated
>>>>>> 3ca80b360 Cygwin: dumper: fix up GCC pragma for g++ 11.2
>>>>>> bdb7991db Cygwin: workaround a g++ 11.2 initialization bug
>>>>>> 801120c1f Cygwin: loader script: add DWARF 5 sections
>>>>>> d5cc66426 Cygwin: testsuite: avoid "conflicting types" gcc warning
>>>>>> c2fe205b5 strstr: avoid warnings
>>>>>> 76c2c7a89 ldexp/ldexpf: avoid assembler warning
>>>>>> eeeb5650c Cygwin: fix declaration of RtlInitEmptyUnicodeString
>>>>>>>> So there appears to be something wrong with cygwin1.dll
>>>>>>>> built with the current build tools (gcc 11.2.0, binutils
>>>>>>>> 2.37, not sure what else is relevant).
>>>>> Wait a minute...I'll bet this is related to the MEM_EXTENDED_PARAMETER
>>>>> initialization problem that was dealt with in commit bdb7991db.
>>>> More data: When I run the test case under gdb, it succeeds.  When I run it
>>>> under strace, I see VirtualAlloc2 in fhandler_dev_zero::mmap failing with
>>>> windows error 87.
>>> Are the const's I added to the MEM_EXTENDED_PARAMETER data invalid,
>>> perhaps?
>> I tried removing them, and I got the same error.  I also tried removing static, and I tried 
>> removing both static and const.
> BTW, when I reported that the test case succeeds under gdb, that only happens when I build the test 
> case without optimization.  If I build with -O2, it fails under gdb also.  [In all my tests, I built 
> cygwin1.dll without optimization.] This makes no sense to me at all.

There can be a number of possibilities, but I wonder about a variable
uninitialized along some path.  By accident, the contents may have a
non-failing value with -O0 by the situation can be different for -O2.
If you're dealing with concurrency and such, then -O0 and -O2 can act
differently with respect to races.  Just some thoughts ...

Best - Eliot Moss

More information about the Cygwin mailing list