Advertisement
Guest User

Untitled

a guest
Nov 27th, 2015
602
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 1.91 KB | None | 0 0
  1. diff --git a/ext/opcache/ZendAccelerator.c b/ext/opcache/ZendAccelerator.c
  2. index e23e751..572d7f8 100644
  3. --- a/ext/opcache/ZendAccelerator.c
  4. +++ b/ext/opcache/ZendAccelerator.c
  5. @@ -2515,6 +2515,8 @@ static int accel_remap_huge_pages(void *start, size_t size, const char *name, si
  6.         MAP_PRIVATE | MAP_ANONYMOUS,
  7.         -1, 0);
  8.     if (mem == MAP_FAILED) {
  9. +       zend_error(E_WARNING,
  10. +               ACCELERATOR_PRODUCT_NAME " huge_code_pages: mmap failed: %s (%d)", strerror(errno), errno);
  11.         return -1;
  12.     }
  13.     memcpy(mem, start, size);
  14. @@ -2525,20 +2527,42 @@ static int accel_remap_huge_pages(void *start, size_t size, const char *name, si
  15.         MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED | MAP_HUGETLB,
  16.         -1, 0);
  17.  #  endif
  18. -#  ifdef MADV_HUGEPAGE
  19.     if (ret == MAP_FAILED) {
  20. +#  ifdef MADV_HUGEPAGE
  21.         ret = mmap(start, size,
  22.             PROT_READ | PROT_WRITE | PROT_EXEC,
  23.             MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED,
  24.             -1, 0);
  25. +       if (ret == MAP_FAILED) {
  26. +           zend_error(E_WARNING,
  27. +                   ACCELERATOR_PRODUCT_NAME " huge_code_pages: mmap(FIXED) failed: %s (%d)",
  28. +                   strerror(errno), errno);
  29. +           munmap(mem, size);
  30. +           return -1;
  31. +       }
  32.         if (-1 == madvise(start, size, MADV_HUGEPAGE)) {
  33. +           zend_error(E_WARNING,
  34. +                   ACCELERATOR_PRODUCT_NAME " huge_code_pages: madvise(HUGEPAGE) failed: %s (%d)",
  35. +                   strerror(errno), errno);
  36.             munmap(mem, size);
  37.             return -1;
  38.         }
  39. -   }
  40. +#  else
  41. +       ret = mmap(start, size,
  42. +               PROT_READ | PROT_WRITE | PROT_EXEC,
  43. +               MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0);
  44. +       if (ret == MAP_FAILED) {
  45. +           /* this should never happen */
  46. +       }
  47. +       memcpy(start, mem, size);
  48. +       zend_error(E_WARNING,
  49. +               ACCELERATOR_PRODUCT_NAME "huge_code_pages: mmap(HUGETLB) failed: %s (%d)", strerror(errno), errno);
  50. +       return -1;
  51.  #  endif
  52. +   }
  53. +
  54.     if (ret == start) {
  55. -       memcpy(start, mem, size);
  56. +       memcpy(start, mem, size);
  57.         mprotect(start, size, PROT_READ | PROT_EXEC);
  58.     }
  59.     munmap(mem, size);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement