Re: GC issue wrt. to resource <-> object cycles?

From: Date: Wed, 10 Aug 2016 10:59:10 +0000
Subject: Re: GC issue wrt. to resource <-> object cycles?
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-94998@lists.php.net to get a copy of this message
On Wed, Aug 10, 2016 at 12:52 PM, Christoph M. Becker <cmbecker69@gmx.de> wrote: > Hi! > > I've tried to fix <https://bugs.php.net/72793>, and > it looks like > there's a general GC issue wrt. to resources referencing objects and > vice versa. Aren't resource ZVALS put in the root buffer? > > See <https://3v4l.org/JYIQs>, which demonstrates the > issue better than > the test script in the bug report. A steady increase of allocated > memory can be seen, even though gc_collect_cycles() is called. When > uncommenting unset($this->parser);, everything is fine (the > GC > wouldn't be involved at all in this case). > > Wrt. to the PHP 5.6 behavior: this appears fine, but actually it's in > error, because of > <https://github.com/php/php-src/commit/72ec2e8f>. Not > increasing the refcount of parser->object might > theoretically lead to > use-after-free scenarios. > As you correctly deduced, we currently do not support GC for resources. This would require introducing something akin to the get_gc handler for resources. The simplest way to fix ext/xml in particular is probably to migrate it to use an object instead of a resource. Nikita

« previous php.internals (#94998) next »