You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
primitives seem to be passed via reference instead of by value under some conditions when JIT is enabled on windows #11917
I get the expected output when I set opcache.enable to 0 in the php.ini but not when it's set to 1.
Note that sometimes I need to run the PHP file twice before the issue starts appearing. Also, this appears to only be a problem on Windows as I was unable to duplicate the issue with https://github.com/phpseclib/docker-php/tree/8.2jit
changed the title [-]primitives seem to be passed via reference instead of by value under some conditions when opcache is enabled[/-][+]primitives seem to be passed via reference instead of by value under some conditions when opcache is enabled on windows[/+]on Aug 9, 2023
changed the title [-]primitives seem to be passed via reference instead of by value under some conditions when opcache is enabled on windows[/-][+]primitives seem to be passed via reference instead of by value under some conditions when JIT is enabled on windows[/+]on Aug 9, 2023
@dstogov I can only reproduce it on Windows, not Linux. Reproduces with danog@d788e4f reliably. Bug only occurs when using tracing JIT with optimization level >= 2. Register allocation settings in JIT don't have an influence.
Activity
[-]primitives seem to be passed via reference instead of by value under some conditions when opcache is enabled[/-][+]primitives seem to be passed via reference instead of by value under some conditions when opcache is enabled on windows[/+]ndossche commentedon Aug 9, 2023
What happens if you enable opcache and only disable JIT? I suspect the real issue might be in the JIT instead of opcache.
[-]primitives seem to be passed via reference instead of by value under some conditions when opcache is enabled on windows[/-][+]primitives seem to be passed via reference instead of by value under some conditions when JIT is enabled on windows[/+]terrafrost commentedon Aug 9, 2023
@nielsdos - good call. The following php.ini does not demonstrate the problem:
I've updated my post accordingly.
gmutinel commentedon Sep 19, 2023
Same thing with 8.1.23 on Win11, had to force jit off with
parallels999 commentedon Sep 19, 2023
Me too, on Win 10 with 8.2
Add test for php#11917
dstogov commentedon Oct 16, 2023
I can't reproduce the problem on 8.1.26-dev
@nielsdos can you reproduce?
danog commentedon Oct 16, 2023
@dstogov the issue is still present on windows after rebasing on the latest PHP-8.1: https://github.com/php/php-src/actions/runs/6535551162/job/17745266902?pr=12269
ndossche commentedon Oct 16, 2023
@dstogov I can only reproduce it on Windows, not Linux. Reproduces with danog@d788e4f reliably. Bug only occurs when using tracing JIT with optimization level >= 2. Register allocation settings in JIT don't have an influence.
Fixed phpGH-11917: primitives seem to be passed via reference instead…
Fixed GH-11917: primitives seem to be passed via reference instead of…
Merge branch 'PHP-8.1' into PHP-8.2
Merge branch 'PHP-8.2' into PHP-8.3
Merge branch 'PHP-8.3'
Fixed phpGH-11917: primitives seem to be passed via reference instead…