Edit report at https://bugs.php.net/bug.php?id=60556&edit=1
ID: 60556
Comment by: kilbyc at bellsouth dot net
Reported by: missiontcomputers at hotmail dot com
Summary: php5ts.dll crash when reaching over 1000 requests.
Status: Feedback
Type: Bug
Package: Built-in web server
Operating System: Windows 7 32bit / SP1
PHP Version: 5.3.8
Block user comment: N
Private report: N
New Comment:
Came up with a simpler test case
Index.php
<?php
exit();
?>
Using the same test parameters in my earlier comment.
Previous Comments:
------------------------------------------------------------------------
[2012-08-15 20:14:15] kilbyc at bellsouth dot net
This is the simplest test case I could manage. In my production environment,
the SoapClient doesn't always throw an error.
<?php
try {
$x = new SoapClient("non-existent.wsdl",array("exceptions" => 1));
} catch (SoapFault $E) {
echo $E->faultstring;
}
$doc = new DOMDocument();
$doc->loadHTML("<html><body>Test<br></body></html>");
echo $doc->saveHTML();
//require "require.php";
gzcompress(serialize(var_export("<html><body>Test<br></body></html>",
true)),6);
$restart = time()+5;
?>
As reported, I am using ext that are provided with PHP. php.ini, httpd.conf or
a zip of the entire problem environment is available upon request.
------------------------------------------------------------------------
[2012-08-15 11:09:55] [email protected]
Thank you for this bug report. To properly diagnose the problem, we
need a short but complete example script to be able to reproduce
this bug ourselves.
A proper reproducing script starts with <?php and ends with ?>,
is max. 10-20 lines long and does not require any external
resources such as databases, etc. If the script requires a
database to demonstrate the issue, please make sure it creates
all necessary tables, stored procedures etc.
Please avoid embedding huge scripts into the report.
------------------------------------------------------------------------
[2012-08-14 17:19:09] kilbyc at bellsouth dot net
It doesnt really bother me that PHP is dying, the thing that is killing me is
that when one thread dies with 255, Apache picks up and restarts the whole
child process. I end up with a log file full of thread exited with 255, server
restarting.
------------------------------------------------------------------------
[2012-08-14 17:15:11] kilbyc at bellsouth dot net
I have this same problem with
Win 7 Enterprise x86_64
(Yes, I know I have a x64 OS, but I am required to test against x86 for
compatibilities sake)
Tested and fails on both:
Apache 2.2.17 VC9 PHP 5.3.8 VC9 WIN32
Apache 2.2.22 VC9 PHP 5.3.15 VC9 WIN32
Jmeter test case: 1000 threads, 0 sec ramp, 5 page views spaced 10 sec apart
for each thread.
Apache conf: php as apache2_2 mod, mpm_winnt:800 threads, no extra mods.
PHP is allotted 512M in PHP ini. Only exts from the PHP distro are enabled.
No cache enabled (I disabled xcache it because I though it was causing the
problem)
Debug backtrace gives me:
Function Source
ntdll!NtTerminateProcess+12
ntdll!RtlExitUserProcess+41
kernel32!ExitProcessStub+12
msvcr90!__crtExitProcess+17
msvcr90!_cinit+154
msvcr90!exit+11
php5ts!zend_mm_startup_ex+94
c:\php-sdk\snap_5_3\vc9\x86\php-5.3.15\zend\zend_alloc.c @ 1068 + b
php5ts!zend_mm_startup+1cc
c:\php-sdk\snap_5_3\vc9\x86\php-5.3.15\zend\zend_alloc.c @ 1194 + 10
php5ts!alloc_globals_ctor+6
c:\php-sdk\snap_5_3\vc9\x86\php-5.3.15\zend\zend_alloc.c @ 2568 + 5
php5ts!allocate_new_resource+ab
c:\php-sdk\snap_5_3\vc9\x86\php-5.3.15\tsrm\tsrm.c @ 294 + b
php5ts!ts_resource_ex+bd c:\php-sdk\snap_5_3\vc9\x86\php-5.3.15\tsrm\tsrm.c @
362
php5apache2_2!php_handler+1f
c:\php-sdk\snap_5_3\vc9\x86\php-5.3.15\sapi\apache2handler\sapi_apache2.c @ 550
libhttpd!ap_run_handler+25
libhttpd!ap_invoke_handler+a2
libhttpd!ap_die+26e
libhttpd!ap_psignature+15b2
libhttpd!ap_run_process_connection+25
libhttpd!ap_process_connection+33
libhttpd!ap_regkey_value_remove+fe7
msvcr100!_endthreadex+3f
msvcr100!_endthreadex+ce
kernel32!BaseThreadInitThunk+e
ntdll!__RtlUserThreadStart+70
ntdll!_RtlUserThreadStart+1b
Debugger analysis is:
Detected possible blocking or leaked critical section at 0x030d1be8 owned by
thread 248 in httpd__PID__14780__Date__08_14_2012__Time_12_50_00PM__485__Thread
Exit.dmp
Impact of this lock
5.43% of threads blocked
(Threads 150 154 158 170 174 198 202 206 210 214 218 220 222 226 228 230 234
236 238 242 246 247 250 252 254 256 258 260 262 266 274 276 280 282 288 292 322
330 334 338 374 378 432 809)
The following functions are trying to enter this critical section
php5ts!ts_resource_ex+48
The following module(s) are involved with this critical section
C:\wamp\bin\apache\Apache2.2.22\bin\php5ts.dll from The PHP Group
It appears that phpts grinds to death when attempting to assign new memory fast
enough to deal with a flood.
------------------------------------------------------------------------
[2011-12-19 02:29:24] missiontcomputers at hotmail dot com
Description:
------------
Crash when reaching over 1000 requests. This has been causing me for nearly 2
years now.
Thread 4 - System ID 3472
Entry point msvcr90!_endthreadex+6f
Create time 19/12/2011 02:07:51
Time spent in user mode 0 Days 0:0:7.20
Time spent in kernel mode 0 Days 0:0:5.756
Function Arg 1 Arg 2 Arg 3 Source
php5ts!zend_register_internal_class_ex+b87 03bfab78 63f0eb94
01b63b78
php5ts!_efree+2e 01b63b78 05c50a20 63f13e97
php5ts!_zval_ptr_dtor+54 05c509ec 05c509c8 044fe9c0
php5ts!zend_hash_destroy+27 05bc48b0 03bcfa68 72ba1201
php5ts!zend_object_std_dtor+2b 044fe9c0 03bcfa68 000000e0
php_mysqli!php_clear_mysql+d1 044fe9c0 03bcfa68 00000000
php5ts!zend_objects_store_free_object_storage+9c 03c0d2a4 03bcfa68
71113b4e
php5ts!shutdown_executor+2fe 03bcfa68 03bcfa68 63e8cc2e
php5ts!zend_deactivate+91 03bcfa68 03bcfa68 00000000
php5ts!php_request_shutdown+31f 00000000 00000006 00b398a0
php5apache2_2!zm_info_apache+1801 0370abd8 0370abd8 00000000
libhttpd!ap_run_handler+28 0370abd8 0370abd8 0370abd8
libhttpd!ap_invoke_handler+be 00976ae8 00b849f8 01f5fefc
libhttpd!ap_die+28e 0370abd8 00000000 00b39c30
libhttpd!ap_psignature+13d2 00b849f8 00b849f8 00b849f8
libhttpd!ap_run_process_connection+28 00b849f8 009808a8 01f5ff44
libhttpd!ap_process_connection+33 00b849f8 00b848a0 00000000
libhttpd!ap_regkey_value_remove+e3e 00b849f0 498c7afb 00000000
msvcr90!_endthreadex+44 00000000 01f5ff94 7525ed6c
msvcr90!_endthreadex+d8 01c3cb08 01f5ffd4 770937f5
kernel32!BaseThreadInitThunk+e 01c3cb08 614562c5 00000000
ntdll!__RtlUserThreadStart+70 710d345e 01c3cb08 00000000
ntdll!_RtlUserThreadStart+1b 710d345e 01c3cb08 00000000
PHP5TS!ZEND_REGISTER_INTERNAL_CLASS_EX+B87In
httpd__PID__7580__Date__12_19_2011__Time_02_18_45AM__736__Second_Chance_Exceptio
n_C0000005.dmp the assembly instruction at
php5ts!zend_register_internal_class_ex+b87 in
C:\WampDeveloper\Components\Php\php5ts.dll from The PHP Group has caused an
access violation exception (0xC0000005) when trying to read from memory
location
0x49de7bf0 on thread 4
Module Information
Image Name: C:\WampDeveloper\Components\Php\php5ts.dll Symbol Type: PDB
Base address: 0x63e80000 Time Stamp: Tue Aug 23 10:59:32 2011
Checksum: 0x005b0c63 Comments:
COM DLL: False Company Name: The PHP Group
ISAPIExtension: False File Description: PHP Script Interpreter
ISAPIFilter: False File Version: 5.3.8
Managed DLL: False Internal Name: PHP Script Interpreter
VB DLL: False Legal Copyright: Copyright © 1997-2010 The PHP Group
Loaded Image Name: php5ts.dll Legal Trademarks: PHP
Mapped Image Name: Original filename: php5ts.dll
Module name: php5ts Private Build:
Single Threaded: False Product Name: PHP
Module Size: 5.76 MBytes Product Version: 5.3.8
Symbol File Name: C:\php-debug-pack-5.3.8-Win32-VC9-x86\php5ts.pdb Special
Build: &
Test script:
---------------
None available sorry.
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=60556&edit=1