#32751 [Opn->Fbk]: Segfault after code execution (destructor calls)
| From: | sniper@php.net | Date: | Tue, 19 Apr 2005 06:51:02 +0000 |
| Subject: | #32751 [Opn->Fbk]: Segfault after code execution (destructor calls) | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-77855@lists.php.net to get a copy of this message | ||
ID: 32751
Updated by: sniper@php.net
Reported By: prism at pld-linux dot org
-Status: Open
+Status: Feedback
Bug Type: Zend Engine 2 problem
Operating System: PLD Linux Distribution
PHP Version: 5.0.4
New Comment:
Not enough information was provided for us to be able
to handle this bug. Please re-read the instructions at
http://bugs.php.net/how-to-report.php
If you can provide more information, feel free to add it
to this bug and change the status back to "Open".
Thank you for your interest in PHP.
Previous Comments:
------------------------------------------------------------------------
[2005-04-18 21:49:05] prism at pld-linux dot org
Description:
------------
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.
Reproduce code:
---------------
Look here: http://comments.gmane.org/gmane.linux.pld.devel.english/785
and start reading from post written at 16 Apr 17:33 by Michal Lukaszek,
and below from that.
Expected result:
----------------
No segfault.
Actual result:
--------------
> (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.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=32751&edit=1