page_size vs allocation_granularity

Corinna Vinschen corinna-cygwin@cygwin.com
Wed Jul 22 18:48:30 GMT 2020


On Jul 22 14:35, Ken Brown via Cygwin-developers wrote:
> On 7/22/2020 12:42 PM, Ken Brown via Cygwin-developers wrote:
> > On 7/22/2020 4:33 AM, Corinna Vinschen wrote:
> > > If php reads or writes in the remainder of the block constituting EOF,
> > > or tries to change page protection, shit happens.  Every time, a process
> > > stabs into the EOF block following the last valid 4K block, it results
> > > in a STATUS_ACCESS_VIOLATION which in turn calls
> > > mmap_is_attached_or_noreserve().  While this situation can be
> > > recognized, I don't see a way to fix this from the processes POV.
> > 
> > So that's exactly what happens when php maps a file whose size is a
> > multiple of 4K but not a multiple of 64K.  It expects that there is a
> > zero-filled region beyond EOF that it can safely read from.
> 
> Interestingly, you mentioned exactly this scenario in 2002 as a reason for
> keeping the pagesize at 4K rather than 64K:
> 
>   https://cygwin.com/pipermail/cygwin/2002-January/068154.html

Yeah, it took quite some time for me to realize that a 64K pagesize is
usually the better approach for POSIX compatibility.  And the fact that
AT_ROUND_TO_PAGE worked nicely on 32 bit (and 64 bit way off) helped,
too.  I was pretty stubborn back then... I hope that changed.

> I have nothing new to contribute, so we should probably just drop this.  My
> curiosity has been satisfied.

I toyed around with Windows mappings today, all the stuff I already
tried since 2000 over and over again.  Still no joy.


Corinna

-- 
Corinna Vinschen
Cygwin Maintainer


More information about the Cygwin-developers mailing list