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
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
0464524292
Fix memory leak because of incorrect optimization
...
Fixes oss-fuzz #54488
2022-12-26 13:20:55 +03: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
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
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
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
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
Dmitry Stogov
6cbc91151a
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
Fix memory leak
2022-11-14 12:35:49 +03:00
Dmitry Stogov
a8bd342397
Fix memory leak
...
Fizes oss-fuzz #53143
2022-11-14 12:35:09 +03:00
Bob Weinand
4052bbf0e3
Fix opcache preload with observers enabled
...
Signed-off-by: Bob Weinand <bobwei9@hotmail.com >
2022-11-09 16:36:28 +01:00
Dmitry Stogov
de4b502fef
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
Fix memory leak
2022-11-07 11:08:54 +03:00
Dmitry Stogov
f31f464cec
Fix memory leak
...
Fixes oss-fuzz #52999
2022-11-07 11:07:58 +03:00
Bob Weinand
b30448f48f
Fix observing inherited internal functions
...
Fixes GH-9871
2022-11-02 15:33:04 +01:00
Ilija Tovilo
537a104f14
Fix user path in test
2022-10-25 13:03:55 +02:00
Dmitry Stogov
6567d49726
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
opcache: fix syntax error introduced in 261a08af65 (#9821 )
2022-10-24 20:43:18 +03:00
Kévin Dunglas
af75eaf9bf
opcache: fix syntax error introduced in 261a08af65 ( #9821 )
2022-10-24 20:42:55 +03:00
Dmitry Stogov
e0d9a29958
Fixed test
2022-10-24 12:10:08 +03:00
Dmitry Stogov
17706c3e88
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
JIT: Fix incorrect EX(opline) override
2022-10-24 12:03:36 +03:00
Dmitry Stogov
261a08af65
JIT: Fix incorrect EX(opline) override
...
Fixes oss-fuzz #52674
2022-10-24 12:02:28 +03:00
Bob Weinand
5e9654be03
Fixed missing run_time_cache for preloaded arena allocated internal functions
...
This effectively affected all preloaded enums, leading them to possibly share a run_time_cache__ptr slot with unrelated functions. (Given that these were not set again.)
This bugfix is not accompanied by a test, due to how hard to trigger it was and getting a crash also depends a lot on the precise alignment of whether a cache entry accidentally overlapping has been used etc.
2022-10-22 22:07:41 +00:00
Kévin Dunglas
7acb7703e2
opcache: add FrankenPHP to the allow list
2022-10-20 15:08:03 +02:00
Dmitry Stogov
eecbb60db6
Fix memory leak
...
Fixes oss-fuzz #52479
2022-10-17 15:08:21 +03:00
Dmitry Stogov
d282345e11
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
Reset JIT for dynamic functions on opcache restrart
2022-10-17 11:27:12 +03:00
Dmitry Stogov
61e563ca40
Reset JIT for dynamic functions on opcache restrart
2022-10-17 11:26:30 +03:00
Dmitry Stogov
5e10aa4e5f
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
Discard disasm symbols on opcache restart
2022-10-17 11:24:08 +03:00
Dmitry Stogov
3e076ddf06
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
Discard disasm symbols on opcache restart
2022-10-17 11:24:00 +03:00
Dmitry Stogov
cefb228e15
Discard disasm symbols on opcache restart
2022-10-17 11:22:59 +03:00
Dmitry Stogov
46fcf33c7b
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
Fix crashes after opcache restart
2022-10-11 14:23:59 +03:00
Dmitry Stogov
c5364b851a
Fix crashes after opcache restart
2022-10-11 14:23:12 +03:00
Dmitry Stogov
5cfec7ee40
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
Fix typo
2022-10-05 21:39:46 +03:00
Dmitry Stogov
e81b6bf018
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
Fix typo
2022-10-05 21:39:37 +03:00
Dmitry Stogov
072dc3c857
Fix typo
2022-10-05 21:39:16 +03:00
Dmitry Stogov
4164d2d567
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
Fix register allocation (missing store)
2022-10-03 17:09:07 +03:00
Dmitry Stogov
5877b84056
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
Fix register allocation (missing store)
2022-10-03 17:09:01 +03:00
Dmitry Stogov
ed652a514f
Fix register allocation (missing store)
...
This fixes oss-fuzz #52022
2022-10-03 17:08:11 +03:00
Dmitry Stogov
ec5882e1c3
Fix GH-9626: JIT type assertion failure in Symfony community build
2022-10-03 14:58:37 +03:00
Dmitry Stogov
3cce4964d1
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
Fix abstract trace consisency for FE_FETCH instruction
2022-10-03 14:51:32 +03:00
Dmitry Stogov
da28a6b497
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
Fix abstract trace consisency for FE_FETCH instruction
2022-10-03 14:51:21 +03:00
Dmitry Stogov
5ca4113386
Fix abstract trace consisency for FE_FETCH instruction
2022-10-03 14:48:03 +03:00
Dmitry Stogov
efcffc9d5f
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
Force exit to VM
2022-09-29 15:28:23 +03:00
Dmitry Stogov
aa179bf3dd
Force exit to VM
2022-09-29 15:27:38 +03:00
Ilija Tovilo
980c2edbe2
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
Fix invalid label before }
2022-09-27 23:28:07 +02:00
Ilija Tovilo
0aa5adb143
Fix invalid label before }
...
Will be fixed in C23 :)
Closes GH-9624
2022-09-27 23:27:17 +02:00