php4-pgsql-4.3.11-1

Jakub Bogusz qboosh at pld-linux.org
Sat Apr 16 19:37:32 CEST 2005


On Sat, Apr 16, 2005 at 06:09:49PM +0200, Jakub Bogusz wrote:
> On Sat, Apr 16, 2005 at 05:33:11PM +0200, Michał Łukaszek wrote:
[...]
> > But when you change mysql_connect to mysql_pconnect:
> > <?
> >  $link = mysql_pconnect('localhost', 'aaa', 'bbb');
> >  mysql_select_db('ccc', $link);
> >  if($link) mysql_close($link);
> >  echo 'I am still alive';
> > ?>
> > you get:

[...]
> (gdb) bt
> #0  0xb78a6978 in ?? ()
> #1  0xb7f557da in plist_entry_destructor (ptr=0x81e11b8)
>     at /home/comp/rpm/BUILD/php-5.0.4/Zend/zend_list.c:204
> #2  0xb7f5385f in zend_hash_apply_deleter (ht=0x8052c50, p=0x81ec1a0)
>     at /home/comp/rpm/BUILD/php-5.0.4/Zend/zend_hash.c:574
> #3  0xb7f53ab0 in zend_hash_graceful_reverse_destroy (ht=0x8052c50)
>     at /home/comp/rpm/BUILD/php-5.0.4/Zend/zend_hash.c:640
> #4  0xb7f558f6 in zend_destroy_rsrc_list (ht=0x8052c50, tsrm_ls=0x804f0a0)
>     at /home/comp/rpm/BUILD/php-5.0.4/Zend/zend_list.c:234
> #5  0xb7f49c20 in zend_shutdown (tsrm_ls=0x804f0a0)
>     at /home/comp/rpm/BUILD/php-5.0.4/Zend/zend.c:714
> #6  0xb7ef42d5 in php_module_shutdown (tsrm_ls=0x804f0a0)
>     at /home/comp/rpm/BUILD/php-5.0.4/main/main.c:1518
> #7  0x0804be1e in main (argc=2, argv=0xbffff174)
>     at /home/comp/rpm/BUILD/php-5.0.4/sapi/cli/php_cli.c:1055
> (gdb) f 1
> #1  0xb7f557da in plist_entry_destructor (ptr=0x81e11b8)
>     at /home/comp/rpm/BUILD/php-5.0.4/Zend/zend_list.c:204
> 204                                             ld->plist_dtor_ex(le TSRMLS_CC);
> (gdb) p ld->plist_dtor_ex
> $1 = 0xb78a6978
> (gdb) x ld->plist_dtor_ex
> 0xb78a6978:     Cannot access memory at address 0xb78a6978

it's in (unloaded) php-mysql module

> The list here is "persistent_list", which is used by php-mysql for
> persistent connection - so it's probably bug in php-mysql module or php
> engine itself.

Zend engine or all modules which use persistent_list.
persistent_list is destroyed after modules are unloaded.
But some modules register own destructors for elements put on
persistent_list. When Zend destroys such entry from persistent_list,
it tries to call destructor from unloaded module and segfaults.

It's subject for bug-report to php.net. Any volunteers?


-- 
Jakub Bogusz    http://cyber.cs.net.pl/~qboosh/




More information about the pld-devel-en mailing list