Edit report at https://bugs.php.net/bug.php?id=80175&edit=1
ID: 80175
Updated by: nikic@php.net
Reported by: celestinoxp at hotmail dot com
Summary: PHP8 RC1 - JIT Buffer not working
Status: Closed
Type: Bug
Package: JIT
Operating System: Windows 10
PHP Version: 8.0.0rc2
Assigned To: cmb
Block user comment: N
Private report: N
New Comment:
There is a chance that the remaining issue is related to bug #80243, which is fixed now as well. It
doesn't actually have to do with JIT, but seems to manifest as a crash there. (This only
affects the case where opcache is loaded using zend_extension=opcache. If it was loaded using
zend_extension=php_opcache.dll, it should not be related.)
Previous Comments:
------------------------------------------------------------------------
[2020-10-21 09:12:34] cmb@php.net
Well, we need a backtrace to proceed with this, but I just noticed
that the instruction to generate a backtrace on Windows[1] are
terribly outdated. I have rewritten that section, and with this
technique you should be able to get a backtrace even when Apache
crashes right after start. That backtrace might not be sufficient
for JIT issues, but please give it try.
Anyhow, I checked once again with RC1 and RC2, and while the
former crashes for me, the latter does not, so I'm closing this
ticket, since the respective fix obviously addressed a bug.
Please open a new ticket for your issue. Thanks. :)
[1] <https://bugs.php.net/bugs-generating-backtrace-win32.php>
------------------------------------------------------------------------
[2020-10-20 12:08:20] celestinoxp at hotmail dot com
Hi, jit_buffer_size still not working. I changed php.ini configuration to this:
opcache.enable=1
opcache.enable_cli=1
opcache.jit_buffer_size = 32M
opcache.jit = 1205
all other lines are commented with ; so values are default.
only when add ; in opcache.jit_buffer_size = 32M, php starts...
I'm frustrated because I don't know where the error is ... and the php log is blank ...
the apache log just says the following:
[Wed Oct 21 13: 06: 57.709383 2020] [core: warn] [pid 624: tid 636] AH00098: pid file C:
/xampp/apache/logs/httpd.pid overwritten - Unclean shutdown of previous Apache run?
------------------------------------------------------------------------
[2020-10-20 10:46:32] cmb@php.net
celestinoxp, could you please try with a minimal php.ini first.
Particularly, omit the following (i.e. leave those settings at
their default):
opcache.protect_memory = 0
opcache.optimization_level = -1
Would that solve the crash during startup?
------------------------------------------------------------------------
[2020-10-20 09:05:42] celestinoxp at hotmail dot com
PHP8 RC2 - JIT Buffer still not working.
Anyone can confirm?
------------------------------------------------------------------------
[2020-10-11 21:05:02] celestinoxp at hotmail dot com
I forget say im using xampp, but i changed PHP-Module setup to work with php8,
ex:
LoadFile "C:/xampp/php/php8ts.dll"
LoadFile "C:/xampp/php/libpq.dll"
LoadModule php_module "C:/xampp/php/php8apache2_4.dll"
LoadFile "C:/xampp/php/libsqlite3.dll"
and replace all "php7_module" --> "php_module".
And in php.ini
[opcache]
; Determines if Zend OPCache is enabled
opcache.enable=1
; Determines if Zend OPCache is enabled for the CLI version of PHP
opcache.enable_cli=1
; The OPcache shared memory storage size.
opcache.memory_consumption=128
; The amount of memory for interned strings in Mbytes.
opcache.interned_strings_buffer=8
; The maximum number of keys (scripts) in the OPcache hash table.
; Only numbers between 200 and 1000000 are allowed.
opcache.max_accelerated_files=50000
; The maximum percentage of "wasted" memory until a restart is scheduled.
;opcache.max_wasted_percentage=5
; When this directive is enabled, the OPcache appends the current working
; directory to the script key, thus eliminating possible collisions between
; files with the same name (basename). Disabling the directive improves
; performance, but may break existing applications.
;opcache.use_cwd=1
; When disabled, you must reset the OPcache manually or restart the
; webserver for changes to the filesystem to take effect.
;opcache.validate_timestamps=1
; How often (in seconds) to check file timestamps for changes to the shared
; memory storage allocation. ("1" means validate once per second, but only
; once per request. "0" means always validate)
opcache.revalidate_freq=60
; Enables or disables file search in include_path optimization
;opcache.revalidate_path=0
; If disabled, all PHPDoc comments are dropped from the code to reduce the
; size of the optimized code.
;opcache.save_comments=1
; Allow file existence override (file_exists, etc.) performance feature.
;opcache.enable_file_override=0
; A bitmask, where each bit enables or disables the appropriate OPcache
; passes
;opcache.optimization_level = 0x7FFFBFFF
opcache.optimization_level = -1
;opcache.dups_fix=0
; The location of the OPcache blacklist file (wildcards allowed).
; Each OPcache blacklist file is a text file that holds the names of files
; that should not be accelerated. The file format is to add each filename
; to a new line. The filename may be a full path or just a file prefix
; (i.e., /var/www/x blacklists all the files and directories in /var/www
; that start with 'x'). Line starting with a ; are ignored (comments).
;opcache.blacklist_filename=
; Allows exclusion of large files from being cached. By default all files
; are cached.
;opcache.max_file_size=0
; Check the cache checksum each N requests.
; The default value of "0" means that the checks are disabled.
;opcache.consistency_checks=0
; How long to wait (in seconds) for a scheduled restart to begin if the cache
; is not being accessed.
;opcache.force_restart_timeout=180
; OPcache error_log file name. Empty string assumes "stderr".
;opcache.error_log=
; All OPcache errors go to the Web server log.
; By default, only fatal errors (level 0) or errors (level 1) are logged.
; You can also enable warnings (level 2), info messages (level 3) or
; debug messages (level 4).
opcache.log_verbosity_level=2
; Preferred Shared Memory back-end. Leave empty and let the system decide.
;opcache.preferred_memory_model=
; Protect the shared memory from unexpected writing during script execution.
; Useful for internal debugging only.
opcache.protect_memory = 0
; Allows calling OPcache API functions only from PHP scripts which path is
; started from specified string. The default "" means no restriction
;opcache.restrict_api=
; Mapping base of shared memory segments (for Windows only). All the PHP
; processes have to map shared memory into the same address space. This
; directive allows to manually fix the "Unable to reattach to base address"
; errors.
;opcache.mmap_base=
; Facilitates multiple OPcache instances per user (for Windows only). All PHP
; processes with the same cache ID and user share an OPcache instance.
;opcache.cache_id=
; Enables and sets the second level cache directory.
; It should improve performance when SHM memory is full, at server restart or
; SHM reset. The default "" disables file based caching.
;opcache.file_cache=
; Enables or disables opcode caching in shared memory.
;opcache.file_cache_only=0
; Enables or disables checksum validation when script loaded from file cache.
;opcache.file_cache_consistency_checks=1
; Implies opcache.file_cache_only=1 for a certain process that failed to
; reattach to the shared memory (for Windows only). Explicitly enabled file
; cache is required.
;opcache.file_cache_fallback=1
; Enables or disables copying of PHP code (text segment) into HUGE PAGES.
; This should improve performance, but requires appropriate OS configuration.
;opcache.huge_code_pages=0
; Validate cached file permissions.
;opcache.validate_permission=0
; Prevent name collisions in chroot'ed environment.
;opcache.validate_root=0
; If specified, it produces opcode dumps for debugging different stages of
; optimizations.
;opcache.opt_debug_level=0
; Specifies a PHP script that is going to be compiled and executed at server
; start-up.
; http://php.net/opcache.preload
;opcache.preload=
; Preloading code as root is not allowed for security reasons. This directive
; facilitates to let the preloading to be run as another user.
; http://php.net/opcache.preload_user
;opcache.preload_user=
; Prevents caching files that are less than this number of seconds old. It
; protects from caching of incompletely updated files. In case all file updates
; on your site are atomic, you may increase performance by setting it to "0".
;opcache.file_update_protection=2
; Absolute path used to store shared lockfiles (for *nix only).
;opcache.lockfile_path=/tmp
opcache.jit=1205
;opcache.jit_buffer_size=16M
------------------------------------------------------------------------
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=80175
--
Edit this bug report at https://bugs.php.net/bug.php?id=80175&edit=1