Bug #79751 [Opn]: "VirtualProtect() failed" entries in apache error.log
| From: | buschmann at nidsa dot net | Date: | Tue, 30 Jun 2020 09:18:28 +0000 |
| Subject: | Bug #79751 [Opn]: "VirtualProtect() failed" entries in apache error.log | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-227735@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=79751&edit=1
ID: 79751
User updated by: buschmann at nidsa dot net
Reported by: buschmann at nidsa dot net
Summary: "VirtualProtect() failed" entries in apache
error.log
Status: Open
Type: Bug
Package: Apache2 related
Operating System: Windows Server 2019 64bit
PHP Version: 8.0.0alpha1
Block user comment: N
Private report: N
New Comment:
I have not changed any configuration for opcache/jit from the proven values of version 7.x.x (for
opcache mostly the buffer/string sizes).
JIT seems to be ON by default as is the case here.
Here are the complete config settings from Zend OPcache from phpinfo:
Opcode Caching Up and Running
Optimization Enabled
SHM Cache Enabled
File Cache Disabled
JIT On
Startup OK
Shared memory model win32
Cache hits 0
Cache misses 1
Used memory 4242384
Free memory 29312048
Wasted memory 0
Interned Strings Used memory 199520
Interned Strings Free memory 2945736
Cached scripts 1
Cached keys 2
Max keys 983
OOM restarts 0
Hash keys restarts 0
Manual restarts 0
opcache.blacklist_filename no value no value
opcache.cache_id no value no value
opcache.consistency_checks 0 0
opcache.dups_fix Off Off
opcache.enable On On
opcache.enable_cli Off Off
opcache.enable_file_override Off Off
opcache.error_log no value no value
opcache.file_cache no value no value
opcache.file_cache_consistency_checks On On
opcache.file_cache_fallback On On
opcache.file_cache_only Off Off
opcache.file_update_protection 2 2
opcache.force_restart_timeout 180 180
opcache.interned_strings_buffer 4 4
opcache.jit 1205 1205
opcache.jit_bisect_limit 0 0
opcache.jit_blacklist_root_trace 16 16
opcache.jit_blacklist_side_trace 8 8
opcache.jit_buffer_size 0 0
opcache.jit_debug 0 0
opcache.jit_hot_func 127 127
opcache.jit_hot_loop 64 64
opcache.jit_hot_return 8 8
opcache.jit_hot_side_exit 8 8
opcache.jit_max_loops_unroll 8 8
opcache.jit_max_polymorphic_calls 2 2
opcache.jit_max_recursive_calls 2 2
opcache.jit_max_recursive_returns 2 2
opcache.jit_max_root_traces 1024 1024
opcache.jit_max_side_traces 128 128
opcache.jit_prof_threshold 0.005 0.005
opcache.log_verbosity_level 1 1
opcache.max_accelerated_files 980 980
opcache.max_file_size 0 0
opcache.max_wasted_percentage 5 5
opcache.memory_consumption 32 32
opcache.mmap_base no value no value
opcache.opt_debug_level 0 0
opcache.optimization_level 0x7FFEBFFF 0x7FFEBFFF
opcache.preferred_memory_model no value no value
opcache.preload no value no value
opcache.protect_memory Off Off
opcache.record_warnings Off Off
opcache.restrict_api no value no value
opcache.revalidate_freq 60 60
opcache.revalidate_path Off Off
opcache.save_comments Off Off
opcache.use_cwd On On
opcache.validate_permission Off Off
opcache.validate_timestamps On On
Previous Comments:
------------------------------------------------------------------------
[2020-06-30 07:25:57] cmb@php.net
I think these log entries are from OPcache JIT. Do you have JIT
enabled (see PHP info)?
------------------------------------------------------------------------
[2020-06-29 15:42:19] buschmann at nidsa dot net
when I set opcache.protect_memory=0 (verified in php_info
opcache.protect_memory Off Off)
the problem stays the same.
I don't know the internals, but the sripts in the web application are working in both
situations.
------------------------------------------------------------------------
[2020-06-29 08:49:49] nikic@php.net
Does the problem go away if you set opcache.protect_memory=0? This is an debugging setting, that
should not be enabled for production opcache use.
Of course, it still shouldn't cause failures...
------------------------------------------------------------------------
[2020-06-28 08:29:45] buschmann at nidsa dot net
Description:
------------
When trying to load the opcache with php-scripts from tools and our application in a script to
preload the opcache: (here one example line:)
<?php
$bresult=opcache_compile_file('N:\Apache\tcpdf\include\tcpdf_colors.php');
I get multiple entries in the apache error.log file as :
...
[Sun Jun 28 09:58:00.642291 2020] [mpm_winnt:notice] [pid 6572:tid 548] AH00354: Child: Starting 64
worker threads.
VirtualProtect() failed
VirtualProtect() failed
...
This was the first operation (explicitly and manually called from a browser) after a fresh start
from Apache/php as a service.
It seems that 2 entries per compile request are generated (without timestamp).
There are no errors reported in php_err.log.
The scripts have been successfully loaded into opcache as reported by
https://github.com/amnuts/opcache-gui - version
2.5.4
The same preload script has been used under 7.x.y until 7.4.7 for a long time without this issue.
Environment:
- Windows server 2019 64bit Standard in a VM under HyperV
- Apache 2.43 64bit from apachelounge
- php 8 alpha1 64bit thread safe from php.net QA download
- php loaded as a module with php_module
Test script:
---------------
<?php
$bresult=opcache_compile_file('N:\Apache\tcpdf\include\tcpdf_colors.php');
Expected result:
----------------
No error log entry in error.log
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=79751&edit=1