On 04.07.2018 at 12:24, Nikita Popov wrote:

> On Wed, Jul 4, 2018 at 11:32 AM, Christoph M. Becker <cmbecke...@gmx.de>
> wrote:
> 
>> On 04.07.2018 at 01:16, Jan Ehrhardt wrote:
>>
>>> Another one: some extensioms suffer from the fact that the macro GC_G
>>> was removed from
>>> https://github.com/php/php-src/blob/master/Zend/zend_gc.h
>>> Some of the removed functionality has been reintroduced in gc_status
>>> https://github.com/php/php-src/commits/master/Zend/zend_gc.h
>>>
>>> Examples using GC_G: v8js, xdebug, tideways.
>>> v8js was using gc_active to check if garbage collection was running.
>>> I did a wild guess to fix it:
>>> https://github.com/Jan-E/v8js/commit/997df065d3cd06a9b11e399458c391
>> eb797a850e#diff-dc446a69201ccda44a33d111152f6c8c
>>
>> This looks wrong, since zend_gc_collect_cycles() actually triggers the
>> GC, if I'm not mistaken.
>>
>> It seems to me that should be something like:
>>
>>   zend_gc_status status;
>>   zend_gc_get_status(&status);
>>   if (status.runs) {
>>
> 
> The correct way to handle this is to implement a proper get_gc() handler,
> which will be called in favor of get_properties() during GC.

Ah, thanks!  In some other cases, for instance, in Xdebug[1], using
zend_gc_get_status() would be correct, wouldn't it?

[1]
<https://github.com/xdebug/xdebug/blob/27e20b16d23ab611d2a8e74d2e3c061710e18d8f/xdebug_gc_stats.c#L47-L57>

-- 
Christoph M. Becker

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to