Spuriously failing mprotect() on ppc64/ppc64le

Peter Robinson pbrobinson at gmail.com
Mon Oct 13 18:48:03 UTC 2014


>> I maintain the gcl package for Fedora.  Upstream recently announced
>> support for both ppc64 and ppc64le, so I attempted a build.  However,
>> the build is failing on an mprotect() call that looks, to me, like it
>> ought to succeed.  This is not happening on any other architecture, so
>> it is either something in the ppc64-specific gcl code, or some quirk of
>> Fedora ppc64 systems.  Here is an example build, with lots of debug
>> prints added by yours truly:
>> http://ppc.koji.fedoraproject.org/koji/taskinfo?taskID=2132156
>>
>> In this case, it is the ppc64le build that failed, but it is the ppc64
>> build just as often.  We're in a race to see which one can die first.
>>
>> Here's why I think the mprotect() should have succeeded.  Near the
>> bottom of build.log, you'll see a line that reads:
>>
>> mprotect failure: 0x1470000 65536 7 : Permission denied
>>
>> ... meaning that we called mprotect(0x1470000, 65536, PROT_READ |
>> PROT_WRITE | PROT_EXEC), it returned -1 to indicate failure, and errno
>> == EACCES.  Above that is the contents of /proc/<pid>/smaps immediately
>> after the failing mprotect() call.  If you dig through that, you can
>> find the relevant memory region:
>>
>> 01210000-19b2f0000 rw-p 00000000 00:00 0
>> [heap]
>> Size:            6718336 kB
>> Rss:                5440 kB
>> Pss:                5440 kB
>> Shared_Clean:          0 kB
>> Shared_Dirty:          0 kB
>> Private_Clean:         0 kB
>> Private_Dirty:      5440 kB
>> Referenced:         5440 kB
>> Anonymous:          5440 kB
>> AnonHugePages:         0 kB
>> Swap:                  0 kB
>> KernelPageSize:       64 kB
>> MMUPageSize:          64 kB
>> Locked:                0 kB
>> VmFlags: rd wr mr mw me ac
>>
>> As we can see from VmFlags, this memory region has the may-read,
>> may-write, and may-execute flags set, so there is no problem there.  The
>> koji builders have SELinux turned off (verified by running
>> selinuxenabled at the top of %build; see the message "SELinux is off.
>> Smooth sailing ahead."), so thjis is not an SELinux denial.
>
> Well, the koji builds are done in a chroot environment. I guess that is why
> you see it disabled in the build log, even if it is enabled in the builder.
> Could someone with access please confirm the koji builders have selinux
> enabled?

It is not enabled on the builders across all architectures. It's
currently not supported in the builders.

>> Can anybody think of any reason why that mprotect() call would have
>> failed?  Note that lots of similar mprotect() calls succeeded before
>> this one failed.
>
> I guess this is indeed a selinux-related issue. I just tried building gcl on
> a ppc64le VM. It builds fine when selinux is disabled and fails when selinux
> is enabled with the same error messages seen in the koji build.

I'm not convinced as selinux isn't supported for koji/mock on builders.

> gcl seems to have a workaround to support selinux that relies on
> READ_IMPLIES_EXEC:
> http://lists.gnu.org/archive/html/gcl-devel/2014-08/msg00014.html
> But looks like READ_IMPLIES_EXEC is not supported on ppc64 or ppc64le... it
> is always false.
>
> Sorry for the delay... I had to dig some info to respond and the Alpha
> release is taking a lot of our time.
>
> []'s
> Gustavo Luiz Duarte
>>
>>
>> Thanks for any suggestions you can give.  Regards,
>> --
>> Jerry James
>> http://www.jamezone.org/
>>
>>
>> _______________________________________________
>> ppc mailing list
>> ppc at lists.fedoraproject.org
>> https://admin.fedoraproject.org/mailman/listinfo/ppc
>>
>
> _______________________________________________
> ppc mailing list
> ppc at lists.fedoraproject.org
> https://admin.fedoraproject.org/mailman/listinfo/ppc


More information about the ppc mailing list