Commit: 157ccaf507b7a94c43db4ec1b7321aac5cc68e8b Author: Xinchen Hui <larue...@php.net> Tue, 25 Jun 2013 13:47:50 +0800 Parents: efd3c72de3e736758b5a94194228ea1415049789 Branches: PHP-5.5 master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=157ccaf507b7a94c43db4ec1b7321aac5cc68e8b Log: Fixed bug #64827 Segfault in zval_mark_grey (zend_gc.c) I can not get a reproduce script since the context is very strict. Of course I will try to make one, but for now, I just commit this first. Bugs: https://bugs.php.net/64827 Changed paths: M NEWS M ext/opcache/ZendAccelerator.c Diff: diff --git a/NEWS b/NEWS index ee3d858..18eedd3 100644 --- a/NEWS +++ b/NEWS @@ -9,6 +9,7 @@ PHP NEWS (David Soria Parra, Laruence) - OPcache + . Fixed bug #64827 (Segfault in zval_mark_grey (zend_gc.c)). (Laruence) . OPcache must be compatible with LiteSpeed SAPI (Dmitry) - CLI server: diff --git a/ext/opcache/ZendAccelerator.c b/ext/opcache/ZendAccelerator.c index 4d98397..efd902f 100644 --- a/ext/opcache/ZendAccelerator.c +++ b/ext/opcache/ZendAccelerator.c @@ -2163,7 +2163,10 @@ static void accel_fast_zval_ptr_dtor(zval **zval_ptr) case IS_CONSTANT_ARRAY: { TSRMLS_FETCH(); + GC_REMOVE_ZVAL_FROM_BUFFER(zvalue); if (zvalue->value.ht && (zvalue->value.ht != &EG(symbol_table))) { + /* break possible cycles */ + Z_TYPE_P(zvalue) = IS_NULL; zvalue->value.ht->pDestructor = (dtor_func_t)accel_fast_zval_ptr_dtor; accel_fast_hash_destroy(zvalue->value.ht); } @@ -2173,6 +2176,7 @@ static void accel_fast_zval_ptr_dtor(zval **zval_ptr) { TSRMLS_FETCH(); + GC_REMOVE_ZVAL_FROM_BUFFER(zvalue); Z_OBJ_HT_P(zvalue)->del_ref(zvalue TSRMLS_CC); } break; -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php