Bug #79751 [Opn]: "VirtualProtect() failed" entries in apache error.log

From: Date: Tue, 30 Jun 2020 11:30:44 +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-227740@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 Updated by: cmb@php.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: > JIT On > opcache.jit_buffer_size 0 0 That looks pretty strange to me. Would you still get the "VirtualProtect() failed" errors, if you set opcache.jit_buffer_size=16M? Previous Comments: ------------------------------------------------------------------------ [2020-06-30 09:18:28] buschmann at nidsa dot net 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 ------------------------------------------------------------------------ [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

« previous php.bugs (#227740) next »