PHP 4.0 Bug #5553: Internal data corruption
| From: | christian at pil dot dk | Date: | Thu, 13 Jul 2000 14:35:44 +0000 |
| Subject: | PHP 4.0 Bug #5553: Internal data corruption | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-24318@lists.php.net to get a copy of this message | ||
From: christian@pil.dk
Operating system: Linux 2.2.15
PHP version: 4.0.1pl2
PHP Bug Type: Session related
Bug description: Internal data corruption
I got segfaults at the end of almost every request during cleanup. After compiling with
'--enable-debug' I get the following messages in the errorlog instead:
[Wed Jul 12 16:21:36 2000] Script: '/path/docs/my.php3'
---------------------------------------
session.c(1282) : Block 0x081D730C status:
Beginning: Overrun (magic=0x6E61685F, expected=0x7312F8DC)
End: Unknown
---------------------------------------
session.c(1262) : Freeing 0x08232F04 (20 bytes), script=/path/docs/my.php3
I placed a breakpoint at the offending line and a backtrace at that point looks like this:
#0 php_rshutdown_session_globals () at session.c:1282
#1 0x80aea90 in php_rshutdown_session (type=1, module_number=19) at session.c:1319
#2 0x80f0b5e in module_registry_cleanup (module=0x81f4ef8) at zend_API.c:858
#3 0x80f33f9 in zend_hash_apply (ht=0x81bb900, apply_func=0x80f0b38
<module_registry_cleanup>) at zend_hash.c:672
#4 0x80f02a0 in zend_deactivate_modules () at zend.c:503
#5 0x807f82f in php_request_shutdown (dummy=0x0) at main.c:659
#6 0x807da16 in php_apache_request_shutdown (dummy=0x0) at mod_php4.c:301
#7 0x811bd4e in run_cleanups (c=0x820f67c) at alloc.c:1706
#8 0x811a57d in ap_clear_pool (a=0x820cf94) at alloc.c:531
#9 0x811a5f1 in ap_destroy_pool (a=0x820cf94) at alloc.c:561
#10 0x811a56c in ap_clear_pool (a=0x81c923c) at alloc.c:528
#11 0x8129a2f in child_main (child_num_arg=0) at http_main.c:3900
#12 0x8129fcc in make_child (s=0x81bfa24, slot=0, now=963411222) at http_main.c:4281
#13 0x812a129 in startup_children (number_to_start=5) at http_main.c:4363
#14 0x812a756 in standalone_main (argc=4, argv=0xbffffb14) at http_main.c:4651
#15 0x812aee3 in main (argc=4, argv=0xbffffb14) at http_main.c:4978
#16 0x408d79cb in __libc_start_main (main=0x812ab9c <main>, argc=4, argv=0xbffffb14,
init=0x8064798 <_init>, fini=0x81583dc <_fini>, rtld_fini=0x4000ae60 <_dl_fini>,
stack_end=0xbffffb0c) at ../sysdeps/generic/libc-start.c:92
The output from session_encode looks like this:
my_destination|s:26:"http://cola.pil.dk/my.php3";mymsUser|O:8:"mymsuser":17:{s:16:"MymsMobilenumber";s:20:"40176558
";s:9:"CountryID";i:20;s:10:"LanguageID";i:1;s:15:"LanguageISOCode";s:2:"en";s:9:"SelectAll";s:162:"SELECT
MymsUserID, MymsUserEmail, MymsUserPassword, MymsFirstname, MymsLastname,
MymsRememberCode, MymsMobilenumber, CountryID, LanguageID
FROM
Myms_User";s:5:"valid";b:1;s:2:"ID";i:1;s:5:"Email";s:16:"christian@pil.dk";s:8:"Password";s:4:"fisk";s:9:"FirstName";s:254:"Christian
";s:8:"LastName";s:254:"Laursen
";s:12:"RememberCode";s:0:"";s:18:"RememberCookieName";s:12:"MymsRemember";s:10:"ExistsInDB";b:1;s:3:"dbh";O:6:"db_sql":14:{s:4:"Host";s:9:"localhost";s:8:"Database";s:6:"master";s:4:"User";s:6:"master";s:8:"Password";s:13:"XXXXXXXXXXXXX";s:13:"UseODBCCursor";i:0;s:7:"Link_ID";i:0;s:8:"Query_ID";i:0;s:6:"Record";a:2:{i:0;s:5:"en
";s:15:"languageisocode";s:5:"en
";}s:3:"Row";i:0;s:5:"Errno";i:0;s:5:"Error";s:0:"";s:9:"Auto_Free";i:0;s:11:"Auto_Commit";i:1;}s:8:"Timezone";i:0;}
I tried to inspect the contents of ps_globals at that point but forund nothing suspicious-looking
there.
If there is anything else I can do to help, please let me know.