Skip to content

Commit 815a2be

Browse files
committed
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.
1 parent c5e8c98 commit 815a2be

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

ext/opcache/jit/zend_jit.c

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3543,7 +3543,10 @@ ZEND_EXT_API void zend_jit_unprotect(void)
35433543
DWORD old;
35443544

35453545
if (!VirtualProtect(dasm_buf, dasm_size, PAGE_READWRITE, &old)) {
3546-
fprintf(stderr, "VirtualProtect() failed\n");
3546+
DWORD err = GetLastError();
3547+
char *msg = php_win32_error_to_msg(err);
3548+
fprintf(stderr, "VirtualProtect() failed [%u] %s\n", err, msg);
3549+
php_win32_error_msg_free(msg);
35473550
}
35483551
}
35493552
#endif
@@ -3562,7 +3565,10 @@ ZEND_EXT_API void zend_jit_protect(void)
35623565
DWORD old;
35633566

35643567
if (!VirtualProtect(dasm_buf, dasm_size, PAGE_EXECUTE_READ, &old)) {
3565-
fprintf(stderr, "VirtualProtect() failed\n");
3568+
DWORD err = GetLastError();
3569+
char *msg = php_win32_error_to_msg(err);
3570+
fprintf(stderr, "VirtualProtect() failed [%u] %s\n", err, msg);
3571+
php_win32_error_msg_free(msg);
35663572
}
35673573
}
35683574
#endif
@@ -3775,13 +3781,19 @@ ZEND_EXT_API int zend_jit_startup(void *buf, size_t size, zend_bool reattached)
37753781
DWORD old;
37763782

37773783
if (!VirtualProtect(dasm_buf, dasm_size, PAGE_EXECUTE_READWRITE, &old)) {
3778-
fprintf(stderr, "VirtualProtect() failed\n");
3784+
DWORD err = GetLastError();
3785+
char *msg = php_win32_error_to_msg(err);
3786+
fprintf(stderr, "VirtualProtect() failed [%u] %s\n", err, msg);
3787+
php_win32_error_msg_free(msg);
37793788
}
37803789
} else {
37813790
DWORD old;
37823791

37833792
if (!VirtualProtect(dasm_buf, dasm_size, PAGE_EXECUTE_READ, &old)) {
3784-
fprintf(stderr, "VirtualProtect() failed\n");
3793+
DWORD err = GetLastError();
3794+
char *msg = php_win32_error_to_msg(err);
3795+
fprintf(stderr, "VirtualProtect() failed [%u] %s\n", err, msg);
3796+
php_win32_error_msg_free(msg);
37853797
}
37863798
}
37873799
#endif

0 commit comments

Comments
 (0)