From 815a2be2ed4f39d44b12ef89f24e4baf6ce181d1 Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Tue, 30 Jun 2020 09:52:39 +0200 Subject: [PATCH] Improve "VirtualProtect() failed" error messages When `mprotect()` fails, the error message contains `errno` and the respective `strerror()`; we add basically the same info on Windows. --- ext/opcache/jit/zend_jit.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/ext/opcache/jit/zend_jit.c b/ext/opcache/jit/zend_jit.c index 09c4691034..3b7c9e1ec4 100644 --- a/ext/opcache/jit/zend_jit.c +++ b/ext/opcache/jit/zend_jit.c @@ -3543,7 +3543,10 @@ ZEND_EXT_API void zend_jit_unprotect(void) DWORD old; if (!VirtualProtect(dasm_buf, dasm_size, PAGE_READWRITE, &old)) { - fprintf(stderr, "VirtualProtect() failed\n"); + DWORD err = GetLastError(); + char *msg = php_win32_error_to_msg(err); + fprintf(stderr, "VirtualProtect() failed [%u] %s\n", err, msg); + php_win32_error_msg_free(msg); } } #endif @@ -3562,7 +3565,10 @@ ZEND_EXT_API void zend_jit_protect(void) DWORD old; if (!VirtualProtect(dasm_buf, dasm_size, PAGE_EXECUTE_READ, &old)) { - fprintf(stderr, "VirtualProtect() failed\n"); + DWORD err = GetLastError(); + char *msg = php_win32_error_to_msg(err); + fprintf(stderr, "VirtualProtect() failed [%u] %s\n", err, msg); + php_win32_error_msg_free(msg); } } #endif @@ -3775,13 +3781,19 @@ ZEND_EXT_API int zend_jit_startup(void *buf, size_t size, zend_bool reattached) DWORD old; if (!VirtualProtect(dasm_buf, dasm_size, PAGE_EXECUTE_READWRITE, &old)) { - fprintf(stderr, "VirtualProtect() failed\n"); + DWORD err = GetLastError(); + char *msg = php_win32_error_to_msg(err); + fprintf(stderr, "VirtualProtect() failed [%u] %s\n", err, msg); + php_win32_error_msg_free(msg); } } else { DWORD old; if (!VirtualProtect(dasm_buf, dasm_size, PAGE_EXECUTE_READ, &old)) { - fprintf(stderr, "VirtualProtect() failed\n"); + DWORD err = GetLastError(); + char *msg = php_win32_error_to_msg(err); + fprintf(stderr, "VirtualProtect() failed [%u] %s\n", err, msg); + php_win32_error_msg_free(msg); } } #endif -- 2.50.1