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

From: Date: Fri, 30 Oct 2020 10:57:53 +0000
Subject: Bug #79751 [Com]: "VirtualProtect() failed" entries in apache error.log
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-230032@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 Comment by: phpdev at ehrhardt dot nl Reported by: buschmann at nidsa dot net Summary: "VirtualProtect() failed" entries in apache error.log Status: Open Type: Bug Package: opcache Operating System: Windows Server 2019 64bit PHP Version: 8.0.0alpha1 Block user comment: N Private report: N New Comment: @Christoph or @Nikita Is there any change Opcache JIT will be supported on Windows anywhere in the near future? Previous Comments: ------------------------------------------------------------------------ [2020-10-30 08:50:21] dominique at ottello dot net Same errors on Windows with PHP 8.0.0 beta1 to RC3 Apache used as a service and PHP as an Apache module. opcache is loaded in php.ini by: [opcache] zend_extension="E:/wamp64/bin/php/php8.0.0rc3/ext/php_opcache.dll" Errors occur when using all default opcache directives as they are in the php.ini-development or php.ini-production templates. ------------------------------------------------------------------------ [2020-06-30 21:44:31] cmb@php.net > I would like to test JIT with huge pages on on Windows. I just learned that these are not supported by PHP on Windows. ------------------------------------------------------------------------ [2020-06-30 15:01:41] buschmann at nidsa dot net When it helps, I can show below all lines from my active php.ini containing "opcache.": zend_extension = N:\Apache\php8\ext\php_opcache.dll ;zend_extension = N:\Apache\php8\php_opcache.dll ;opcache.enable=0 opcache.enable=1 ;opcache.enable_cli=0 ;opcache.memory_consumption=64 opcache.memory_consumption=32 ;opcache.interned_strings_buffer=4 opcache.interned_strings_buffer=4 ;opcache.max_accelerated_files=2000 opcache.max_accelerated_files=980 ;opcache.max_wasted_percentage=5 ;opcache.use_cwd=1 ;opcache.validate_timestamps=1 ;opcache.revalidate_freq=2 opcache.revalidate_freq=60 ;opcache.revalidate_path=0 ;opcache.save_comments=1 opcache.save_comments=0 ;opcache.load_comments=1 opcache.load_comments=0 ;opcache.fast_shutdown=0 ;opcache.fast_shutdown=0 ;opcache.enable_file_override=0 ;opcache.optimization_level=0xffffffff ;opcache.inherited_hack=1 ;opcache.dups_fix=0 ;opcache.blacklist_filename= ;opcache.max_file_size=0 ;opcache.consistency_checks=0 ;opcache.force_restart_timeout=180 ;opcache.error_log= ;opcache.log_verbosity_level=1 ;opcache.preferred_memory_model= ;opcache.protect_memory=0 ;opcache.protect_memory=0 opcache.huge_code_pages=1 ; http://php.net/opcache.preload ;opcache.preload= ;;opcache.preload="N:\Apache\Apache24\conf\local\php_preload.php" opcache.jit_buffer_size=16M This seems to set/change only the following settings: [opcache] opcache.enable=1 opcache.memory_consumption=32 opcache.interned_strings_buffer=4 opcache.max_accelerated_files=980 opcache.revalidate_freq=60 opcache.save_comments=0 opcache.load_comments=0 opcache.huge_code_pages=1 opcache.jit_buffer_size=16M Perhaps this may help to explain where the defaults JIT=ON and jit_buffer_size=0 stem from. BTW: Do you have an idea with php_info and opcache.huge_code_pages not showing? In my php.ini I left it on but never confirmed that it worked under windows (it requires OS support, but how exactly ?!?!) I have managed to activate and verify huge pages usage for Postgres shared buffers on Windows 64bit (by pinning memory with gpedit.msc). I would like to test JIT with huge pages on on Windows. Thanks! ------------------------------------------------------------------------ [2020-06-30 14:32:06] cmb@php.net > When setting opcache.jit_buffer_size=16M and a fresh start the > error messages in error.log disappear !! Good news! > […], so maybe JIT=On and opcache.jit_buffer_size=0 don't play > well together... If opcache.jit_buffer_size=0, JIT should be disabled. I have no idea why it has been enabled in your case. > BUT in the documentation the flag should be marked as boolean, > not string: Fixed. Thanks! ------------------------------------------------------------------------ [2020-06-30 13:18:21] buschmann at nidsa dot net When setting opcache.jit_buffer_size=16M and a fresh start the error messages in error.log disappear !! But I have only used the defaults, so maybe JIT=On and opcache.jit_buffer_size=0 don't play well together... BUT: I have also found, that not all opcache config parameters are reported by phpinfo: In my config file I had set opcache.huge_code_pages=1 which is not reported as seen below. BTW: seems OK with huge_pages=1 in a second test, BUT in the documentation the flag should be marked as boolean, not string: (from online manual) opcache.huge_code_pages string Here are the opcache data from phpinfo after fresh start, scripts reloads and some test with the application, which seems working OK (huge pages disabled for now!): Opcode Caching Up and Running Optimization Enabled SHM Cache Enabled File Cache Disabled JIT On Startup OK Shared memory model win32 Cache hits 47 Cache misses 299 Used memory 22870456 Free memory 10683976 Wasted memory 0 Interned Strings Used memory 2597400 Interned Strings Free memory 547856 Cached scripts 299 Cached keys 538 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 16M 16M 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 ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at https://bugs.php.net/bug.php?id=79751 -- Edit this bug report at https://bugs.php.net/bug.php?id=79751&edit=1

« previous php.bugs (#230032) next »