#32751 [Fbk->Opn]: Segfault after code execution (destructor calls)
| From: | prism at pld-linux dot org | Date: | Tue, 19 Apr 2005 20:37:44 +0000 |
| Subject: | #32751 [Fbk->Opn]: Segfault after code execution (destructor calls) | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-77929@lists.php.net to get a copy of this message | ||
ID: 32751
User updated by: prism at pld-linux dot org
Reported By: prism at pld-linux dot org
-Status: Feedback
+Status: Open
Bug Type: Zend Engine 2 problem
Operating System: PLD Linux Distribution
PHP Version: 5.0.4
New Comment:
I did't try in other OS. Later, I'll see in Windows - but
I have to set up the environment first.
Yes. I used glibc 2.3.4 before, and switched to 2.3.5 to
see if it helps.
It also happened earlier, when I had some older glibc, but
I ignored it.
The code also fails in CLI. Actually, we test it in CLI
because Apache doesn't get any output from PHP module
since it dies - proxy says that zero-sized reply comes.
And finally: Yes, we build as much we can as modules to
package it into separate packages.
Previous Comments:
------------------------------------------------------------------------
[2005-04-19 22:23:38] tony2001@php.net
Are you able to reproduce it under a different OS?
Or at least with different glibc?
Is it reproducible only with Apache2 or with CLI too?
As far as I can see, mysql is built as shared module or am I wrong?
------------------------------------------------------------------------
[2005-04-19 21:20:11] prism at pld-linux dot org
What else do you need? You have been given exact cause and
explanation what to fix. Let me know if we can still give
you some more information.
------------------------------------------------------------------------
[2005-04-19 08:51:00] sniper@php.net
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.
------------------------------------------------------------------------
[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