That makes PEAR installer coredump with the following core:
Core was generated by `/data/src/php5/sapi/cli/php -n -dsafe_mode 0
/data/src/php5/pear/install-pear.php'.
#0 0x08142d78 in _efree (ptr=0x400b396c,
__zend_filename=0x81a89e0
"/data/src/php5/Zend/zend_execute_API.c",
__zend_lineno=332,
__zend_orig_filename=0x81a95e0
"/data/src/php5/Zend/zend_variables.c",
__zend_orig_lineno=44) at /data/src/php5/Zend/zend_alloc.c:242
242 REMOVE_POINTER_FROM_LIST(p);
(gdb) bt
#0 0x08142d78 in _efree (ptr=0x400b396c,
__zend_filename=0x81a89e0
"/data/src/php5/Zend/zend_execute_API.c",
__zend_lineno=332,
__zend_orig_filename=0x81a95e0
"/data/src/php5/Zend/zend_variables.c",
__zend_orig_lineno=44) at /data/src/php5/Zend/zend_alloc.c:242
#1 0x08154de0 in _zval_dtor (zvalue=0x400b39a8,
__zend_filename=0x81a89e0
"/data/src/php5/Zend/zend_execute_API.c",
__zend_lineno=332) at /data/src/php5/Zend/zend_variables.c:44
#2 0x0814c1f8 in _zval_ptr_dtor (zval_ptr=0x400b39f8,
__zend_filename=0x81a95e0
"/data/src/php5/Zend/zend_variables.c",
__zend_lineno=164) at /data/src/php5/Zend/zend_execute_API.c:332
#3 0x08155077 in _zval_ptr_dtor_wrapper (zval_ptr=0x400b39f8)
at /data/src/php5/Zend/zend_variables.c:164
#4 0x0815c18d in zend_hash_destroy (ht=0x400b33d4)
at /data/src/php5/Zend/zend_hash.c:541
#5 0x0814ecef in destroy_zend_class (pce=0x81efa84)
at /data/src/php5/Zend/zend_opcode.c:120
#6 0x0815c18d in zend_hash_destroy (ht=0x81c0984)
at /data/src/php5/Zend/zend_hash.c:541
#7 0x0815613a in zend_shutdown () at /data/src/php5/Zend/zend.c:674
#8 0x081229eb in php_module_shutdown () at
/data/src/php5/main/main.c:1346
#9 0x08172b97 in main (argc=7, argv=0xbffff9c4)
at /data/src/php5/sapi/cli/php_cli.c:813
#10 0x42017499 in __libc_start_main () from /lib/i686/libc.so.6
Edin
----- Original Message -----
From: "Stanislav Malyshev" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Wednesday, January 29, 2003 3:33 PM
Subject: [ZEND-ENGINE-CVS] cvs: ZendEngine2 / zend_execute_API.c
> stas Wed Jan 29 09:33:18 2003 EDT
>
> Modified files:
> /ZendEngine2 zend_execute_API.c
> Log:
> Fix object destructors:
> zend_objects_store_call_destructors is not used anymore, we rely
on
> symbol tables cleaners to destroy all objects.
>
>
> Index: ZendEngine2/zend_execute_API.c
> diff -u ZendEngine2/zend_execute_API.c:1.189
ZendEngine2/zend_execute_API.c:1.190
> --- ZendEngine2/zend_execute_API.c:1.189 Thu Jan 23 00:15:42 2003
> +++ ZendEngine2/zend_execute_API.c Wed Jan 29 09:33:18 2003
> @@ -189,15 +189,23 @@
> void shutdown_executor(TSRMLS_D)
> {
> zend_try {
> - zend_objects_store_call_destructors(&EG(objects_store)
TSRMLS_CC);
> -
> zend_ptr_stack_destroy(&EG(arg_types_stack));
> -
> - while (EG(symtable_cache_ptr)>=EG(symtable_cache)) {
> +
> +/* Removed because this can not be safely done, e.g. in this
situation:
> + Object 1 creates object 2
> + Object 3 holds reference to object 2.
> + Now when 1 and 2 are destroyed, 3 can still access 2 in its
destructor, with
> + very problematic results */
> +/* zend_objects_store_call_destructors(&EG(objects_store)
TSRMLS_CC); */
> +
> +/* Moved after symbol table cleaners, because some of the
cleaners can call
> + destructors, which would use EG(symtable_cache_ptr) and thus
leave leaks */
> +/* while (EG(symtable_cache_ptr)>=EG(symtable_cache)) {
> zend_hash_destroy(*EG(symtable_cache_ptr));
> efree(*EG(symtable_cache_ptr));
> EG(symtable_cache_ptr)--;
> }
> +*/
> zend_llist_apply(&zend_extensions, (llist_apply_func_t)
zend_extension_deactivator TSRMLS_CC);
>
> zend_hash_destroy(&EG(symbol_table));
> @@ -217,6 +225,12 @@
> } else {
> zend_hash_reverse_apply(EG(function_table), (apply_func_t)
is_not_internal_function TSRMLS_CC);
> zend_hash_reverse_apply(EG(class_table), (apply_func_t)
is_not_internal_class TSRMLS_CC);
> + }
> +
> + while (EG(symtable_cache_ptr)>=EG(symtable_cache)) {
> + zend_hash_destroy(*EG(symtable_cache_ptr));
> + efree(*EG(symtable_cache_ptr));
> + EG(symtable_cache_ptr)--;
> }
> } zend_end_try();
>
>
>
>
> --
> Zend Engine CVS Mailing List (http://cvs.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>
>
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php