History log of /PHP-8.2/Zend/zend_observer.c (Results 1 – 25 of 28)
Revision Date Author Comments
# bf1cfc07 16-Jan-2023 Christoph M. Becker

Revert GH-10300

Cf. <https://github.com/php/php-src/pull/10220#issuecomment-1383739816>.

This reverts commit 68ada76f9a659745f572539b72afa06fa75a866f.
his reverts commit 45384c6

Revert GH-10300

Cf. <https://github.com/php/php-src/pull/10220#issuecomment-1383739816>.

This reverts commit 68ada76f9a659745f572539b72afa06fa75a866f.
his reverts commit 45384c6e201eda9963e2fcc18946a9446230a2d6.
This reverts commit ef7fbfd71025f034b0bfcb413efd181ce798fc1b.
This reverts commit 9b9ea0d7c696f2990a159b2a2dafbc04547dc10f.
This reverts commit f15747c26be4a2330dc0cf3ea442f53f30f84cac.
This reverts commit e883ba93c40827fafd7868517eb48e04569f76ab.
This reverts commit 7e87551c3775d26e20b06a4032a00053db6452cc.
This reverts commit 921274d2b8966641a00c0a767ae40ba7187bdffc.
This reverts commit fc1f528e5e3ee45ab17ae8dcfad6a6422ff2002d.
This reverts commit 0961715cdafb5d39124667ff94f3b56453ce71f1.
This reverts commit a93f264526e1cdade71d887800c1c448c411bfdc.
This reverts commit 72dd94e1c6d29203b8f6473317f626e6d6d6fbdc.
This reverts commit 29b2dc89645e741f91cc920964432dccd2aaef14.
This reverts commit 05c7653bba7571852f5ce6fc0d220a1a829bc4c0.
This reverts commit 5190e5c260ee05e3f3c3d1168263a1a6637441d0.
This reverts commit 6b55bf228cb2da8705737d414f394950a92d8aae.
This reverts commit 184b4a12d3215d105720d005b31e365249e2eb21.
This reverts commit 4c31b7888a561e920fd3889ba8d99368f3c2d9e6.
This reverts commit d44e9680f080b4918cfed268b96f90ea35975617.
This reverts commit 4069a5c43f419d76e1254c8e49b4cad9968a408f.

show more ...


# 921274d2 04-Jan-2023 Max Kellermann

Zend/zend_observer: include cleanup


# 709540cc 09-Jun-2023 Bob Weinand

Fix add/remove observer API with multiple observers installed

Depending on the order in which observers were installed, some observers might have been executed twice after removal of another

Fix add/remove observer API with multiple observers installed

Depending on the order in which observers were installed, some observers might have been executed twice after removal of another observer. Also, adding an observer could produce a bogus pointer.

show more ...


# 8dabbda8 24-Oct-2022 Florian Sowade

Don’t reset func in zend_closure_internal_handler

The pointer is used in _zend_observe_fcall_begin().


# 396b2aab 23-Aug-2022 Bob Weinand

Wrap observer notify functions into inlined enabled checks

Signed-off-by: Bob Weinand <bobwei9@hotmail.com>


# bf427b73 11-Jul-2022 Bob Weinand

Add an API to observe functions and classes being linked

To observe when the functions and classes start being officially available to the user

Signed-off-by: Bob Weinand <bobwei9@h

Add an API to observe functions and classes being linked

To observe when the functions and classes start being officially available to the user

Signed-off-by: Bob Weinand <bobwei9@hotmail.com>

show more ...


# da94baf3 29-Jul-2022 Bob Weinand

Add proper handling to observe functions in fibers

The current_observed_frame is carried along the fiber context and thus always correct now.

Signed-off-by: Bob Weinand <bobwei9@hot

Add proper handling to observe functions in fibers

The current_observed_frame is carried along the fiber context and thus always correct now.

Signed-off-by: Bob Weinand <bobwei9@hotmail.com>

show more ...


# dc5475c1 28-Jul-2022 Bob Weinand

Save previous observer on the VM stack

This avoids a possible significant performance penalty, when some leaf function was observed, deep in the stack.
As a side effect, we are not itera

Save previous observer on the VM stack

This avoids a possible significant performance penalty, when some leaf function was observed, deep in the stack.
As a side effect, we are not iterating over prev_execute_data anymore and thus, non-observed fake frames, possibly on stack, cannot have any impact on the observer anymore (especially within zend_observer_fcall_end_all).

Saving the previous observer happens now directly on the VM stack. If there is any observer, function frames are allocated an extra zval (the last temporary), which will, on observed frames, contain the previous observed frame address.

show more ...


# 625f1649 20-Jul-2022 Bob Weinand

Include internal functions in the observer API

There are two main motivations to this:
a) The logic for handling internal and userland observation can be unified.
b) Unwinding of obs

Include internal functions in the observer API

There are two main motivations to this:
a) The logic for handling internal and userland observation can be unified.
b) Unwinding of observed functions on a bailout does notably not include observers. Even if users of observers were to ensure such handling themselves, it would be impossible to retain the relative ordering - either the user has to unwind all internal observed frames before the automatic unwinding (zend_observer_fcall_end_all) or afterwards, but not properly interleaved.

