Edit report at https://bugs.php.net/bug.php?id=63984&edit=1
ID: 63984 Comment by: ni...@php.net Reported by: ar...@php.net Summary: Generators segfault Status: Assigned Type: Bug Package: Reproducible crash Operating System: Linux PHP Version: 5.5.0alpha2 Assigned To: nikic Block user comment: N Private report: N New Comment: @arpad: If it happens when exit; is called then it's basically the same issue, just a different cause. I'll try to fix this issue sometime soon. Previous Comments: ------------------------------------------------------------------------ [2013-01-14 15:28:14] ar...@php.net I think it's when "exit" is called during the execution of the generator, wasn't getting any errors though. I'll put together a repro script later. ------------------------------------------------------------------------ [2013-01-14 15:21:47] ni...@php.net Do you know whether this segfault happens in conjunction with a fatal error? It's probably the same as https://bugs.php.net/bug.php?id=63830. ------------------------------------------------------------------------ [2013-01-14 11:43:00] ar...@php.net Also the generators are all closures, the following is one of the simpler ones: $exp = new Ruler_Expression_Anonymous; $exp->provides = array('friend'); $self = $this; $friends = $this->friends; $exp->func = function() use ($self, $friends) { foreach ($friends as $id => $name) { yield [ 'friend' => new Resource_User($id, $self), ]; } }; Bit more information from GDB (frame 1 in the above backtrace): (gdb) p stack_frame $1 = (void **) 0x7ffff8e08f38 (gdb) p *stack_frame $2 = (void *) 0x0 ------------------------------------------------------------------------ [2013-01-14 11:20:21] ar...@php.net Description: ------------ Can't provide a reproduce script yet I'm afraid, but I have a tree of objects, some of which are generators. I think this segfault is happening when destroying the tree. The generators are likely to not have finished iterating at this point. Program received signal SIGSEGV, Segmentation fault. _zval_ptr_dtor (zval_ptr=0x7ffff8e08f38) at /home/arpad/w/php/php-src/Zend/zend_execute_API.c:428 428 i_zval_ptr_dtor(*zval_ptr ZEND_FILE_LINE_RELAY_CC); (gdb) bt #0 _zval_ptr_dtor (zval_ptr=0x7ffff8e08f38) at /home/arpad/w/php/php-src/Zend/zend_execute_API.c:428 #1 0x00007ffff417f674 in zend_generator_close (generator=0x7ffff8e084c8, finished_execution=<value optimised out>) at /home/arpad/w/php/php-src/Zend/zend_generators.c:132 #2 0x00007ffff417f7cb in zend_generator_free_storage (generator=0x7ffff8e084c8) at /home/arpad/w/php/php-src/Zend/zend_generators.c:180 #3 0x00007ffff4185823 in zend_objects_store_free_object_storage (objects=0x7ffff485bf20) at /home/arpad/w/php/php-src/Zend/zend_objects_API.c:92 #4 0x00007ffff414e983 in shutdown_executor () at /home/arpad/w/php/php-src/Zend/zend_execute_API.c:295 #5 0x00007ffff415d8f5 in zend_deactivate () at /home/arpad/w/php/php-src/Zend/zend.c:938 #6 0x00007ffff40fe3ec in php_request_shutdown (dummy=<value optimised out>) at /home/arpad/w/php/php-src/main/main.c:1799 #7 0x00007ffff420c2f7 in php_apache_request_dtor (r=0x7ffff8a087f0) at /home/arpad/w/php/php-src/sapi/apache2handler/sapi_apache2.c:507 #8 php_handler (r=0x7ffff8a087f0) at /home/arpad/w/php/php-src/sapi/apache2handler/sapi_apache2.c:679 #9 0x00007ffff7fd5478 in ap_run_handler (r=0x7ffff8a087f0) at /build/buildd/apache2-2.2.17/server/config.c:159 #10 0x00007ffff7fd58dc in ap_invoke_handler (r=0x7ffff8a087f0) at /build/buildd/apache2-2.2.17/server/config.c:377 #11 0x00007ffff7fe4cfc in ap_internal_redirect (new_uri=<value optimised out>, r=<value optimised out>) at /build/buildd/apache2-2.2.17/modules/http/http_request.c:549 #12 0x00007fffefdc612d in ?? () from /usr/lib/apache2/modules/mod_rewrite.so #13 0x00007ffff7fd5478 in ap_run_handler (r=0x7ffff8830270) at /build/buildd/apache2-2.2.17/server/config.c:159 ---Type <return> to continue, or q <return> to quit--- #14 0x00007ffff7fd58dc in ap_invoke_handler (r=0x7ffff8830270) at /build/buildd/apache2-2.2.17/server/config.c:377 #15 0x00007ffff7fe56c0 in ap_process_request (r=0x7ffff8830270) at /build/buildd/apache2-2.2.17/modules/http/http_request.c:282 #16 0x00007ffff7fe2698 in ap_process_http_connection (c=0x7ffff865bab0) at /build/buildd/apache2-2.2.17/modules/http/http_core.c:190 #17 0x00007ffff7fdc058 in ap_run_process_connection (c=0x7ffff865bab0) at /build/buildd/apache2-2.2.17/server/connection.c:43 #18 0x00007ffff7fea6c0 in child_main (child_num_arg=<value optimised out>) at /build/buildd/apache2-2.2.17/server/mpm/prefork/prefork.c:662 #19 0x00007ffff7fea986 in make_child (s=0x7ffff8214938, slot=0) at /build/buildd/apache2-2.2.17/server/mpm/prefork/prefork.c:707 #20 0x00007ffff7feb163 in ap_mpm_run (_pconf=<value optimised out>, plog=<value optimised out>, s=<value optimised out>) at /build/buildd/apache2-2.2.17/server/mpm/prefork/prefork.c:983 #21 0x00007ffff7fc03aa in main (argc=2, argv=0x7fffffffe5f8) at /build/buildd/apache2-2.2.17/server/main.c:741 ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=63984&edit=1