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]