This is the mail archive of the
mailing list for the Cygwin project.
Re: Possible bug with mmap on XP?
- From: Corinna Vinschen <corinna-cygwin at cygwin dot com>
- To: cygwin at cygwin dot com
- Date: Fri, 3 Feb 2006 09:57:27 +0100
- Subject: Re: Possible bug with mmap on XP?
- References: <200602030016.k130GYOk002533@base686.home.org>
- Reply-to: cygwin at cygwin dot com
On Feb 2 18:16, Dave Bodenstab wrote:
> I searched the mailing list archives and googled, but failed to find
> anything specific to XP regarding this...
> I am using the latest version (1.5.19-4) of Cygwin.
> I had previously ported a unix prog that used mmap to Cygwin. On win2k
> it works fine. When I copied the prog to a newly-installed win XP
> professional system, I get:
> mmap failed (Permission denied)
> when attempting to do a
> mmap(0,1500,PROT_EXEC|PROT_READ|PROT_WRITE,MAP_PRIVATE,<the fd>,0)
> I've found that changing the permissions (chmod +x) on the file being
> mmap'ed makes the problem go away.
> Is this the way things are supposed to work on XP?
This is a constraint of the underlying OS, yes. The old implementation
of mmap used up to 1.5.18 didn't support PROT_EXEC at all, it was just
fake. Since 1.5.19, PROT_EXEC mapping is now supported correctly, which
means, the underlying NT functions are called requesting PAGE_EXECUTE
But here's the problem. To create file mappings with PAGE_EXECUTE
protection, the file must be opened with GENERIC_EXECUTE access.
This is done internally in mmap, but it fails if the file doesn't
have the execute permission set.
Whether or not this behaviour is backed by SUSv3, I'm not sure. SUSv3
states "if an implementation cannot support the combination of access
types specified by prot, the call to mmap() shall fail.", so here's one
situation in which the implementation can't support the combination of
access types specified by prot.
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html