|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2016-02-16 21:57 UTC] basu at us dot ibm dot com
[2016-03-21 17:47 UTC] jpauli@php.net
[2016-03-21 19:47 UTC] jocelyn dot fournier at softizy dot com
[2016-03-22 11:56 UTC] jpauli@php.net
[2016-03-22 16:25 UTC] basu at us dot ibm dot com
[2016-03-26 09:04 UTC] rasmus@php.net
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sun Nov 02 12:00:01 2025 UTC |
Description: ------------ Hi, It seems huge page size is hardcoded in the php src code : In ZendAccelerator.c for example, you have : static void accel_move_code_to_huge_pages(void) { FILE *f; long unsigned int huge_page_size = 2 * 1024 * 1024; However on IBM Power8 on linux, the default page size is 64KB ( http://www.redbooks.ibm.com/redbooks/pdfs/sg248171.pdf ). Hence when huge pages are enabled, php displays the following warning : munmap() failed: [22] Invalid argument strace output : [...] mmap(NULL, 2097152, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|0x40000, -1, 0) = 0x3effff000000 madvise(0x3effff000000, 2097152, MADV_HUGEPAGE) = -1 EINVAL (Invalid argument) [...] open("/usr/local/lib/php/extensions/no-debug-non-zts-20151012/apcu.so", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\25\0\1\0\0\0\0`\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0644, st_size=121864, ...}) = 0 mmap(NULL, 158952, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3fff8e140000 mmap(0x3fff8e160000, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x10000) = 0x3fff8e160000 close(3) = 0 [...] munmap(0x3efff7000000, 134217728) = 0 close(3) = 0 munmap(0x3fff962c0000, 185272) = 0 munmap(0x3fff96240000, 82352) = 0 munmap(0x3fff96260000, 328760) = 0 munmap(0x3fff94210000, 33554432) = 0 munmap(0x3fff962f0000, 158952) = 0 brk(0x1001a8d0000) = 0x1001a8d0000 munmap(0x3fff96320000, 301576) = 0 munmap(0x3fff96210000, 196608) = 0 munmap(0x3effff000000, 2097152) = -1 EINVAL (Invalid argument) write(2, "\nmunmap() failed: [22] Invalid a"..., 40 munmap() failed: [22] Invalid argument ) = 40 munmap(0x3fff96370000, 327680) = 0 exit_group(0) = ? +++ exited with 0 +++ To fix the issue, the default page size should not be hardcoded, but should depend on the platform. Thanks and regards, Jocelyn Fournier Expected result: ---------------- No warning Actual result: -------------- munmap() failed: [22] Invalid argument