Edit report at https://bugs.php.net/bug.php?id=61418&edit=1
ID: 61418 Updated by: cataphr...@php.net Reported by: melkorm at gmail dot com Summary: Segmentation foult using FiltesystemIterator & RegexIterator -Status: Verified +Status: Assigned Type: Bug Package: SPL related Operating System: Linux Mint 12 PHP Version: 5.3.10 -Assigned To: +Assigned To: cataphract Block user comment: N Private report: N Previous Comments: ------------------------------------------------------------------------ [2012-03-17 23:27:20] cataphr...@php.net Verified. The zend_object_iterator_funcs.dtor function (implementation: spl_filesystem_tree_it_dtor) seems faulty. In the reproduce script here, the zend_object_iterator is requested twice: first by the RegexIterator constructor, and then by foreach. The zend_object_iterator returned is the same in both cases -- that owned by the FilesystemIterator and its destructor gets called twice. But obviously the destructor is not prepared to be called twice as it unconditionally calls zval_ptr_dtor (for some reason, twice) and zeroes the reference to the owning object. ------------------------------------------------------------------------ [2012-03-17 18:52:31] melkorm at gmail dot com Sorry for this, but I am not used to this bugtrucker yet, anywho proper script should look like that: $fileIterator = new FilesystemIterator(__DIR__, FilesystemIterator::KEY_AS_FILENAME); $regexpIterator = new RegexIterator($fileIterator, '#.*#', \RegexIterator::MATCH, \RegexIterator::USE_KEY ); foreach ($fileIterator as $key => $file) { } No idea why this `doubled`. ------------------------------------------------------------------------ [2012-03-17 18:50:14] melkorm at gmail dot com There is a typo ------------------------------------------------------------------------ [2012-03-16 17:52:20] melkorm at gmail dot com It also fails at : melkorm@bibiop ~ $ php -v PHP 5.3.6-13ubuntu3.6 with Suhosin-Patch (cli) (built: Feb 11 2012 03:26:01) Copyright (c) 1997-2011 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies with Xdebug v2.1.0, Copyright (c) 2002-2010, by Derick Rethans ------------------------------------------------------------------------ [2012-03-16 17:47:22] melkorm at gmail dot com Description: ------------ melkorm@bibiop ~/htdocs/test.dev $ php -v PHP 5.3.10-1~dotdeb.1 with Suhosin-Patch (cli) (built: Feb 2 2012 23:28:08) Copyright (c) 1997-2012 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies with Xdebug v2.1.0, Copyright (c) 2002-2010, by Derick Rethans with Suhosin v0.9.33, Copyright (c) 2007-2012, by SektionEins GmbH Test script: --------------- $fileIterator = new FilesystemIterator(__DIR__, FilesystemIterator::KEY_AS_FILENAME); $regexpIterator = new RegexIterator($fileIterator, $regexpIterator = new RegexIterator($fileIterator, '#.*#', '#.*#', \RegexIterator::MATCH, \RegexIterator::MATCH, \RegexIterator::USE_KEY \RegexIterator::USE_KEY ); ); foreach ($fileIterator as $key => $file) foreach ($fileIterator as $key => $file) { } Actual result: -------------- Segemntation foult strace output can be found here : http://pastebin.com/CFV6qepj ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=61418&edit=1