Andi Gutmans wrote:
> Yasuo,
> 
> I don't quite understand. define() hasn't been changed in the Zend Engine
> 1. Can you please send me a reproducing script without pg_*() which
> works on 4.0.6 and crashes on 4.2.0-dev?
> 

It seems resources are deleted by RSHUTDOWN, but
Zend is trying to delete them again.

Here is what I got.
Backtraces are attached.


--====== Script #1 =====--
<?php

function foo($path) {
        return fopen($path, 'r');
}

define('C1', foo('/etc/passwd'));
echo C1;

?>
-- end --

PHP 4.0.6 (CGI): error msg
Resource id #1
zend_hash.c(921) : ht=0x081df1d0 is already destroyed
zend_hash.c(921) : ht=0x081df1d0 is already destroyed

PHP 4.2.0/ZE1 (CLI): segfualt
PHP 4.2.0/ZE2 (CLI): segfualt

--===== Script #2 ======--
<?php
    define ("DB",pg_connect('dbname=test user=yohgaki'));
    pg_exec(DB,"select * from sys_session");
?>
-- end --

PHP 4.0.6 (CGI): works
PHP 4.2.0/ZE1 (CLI): segfualt
PHP 4.2.0/ZE2 (CLI): segfualt


--===== Script #3 =====--
<?php
function foo($int) {
        return $int;
}

define('C1', foo(100));
echo C1;
?>
-- end --

PHP 4.0.6 (CGI): works
PHP 4.2.0/ZE1 (CLI): works
PHP 4.2.0/ZE2 (CLI): works


-- 
Yasuo Ohgaki

============ Script #1 - PHP 4.2.0/ZE1 =============================
#0  0x0809089b in zend_hash_index_find (ht=0x8250124, h=1, pData=0xbfffe700)
    at zend_hash.c:935
935                     if ((p->h == h) && (p->nKeyLength == 0)) {
(gdb) bt
#0  0x0809089b in zend_hash_index_find (ht=0x8250124, h=1, pData=0xbfffe700)
    at zend_hash.c:935
#1  0x0809158f in _zend_list_delete (id=1) at zend_list.c:53
#2  0x08087af2 in _zval_dtor (zvalue=0x82d66a0, 
    __zend_filename=0x820dcdc "zend_constants.c", __zend_lineno=32)
    at zend_variables.c:64
#3  0x081b3564 in free_zend_constant (c=0x82d66a0) at zend_constants.c:32
#4  0x0808f694 in zend_hash_del_key_or_index (ht=0x8251f08, arKey=0x82761e8 "c1", 
    nKeyLength=3, h=193414551, flag=0) at zend_hash.c:512
#5  0x0808ffe4 in zend_hash_reverse_apply (ht=0x8251f08, 
    apply_func=0x81b3650 <clean_non_persistent_constant>) at zend_hash.c:741
#6  0x081b3a7d in clean_non_persistent_constants () at zend_constants.c:166
#7  0x081bd9c9 in shutdown_executor () at zend_execute_API.c:199
#8  0x08089167 in zend_deactivate () at zend.c:596
#9  0x0809842b in php_request_shutdown (dummy=0x0) at main.c:738
#10 0x0807068a in main (argc=2, argv=0xbffff1bc) at php_cli.c:597
#11 0x4050f1be in __libc_start_main (main=0x806ff10 <main>, argc=2, ubp_av=0xbffff1bc, 
    init=0x806cf1c <_init>, fini=0x81df32c <_fini>, rtld_fini=0x4000ddd0 <_dl_fini>, 
    stack_end=0xbffff1ac) at ../sysdeps/generic/libc-start.c:129
====================================================================


============ Script #1 - PHP 4.2.0/ZE2 =============================
#0  0x0809262b in zend_hash_index_find (ht=0x82561b0, h=1, pData=0xbfffe740)
    at zend_hash.c:935
935                     if ((p->h == h) && (p->nKeyLength == 0)) {
(gdb) bt
#0  0x0809262b in zend_hash_index_find (ht=0x82561b0, h=1, pData=0xbfffe740)
    at zend_hash.c:935
#1  0x0809331f in _zend_list_delete (id=1) at zend_list.c:53
#2  0x08089695 in _zval_dtor (zvalue=0x82580b0, 
    __zend_filename=0x8213a7c "zend_constants.c", __zend_lineno=32)
    at zend_variables.c:63
#3  0x081b7d34 in free_zend_constant (c=0x82580b0) at zend_constants.c:32
#4  0x08091424 in zend_hash_del_key_or_index (ht=0x8255ef4, arKey=0x82d9238 "c1", 
    nKeyLength=3, h=193414551, flag=0) at zend_hash.c:512
#5  0x08091d74 in zend_hash_reverse_apply (ht=0x8255ef4, 
    apply_func=0x81b7e20 <clean_non_persistent_constant>) at zend_hash.c:741
