Re: AC_FUNC_MMAP test fails on AIX for MAP_FIXED: who's at fault?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Bob,

You prompted me to google around a bit more for valid use cases of MAP_FIXED and here is an enlightening StackOverflow post:

https://stackoverflow.com/questions/28575893/when-would-one-use-mmap-map-fixed

So apparently the Autoconf's test doesn’t do anything wrong, but valid use cases for MAP_FIXED are indeed very special.

Is it fair to discard the mmap implementation completely, just because MAP_FIXED is failing? Maybe define something like HAVE_MMAP_MAP_FIXED instead (or not?)… Happy to do any tests on AIX if helpful.

All the best,
Yury

> On 28. Jul 2024, at 21:18, Bob Friesenhahn <graphicsmagick.project@xxxxxxxxx> wrote:
> 
> I would not expect MAP_FIXED to be portable or a normal requirement. Most common uses of memory mapping (e.g. file mapping) do not require a fixed mapping. Perhaps device drivers with a user-space component (or applications which store pointers in shared memory) might desire a fixed mapping 
> 
> Bob
> On Jul 28, 2024, at 8:11 AM, "Yury V. Zaytsev" <yury@xxxxxxxxxx> wrote: Hi there,
> 
> I’m trying to wrap my head around AC_FUNC_MMAP failing on AIX (specifically, version 7.3 is what I tried on GCC compile farm). It appears that it has been failing for decades though, so the problem isn’t exactly new...
> 
> It returns exit code 10, which means that the following comparison fails:
> 
> data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_FIXED, fd, 0L);
> 
> If I check the return value of mmap it equals to MAP_FAILED.
> 
> Now, the question is, why does it fail and is it supposed to fail or not? Here are the IBM docs on the subject:
> 
> https://www.ibm.com/docs/en/aix/7.3?topic=m-mmap-mmap64-subroutine
> 
> It says 
> 
> “A region is never placed ... at an address where it would overlap an existing region.”
> 
> (Linux has a similar comment in the man pages: “If the memory region ... overlaps pages of any existing mapping(s), then the overlapped part of the existing
> mapping(s) will be discarded.” - macOS simply says MAP_FIXED is discouraged.)
> 
> This is the part that is confusing me. The test says explicitly:
> 
> “Next, try to mmap the file at a fixed address which already has something else allocated at it.”
> 
> To me this sounds like it’s testing something, which actually shouldn’t work. 
> 
> However, on macOS at least it works (and obviously on other common systems, otherwise people would have noticed a long time ago) - so maybe I’m misunderstanding the comment.
> 
> If I remove MAP_FIXED, then the rest works (including data consistency checks). So apparently AIX has a working mmap implementation, except for this particular issue / flag.
> 
> Also it doesn’t just do some random nonsense, but returns MAP_FAILED. Thus well-written software should be checking for it anyway and act accordingly. The errorno is set to ENOMEM (“Not enough space”).
> 
> How would you go about that? I see the check has been adjusted several times lately, so hopefully Paul or Zack could chime in?
> 
> Is it a bug that IBM should fix? Obviously, didn’t happen so far, even though it has been the case for a very long while. Anyone has contacts and/or works for IBM?
> 
> Or maybe the test is not good and should be adjusted by either removing the MAP_FIXED flag or still succeeding upon MAP_FAILED?
> 
> P.S. I’m not subscribed to the list, so please keep me on CC.
> 
> All the best,
> Yury
> 
> 
> 
> 
> 






[Index of Archives]     [GCC Help]     [Kernel Discussion]     [RPM Discussion]     [Red Hat Development]     [Yosemite News]     [Linux USB]     [Samba]

  Powered by Linux