Dmitry Stogov
c010e8fb02
Merge branch 'PHP-8.2'
...
* PHP-8.2:
Fix GH-10271: Incorrect arithmetic calculations when using JIT
2023-01-16 14:52:14 +03:00
Dmitry Stogov
757e269b89
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
Fix GH-10271: Incorrect arithmetic calculations when using JIT
2023-01-16 14:51:42 +03:00
Dmitry Stogov
42eed7bb4e
Fix GH-10271: Incorrect arithmetic calculations when using JIT
2023-01-16 14:51:26 +03:00
Christoph M. Becker
c8955c078a
Revert GH-10220
...
Cf. <https://github.com/php/php-src/pull/10220#issuecomment-1383739816 >.
This reverts commit ecc880f491 .
This reverts commit 588a07f737 .
This reverts commit f377e15751 .
This reverts commit b4ba16fe18 .
This reverts commit 694ec1deea .
This reverts commit 6b34de8eba .
This reverts commit aa1cd02a43 .
This reverts commit 308fd311ea .
This reverts commit 16203b53e1 .
This reverts commit 738fb5ca54 .
This reverts commit 9fdbefacd3 .
This reverts commit cd4a7c1d90 .
This reverts commit 928685eba2 .
This reverts commit 01e5ffc85c .
2023-01-16 12:27:33 +01:00
Christoph M. Becker
2f4973fd88
Revert GH-10279
...
Cf. <https://github.com/php/php-src/pull/10220#issuecomment-1383739816 >.
This reverts commit 45a128c9de .
This reverts commit 1eb71c3f15 .
This reverts commit 492523a779 .
This reverts commit c7a4633891 .
This reverts commit 308adb915c .
This reverts commit cd27d5e07f .
This reverts commit c5933409b4 .
This reverts commit 46371f4eb3 .
This reverts commit 623e2e9fc6 .
This reverts commit e7434c1247 .
This reverts commit d28d323ca2 .
This reverts commit 1a067b84ee .
This reverts commit a55c0c5fc3 .
This reverts commit b5aeb3a4d4 .
This reverts commit f061a035e4 .
This reverts commit b088575119 .
This reverts commit b1d48774a7 .
This reverts commit 94f9a20ce6 .
This reverts commit 4831e48708 .
This reverts commit cd985de190 .
This reverts commit 9521d21681 .
This reverts commit d6136151e9 .
2023-01-16 12:25:59 +01:00
Christoph M. Becker
bf1cfc0753
Revert GH-10300
...
Cf. <https://github.com/php/php-src/pull/10220#issuecomment-1383739816 >.
This reverts commit 68ada76f9a .
his reverts commit 45384c6e20 .
This reverts commit ef7fbfd710 .
This reverts commit 9b9ea0d7c6 .
This reverts commit f15747c26b .
This reverts commit e883ba93c4 .
This reverts commit 7e87551c37 .
This reverts commit 921274d2b8 .
This reverts commit fc1f528e5e .
This reverts commit 0961715cda .
This reverts commit a93f264526 .
This reverts commit 72dd94e1c6 .
This reverts commit 29b2dc8964 .
This reverts commit 05c7653bba .
This reverts commit 5190e5c260 .
This reverts commit 6b55bf228c .
This reverts commit 184b4a12d3 .
This reverts commit 4c31b7888a .
This reverts commit d44e9680f0 .
This reverts commit 4069a5c43f .
2023-01-16 12:22:54 +01:00
Max Kellermann
d44e9680f0
ext/opcache/ZendAccelerator.h: add missing include for "INIT_FUNC_ARGS"
2023-01-15 15:07:58 +00:00
Max Kellermann
061fcdb0a5
ext/opcache: use C11 atomics for "restart_in" ( #10276 )
...
Cheaper than fcntl(F_SETLK). The same is done already on Windows, so
if that works, why not use it everywhere? (Of course, only if the
compiler supports this C11 feature.)
As a bonus, the code in this commit also works on C++ via C++11
std::atomic, just in case somebody adds some C++ code to the opcache
extension one day.
2023-01-13 00:02:35 +01:00
George Peter Banyard
410e78651a
Merge branch 'PHP-8.2'
...
* PHP-8.2:
Use absolute paths in OPCache tests when calling `opcache_compile_file()`
2023-01-12 15:48:13 +00:00
George Peter Banyard
31fd34aa4c
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
Use absolute paths in OPCache tests when calling `opcache_compile_file()`
2023-01-12 15:48:01 +00:00
Thomas Gerbet
1f715f5658
Use absolute paths in OPCache tests when calling opcache_compile_file()
...
This make sure the tests do not fail if they are not run from the
repository root.
Closes GH-10266
Signed-off-by: George Peter Banyard <girgias@php.net >
2023-01-12 15:47:24 +00:00
Max Kellermann
24b311bdd7
ext/opcache/zend_shared_alloc: rename _register_xlat_entry() params
...
The name "new" happens to be a C++ keyword, which was the my reason to
rethink those names.
The "xlat_table" is not only used to translate pointers for persisting
scripts to shared memory, but is also used to annoate pointers
(e.g. by the JIT to associate an op_array with its jit_extension).
The names "old" and "new" aren't good for that; often, there's nothing
"old" or "new" about them. It's actually a generic lookup table, and
"old" shall be named "key" (which it is called internally already),
and "new" is renamed to simply "value".
2023-01-12 15:14:05 +00:00
Max Kellermann
b47bfd698d
ext/opcache: C++ compatibility
...
Just in case somebody includes those headers from C++ code. The same
already exists in other opcache headers.
2023-01-12 15:14:05 +00:00
Max Kellermann
623e2e9fc6
ext/opcache/zend_accelerator_hash: include cleanup
2023-01-12 15:12:45 +00:00
Max Kellermann
308fd311ea
ext/{standard,json,random,...}: add missing includes
2023-01-10 14:19:03 +00:00
Dmitry Stogov
ce861373b9
Merge branch 'PHP-8.2'
...
* PHP-8.2:
Fix incorrect optimization of ASSIGN_OP may lead to incorrect result (sub assign -> pre dec conversion for null values)
2023-01-09 13:53:35 +03:00
Dmitry Stogov
9abc2108fa
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
Fix incorrect optimization of ASSIGN_OP may lead to incorrect result (sub assign -> pre dec conversion for null values)
2023-01-09 13:53:19 +03:00
Dmitry Stogov
4d4a53beee
Fix incorrect optimization of ASSIGN_OP may lead to incorrect result (sub assign -> pre dec conversion for null values)
2023-01-09 13:51:57 +03:00
Dmitry Stogov
f8b9312709
Merge branch 'PHP-8.2'
...
* PHP-8.2:
ext/opcache/jit/zend_jit_trace: fix memory leak in _compile_root_trace() (#10146 )
2023-01-09 09:51:12 +03:00
Dmitry Stogov
d13b3b6aa7
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
ext/opcache/jit/zend_jit_trace: fix memory leak in _compile_root_trace() (#10146 )
2023-01-09 09:51:00 +03:00
Max Kellermann
bcc5d268f6
ext/opcache/jit/zend_jit_trace: fix memory leak in _compile_root_trace() ( #10146 )
...
A copy of this piece of code exists in zend_jit_compile_side_trace(),
but there, the leak bug does not exist.
This bug exists since both copies of this piece of code were added in
commit 4bf2d09ede
2023-01-09 09:50:30 +03:00
Max Kellermann
efd5ecb0f2
Zend/Optimizer/zend_inference: make several pointers const
...
This allows removing several deconst casts from the JIT.
2023-01-04 12:59:16 +00:00
Max Kellermann
10d43c40dd
ext/opcache/zend_shared_alloc: change "locked" check to assertion
...
Calling zend_shared_alloc() without holding the lock is always a bug,
not a fatal runtime error.
2023-01-02 15:49:04 +00:00
Max Kellermann
e1a25ff2ed
ext/opcache/zend_shared_alloc: add assertions on "locked" flag
...
Let the PHP process crash if a bug causes incorrect locking calls.
2023-01-02 15:49:04 +00:00
David Carlier
383053c4aa
Merge branch 'PHP-8.2'
2022-12-29 12:22:21 +00:00
David Carlier
07bf42df41
Merge branch 'PHP-8.1' into PHP-8.2
2022-12-29 12:21:13 +00:00
Max Kellermann
e217138b40
ext/opcache/jit/zend_jit_trace: add missing lock for EXIT_INVALIDATE
...
Commit 6c25413183 added the flag ZEND_JIT_EXIT_INVALIDATE which
resets the trace handlers in zend_jit_trace_exit(), but forgot to
lock the shared memory section.
This could cause another worker process who still saw the
ZEND_JIT_TRACE_JITED flag to schedule ZEND_JIT_TRACE_STOP_LINK, but
when it arrived at the ZEND_JIT_DEBUG_TRACE_STOP, the handler was
already reverted by the first worker process and thus
zend_jit_find_trace() fails.
This in turn generated a bogus jump offset in the JITed code, crashing
the PHP process.
2022-12-29 12:20:56 +00:00
Dmitry Stogov
ca5f668f7c
Added missed return
2022-12-29 12:40:46 +03:00
David Carlier
f7a28c4145
Merge branch 'PHP-8.2'
2022-12-26 21:19:23 +00:00
David Carlier
381d0ddc20
Merge branch 'PHP-8.1' into PHP-8.2
2022-12-26 21:18:31 +00:00
Max Kellermann
b26b758952
ext/opcache/jit: handle zend_jit_find_trace() failures
...
Commit 6c25413 added the flag ZEND_JIT_EXIT_INVALIDATE which resets
the trace handlers in zend_jit_trace_exit(), but forgot to consider
that on ZEND_JIT_TRACE_STOP_LINK, this changed handler gets passed to
zend_jit_find_trace(), causing it to fail, either by returning 0
(results in bogus data) or by aborting due to ZEND_UNREACHABLE(). In
either case, this crashes the PHP process.
I'm not quite sure how to fix this multi-threading problem properly;
my suggestion is to just fail the zend_jit_trace() call. After all,
the whole ZEND_JIT_EXIT_INVALIDATE fix was about reloading modified
scripts, so there's probably no point in this pending zend_jit_trace()
call.
2022-12-26 21:17:19 +00:00
Dmitry Stogov
f922597b51
Merge branch 'PHP-8.2'
...
* PHP-8.2:
Fix memory leak because of incorrect optimization
2022-12-26 13:22:02 +03:00
Dmitry Stogov
0464524292
Fix memory leak because of incorrect optimization
...
Fixes oss-fuzz #54488
2022-12-26 13:20:55 +03:00
Ilija Tovilo
292f69b345
Merge branch 'PHP-8.2'
...
* PHP-8.2:
Add a regression test for auto_globals_jit=0 with preloading on
2022-12-22 17:42:37 +01:00
Ilija Tovilo
db48f49888
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
Add a regression test for auto_globals_jit=0 with preloading on
2022-12-22 17:42:27 +01:00
Niels Dossche
bbad29b9c1
Add a regression test for auto_globals_jit=0 with preloading on
2022-12-22 17:42:11 +01:00
Ilija Tovilo
08fb7f93a1
Merge branch 'PHP-8.2'
...
* PHP-8.2:
Initialize ping_auto_globals_mask to prevent undefined behaviour
2022-12-22 15:00:14 +01:00
Ilija Tovilo
c714e626c8
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
Initialize ping_auto_globals_mask to prevent undefined behaviour
2022-12-22 15:00:00 +01:00
Niels Dossche
c4487b7a12
Initialize ping_auto_globals_mask to prevent undefined behaviour
...
Closes GH-10121
2022-12-22 14:59:24 +01:00
Arnaud Le Blanc
c46a0ce198
Merge branch 'PHP-8.2'
...
* PHP-8.2:
[ci skip] NEWS
[ci skip] NEWS
ext/opcache/jit/zend_jit: fix inverted bailout value in zend_runtime_jit() (#10144 )
2022-12-21 14:56:26 +01:00
Arnaud Le Blanc
f1c345394b
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
[ci skip] NEWS
ext/opcache/jit/zend_jit: fix inverted bailout value in zend_runtime_jit() (#10144 )
2022-12-21 14:55:36 +01:00
Max Kellermann
d3a6eedf4a
ext/opcache/jit/zend_jit: fix inverted bailout value in zend_runtime_jit() ( #10144 )
...
In the "catch" block, do_bailout must be set to true, not false, or
else zend_bailout() never gets called.
2022-12-21 14:53:21 +01:00
Arnaud Le Blanc
a11c8a3039
Limit stack size ( #9104 )
2022-12-16 17:44:26 +01:00
Jorg Adam Sowa
77ee92a50c
Remove unnecessary usage of CONST_CS
...
Closes GH-9685.
2022-11-28 17:12:07 +01:00
Arnaud Le Blanc
1cba98ebe9
Merge branch 'PHP-8.2'
...
* PHP-8.2:
[ci skip] NEWS
[ci skip] NEWS
Do not resolve constants on non-linked class during preloading (#9975 )
2022-11-25 14:37:55 +01:00
Arnaud Le Blanc
5563535e97
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
[ci skip] NEWS
Do not resolve constants on non-linked class during preloading (#9975 )
2022-11-25 14:11:52 +01:00
Arnaud Le Blanc
91b3b58f71
Do not resolve constants on non-linked class during preloading ( #9975 )
...
Fixes GH-9968
2022-11-25 14:02:45 +01:00
Dmitry Stogov
ff85649431
Merge branch 'PHP-8.2'
...
* PHP-8.2:
Fix a memory leak in tracig JIT when the same closure is called through Closure::call() and natively.
2022-11-22 12:29:36 +03:00
Dmitry Stogov
45cb3f917a
Fix a memory leak in tracig JIT when the same closure is called through Closure::call() and natively.
...
Closure::call() makes a temporary copy of original closure function, modifies its
scope, resets ZEND_ACC_CLOSURE flag and call it through zend_call_function().
As result the same function may be called with and without
ZEND_ACC_CLOSURE flag, that confuses JIT and may lead to memory leak or
even worse memory errors.
The patch allocates "fake" closure object and keep ZEND_ACC_CLOSURE flag
to always behave in the same way.
2022-11-21 17:41:16 +03:00
David CARLIER
3660bc31de
opcache fixing w/x pages creation on freebsd 13.1 and above.
...
By default, the system allows these but admin can disable them system wide.
However the procctl api permits to control it per process.
Closes GH-9896.
2022-11-18 19:22:00 +00:00