Signed-off-by: Bob Weinand <bobwei9@hotmail.com>

show more ...


# 9e2de4c2 11-Jul-2022 Bob Weinand

Add an API to manipulate observers at runtime

Signed-off-by: Bob Weinand <bobwei9@hotmail.com>


# e6cf5831 12-Feb-2022 Bob Weinand

Fix GH-8082: Prevent leaking memory on observed transient run_time_caches

This is achieved by tracking the observers on the run_time_cache (with a fixed amount of slots, 2 for each observer)

Fix GH-8082: Prevent leaking memory on observed transient run_time_caches

This is achieved by tracking the observers on the run_time_cache (with a fixed amount of slots, 2 for each observer).
That way round, if the run_time_cache is freed all associated observer data is as well.

This approach has been chosen, as to avoid any ABI or API breakage.
Future versions may for example choose to provide a hookable API for run_time_cache freeing or similar.

show more ...


# ee610947 27-Dec-2021 Christoph M. Becker

Revert "Fix zend_observer_fcall_end_all() accessing dangling pointers"

This reverts commit 76e2a8380e5e030412e9d565955d011972af8418. Cf.
<https://github.com/php/php-src/commit/76e2a8380

Revert "Fix zend_observer_fcall_end_all() accessing dangling pointers"

This reverts commit 76e2a8380e5e030412e9d565955d011972af8418. Cf.
<https://github.com/php/php-src/commit/76e2a8380e5e030412e9d565955d011972af8418#r62560239>.

show more ...


# 76e2a838 18-Nov-2021 Florian Sowade

Fix zend_observer_fcall_end_all() accessing dangling pointers

This may happen, when the execute_data was allocated on the stack. We
ensure that the runtime cache pointer is not NULL bef

Fix zend_observer_fcall_end_all() accessing dangling pointers

This may happen, when the execute_data was allocated on the stack. We
ensure that the runtime cache pointer is not NULL before dereferencing
it.

This is a partial fix for bug 81430.

Closes GH-7665.

show more ...


# 7699aed3 13-Oct-2021 Joe Watkins

missing shutdown in observer


# c884a5a2 28-Sep-2021 Joe Watkins

Fix #81380 observer may not be initialized properly


# 12b0f1b7 13-Sep-2021 Bob Weinand

Fix #81435 Observer current_observed_frame may point to an old (overwritten) frame

Ensure current_observed_frame always points to an actually observed frame.
This solution has a caveat o

Fix #81435 Observer current_observed_frame may point to an old (overwritten) frame

Ensure current_observed_frame always points to an actually observed frame.
This solution has a caveat of being O(stack size), with the worst case occurring if there are a lot of frames between the current and previous observed frames.
An O(1) solution would require keeping track of the previous observed frame, which would require some additional frame attached metadata, which is best not attempted in an already released version.

show more ...


# 848b5458 21-Jul-2021 Joe Watkins

more fiber notifications (#7293)


# a65989b1 05-Jun-2021 Martin Schröder <53789145+kooldev@users.noreply.github.com>

Alternative Fiber Internals Refactoring (#7101)


# c276c16b 26-Apr-2021 Aaron Piotrowski

Implement Fibers

RFC: https://wiki.php.net/rfc/fibers

Closes GH-6875.


# a1c6ee21 23-Apr-2021 Nikita Popov

Convert error filename to zend_string

Error handling functions/callbacks now accept the error filename
as a zend_string* instead of a const char*.


# 17142eab 15-Jan-2021 Sammy Kaye Powers

Observe fake closures

Closes GH-6607.


# 094e1a8b 26-Jan-2021 Dmitry Stogov

Skip dummy frames allocated on CPU stack of zend_call_function().
(Usage of "current_observed_frame" varible looks unsafe to me).


# 0425a669 23-Oct-2020 Sammy Kaye Powers

Fire open observer end handlers after a zend_bailout

Closes GH-6377


# e42abeaf 24-Sep-2020 Sammy Kaye Powers

Pass zend_execute_data instead of zend_function to fcall init

The motivation for this change is to prevent extensions from having to check executor globals for the current execute_data durin

Pass zend_execute_data instead of zend_function to fcall init

The motivation for this change is to prevent extensions from having to check executor globals for the current execute_data during function call init. A previous implementation of the observer API initialized the function call from runtime cache initialization before execute_data was allocated which is why zend_function was passed in.

But now that the observer API is implemented via opcode specialization, it makes sense to pass in the execute_data. This also keeps the API a bit more consistent for existing extensions that already hook zend_execute_ex.

Closes GH-6209

show more ...


# 12306728 16-Jul-2020 Sammy Kaye Powers

Add system ID entropy API

The `zend_system_id` is a (true global) system ID that fingerprints a process state. When extensions add engine hooks during MINIT/startup, entropy is added the sys

Add system ID entropy API

The `zend_system_id` is a (true global) system ID that fingerprints a process state. When extensions add engine hooks during MINIT/startup, entropy is added the system ID for each hook. This allows extensions to identify that changes have been made to the engine since the last PHP process restart.

Closes GH-5871

show more ...


12