#6  0x081b823d in clean_non_persistent_constants () at zend_constants.c:165
#7  0x081c26a9 in shutdown_executor () at zend_execute_API.c:219
#8  0x0808ad67 in zend_deactivate () at zend.c:610
#9  0x0809ad9b in php_request_shutdown (dummy=0x0) at main.c:738
#10 0x0807098a in main (argc=2, argv=0xbffff1fc) at php_cli.c:597
#11 0x4050f1be in __libc_start_main (main=0x8070210 <main>, argc=2, ubp_av=0xbffff1fc, 
    init=0x806d21c <_init>, fini=0x81e44fc <_fini>, rtld_fini=0x4000ddd0 <_dl_fini>, 
    stack_end=0xbffff1ec) at ../sysdeps/generic/libc-start.c:129
(gdb) 
=======================================================================

====== Script #2 - PHP 4.2.0/ZE1 (CLI) backtrace =========
#0  0x0809089b in zend_hash_index_find (ht=0x8250124, h=1, pData=0xbfffe700)
    at zend_hash.c:935
935                     if ((p->h == h) && (p->nKeyLength == 0)) {
(gdb) bt
#0  0x0809089b in zend_hash_index_find (ht=0x8250124, h=1, pData=0xbfffe700)
    at zend_hash.c:935
#1  0x0809158f in _zend_list_delete (id=1) at zend_list.c:53
#2  0x08087af2 in _zval_dtor (zvalue=0x82e8a10, 
    __zend_filename=0x820dcdc "zend_constants.c", __zend_lineno=32)
    at zend_variables.c:64
#3  0x081b3564 in free_zend_constant (c=0x82e8a10) at zend_constants.c:32
#4  0x0808f694 in zend_hash_del_key_or_index (ht=0x8251f08, arKey=0x82e8a00 
"dbconn01", 
    nKeyLength=9, h=711615342, flag=0) at zend_hash.c:512
#5  0x0808ffe4 in zend_hash_reverse_apply (ht=0x8251f08, 
    apply_func=0x81b3650 <clean_non_persistent_constant>) at zend_hash.c:741
#6  0x081b3a7d in clean_non_persistent_constants () at zend_constants.c:166
#7  0x081bd9c9 in shutdown_executor () at zend_execute_API.c:199
#8  0x08089167 in zend_deactivate () at zend.c:596
#9  0x0809842b in php_request_shutdown (dummy=0x0) at main.c:738
#10 0x0807068a in main (argc=2, argv=0xbffff1bc) at php_cli.c:597
#11 0x4050f1be in __libc_start_main (main=0x806ff10 <main>, argc=2, ubp_av=0xbffff1bc, 
    init=0x806cf1c <_init>, fini=0x81df32c <_fini>, rtld_fini=0x4000ddd0 <_dl_fini>, 
    stack_end=0xbffff1ac) at ../sysdeps/generic/libc-start.c:129
(gdb) 
==================================================================

=========== Script #2 - PHP 4.2.0/ZE2 (CLI) backtrace ============
#0  0x0809262b in zend_hash_index_find (ht=0x82561b0, h=1, pData=0xbfffe750)
    at zend_hash.c:935
935                     if ((p->h == h) && (p->nKeyLength == 0)) {
(gdb) bt
#0  0x0809262b in zend_hash_index_find (ht=0x82561b0, h=1, pData=0xbfffe750)
    at zend_hash.c:935
#1  0x0809331f in _zend_list_delete (id=1) at zend_list.c:53
#2  0x08089695 in _zval_dtor (zvalue=0x82f43b8, 
    __zend_filename=0x8213a7c "zend_constants.c", __zend_lineno=32)
    at zend_variables.c:63
#3  0x081b7d34 in free_zend_constant (c=0x82f43b8) at zend_constants.c:32
#4  0x08091424 in zend_hash_del_key_or_index (ht=0x8255ef4, arKey=0x82f43a8 
"dbconn01", 
    nKeyLength=9, h=711615342, flag=0) at zend_hash.c:512
#5  0x08091d74 in zend_hash_reverse_apply (ht=0x8255ef4, 
    apply_func=0x81b7e20 <clean_non_persistent_constant>) at zend_hash.c:741
#6  0x081b823d in clean_non_persistent_constants () at zend_constants.c:165
#7  0x081c26a9 in shutdown_executor () at zend_execute_API.c:219
#8  0x0808ad67 in zend_deactivate () at zend.c:610
#9  0x0809ad9b in php_request_shutdown (dummy=0x0) at main.c:738
#10 0x0807098a in main (argc=2, argv=0xbffff20c) at php_cli.c:597
#11 0x4050f1be in __libc_start_main (main=0x8070210 <main>, argc=2, ubp_av=0xbffff20c, 
    init=0x806d21c <_init>, fini=0x81e44fc <_fini>, rtld_fini=0x4000ddd0 <_dl_fini>, 
    stack_end=0xbffff1fc) at ../sysdeps/generic/libc-start.c:129
(gdb) 
====================================================================


-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to