PHP Bugs  
php.net | support | documentation | report a bug | advanced search | search howto | statistics | login

go to bug id or search bugs for  

Bug #37483 PHP5TS.DLL causes w3svc crash and application pool termination
Submitted:17 May 2006 8:05pm UTC Modified: 22 Jul 2006 3:55pm UTC
From:jneill at gamedaytv dot com Assigned to:
Status:Bogus Category:IIS related
Version:5.1.4 OS:Windows 2003 SP 1
Votes:66 Avg. Score:4.8 ± 0.6 Reproduced:64 of 64 (100.0%)
Same Version:60 (93.8%) Same OS:61 (95.3%)
View/Vote Developer Edit Submission

[17 May 2006 8:05pm UTC] jneill at gamedaytv dot com
Description:
------------
We have been successfully using PHP 5.1.2 for several months in our
server environment.

Only upgrading PHP to 5.1.4, with no other software upgrades, has
resulted in frequent w3svc crashes and subsequent application pool
terminations.

The system log includes such errors as:

---
A process serving application pool 'Site1' terminated unexpectedly. The
process id was '5796'. The process exit code was '0xc0000005'.

A process serving application pool 'Site2' terminated unexpectedly. The
process id was '5212'. The process exit code was '0xffffffff'.

A process serving application pool 'DefaultAppPool' terminated
unexpectedly. The process id was '5824'. The process exit code was
'0xc0000005'.
---

We have run the IIS Diagnostics Debug Diagnostics Tool on these crashes,
which has resulted in the following report for each crash:

---
Type of Analysis Performed   Crash Analysis 
Machine Name   S76217 
Operating System   Windows Server 2003 Service Pack 1 
Number Of Processors   2 
Process ID   4736 
Process Image   c:\WINNT\system32\inetsrv\w3wp.exe 
System Up-Time   0 day(s) 04:18:05 
Process Up-Time   0 day(s) 00:31:08 

Thread 16 - System ID 2612
Entry point   msvcrt!_endthread+3b 
Create time   5/16/2006 5:31:43 PM 
Time spent in user mode   0 Days 0:0:0.0 
Time spent in kernel mode   0 Days 0:0:0.0 

Function     Arg 1     Arg 2     Arg 3   Source 
<Unloaded_php5ts.dll>+265c80     02a28890     00000000     00000000    
msvcrt!_endthread+ab     029e7580     00000000     00000000    
kernel32!BaseThreadStart+34     77bcb35a     029e7580     00000000    

In
w3wp__PID__4736__Date__05_16_2006__Time_05_31_45PM__95__Second_Chance_Ex
ception_C0000005.dmp an access violation exception (0xC0000005) occured
on thread 16 when another module attempted to call the following
unloaded module: php5ts.dll.

---

[17 May 2006 8:27pm UTC] tony2001@php.net
Thank you for this bug report. To properly diagnose the problem, we
need a backtrace to see what is happening behind the scenes. To
find out how to generate a backtrace, please read
http://bugs.php.net/bugs-generating-backtrace.php for *NIX and
http://bugs.php.net/bugs-generating-backtrace-win32.php for Win32

Once you have generated a backtrace, please submit it to this bug
report and change the status back to "Open". Thank you for helping
us make PHP better.

[18 May 2006 5:40pm UTC] jneill at gamedaytv dot com
I do not understand these instructions:

"When PHP crashes, click Cancel to debug the process. Now MSVC starts up
in Debug View. If you don't already see the call stack, go into the View
menu and choose Debug Windows &#8594; Call Stack."

When PHP crashes, we do not see a dialogue box with Cancel as an option,
and MSVC does not start up. All that happens is that we get an error in
the System Event Log that says something like:

---
A process serving application pool 'Site12' terminated unexpectedly. The
process id was '3392'. The process exit code was '0xc0000005'.
---

So how do I run the debugger?
[19 May 2006 4:04pm UTC] julien dot jacques at fingerprint dot fr
I have exactly the same problem.

Since i am on a production server, i can't install MSVC6. (it seems to
be replace with MSvisual express2005, which require to remove all sql
server prior to 2005. And i can't remove it on production.)
I try to add the .pdb to the DebugDiag symbol path but the file doesn't
match the dll. 

Is this because the debug pack is for php5.2.x?
Do i have to install php5.2.x-dev?
Where can i find the debug pack for php5.1.4?

I would be happy to help, but i don't know how to produce the backtrace
you require.
[24 May 2006 10:12pm UTC] tony2001@php.net
Please try using this CVS snapshot:

  http://snaps.php.net/php5.2-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5.2-win32-latest.zip

[29 May 2006 9:22am UTC] andrej at seznam dot org
I came up with exact the same crash analysis, even with the latest PHP
snapshot 5.2.0-dev dated May 28 2006 00:17:10:

---
Operating System   Windows Server 2003 Service Pack 1 
Number Of Processors   2 
Process ID   8060 
Process Image   c:\WINDOWS\system32\inetsrv\w3wp.exe 
System Up-Time   46 day(s) 02:14:04 
Process Up-Time   0 day(s) 00:22:07 

Thread 15 - System ID 7536
Entry point   msvcrt!_endthread+3b 
Create time   29.5.2006 0:13:40 
Time spent in user mode   0 Days 0:0:0.0 
Time spent in kernel mode   0 Days 0:0:0.0 

Function     Arg 1     Arg 2     Arg 3   Source 
<Unloaded_php5ts.dll>+268810     01626ce0     00000000     00000000    
msvcrt!_endthread+ab     0270aa78     00000000     00000000    
kernel32!BaseThreadStart+34     77bcb35a     0270aa78     00000000    

an access violation exception (0xC0000005) occured on thread 15 when
another module attempted to call the following UNLOADED module:
php5ts.dll.
---

It is weird, that at the moment of crash sometimes there is NO ACTIVITY
(= noone is browsing the page).
On the other hand, w3swc.exe process consumes too much CPU time,
compared to my observations from some time ago, when WebAppPools did not
crash.
The observed WebAppPool is isolated, I mean, only 1 web uses this pool.
[30 May 2006 4:37pm UTC] jneill at gamedaytv dot com
We tested the 5.2 snap on two of our Windows 2003 SP1 servers, and the
aforementioned crashes occur with more frequency than with PHP 5.1.4 on
the same servers.
[30 May 2006 5:59pm UTC] bruno dot delbono at gmail dot com
I too can replicate it on both the 5.2-devel (the current) and 5.1.4.
This is becoming a very irritating problems as w3wp.exe keeps crashing.

Windows 2003 SP1 running IIS 6 with PHP ISAPI. 

Faulting application w3wp.exe, version 6.0.3790.1830, faulting module
unknown, version 0.0.0.0, fault address 0x01b05c80.

WARNING - DebugDiag was not able to locate debug symbols for php5ts.dll,
so the information below may be incomplete.

In
w3wp__PID__4176__Date__05_25_2006__Time_09_57_31AM__495__Second_Chance_E
xception_C0000005.dmp an access violation exception (0xC0000005) occured
on thread 18 when another module attempted to call the following
unloaded module: php5ts.dll.

w3wp__PID__4176__Date__05_25_2006__Time_09_57_31AM__495__Second_Chance_E
xception_C0000005.dmp
Type of Analysis Performed   Crash Analysis 
Machine Name   DRAGOS 
Operating System   Windows Server 2003 Service Pack 1 
Number Of Processors   2 
Process ID   4176 
Process Image   c:\WINDOWS\system32\inetsrv\w3wp.exe 
System Up-Time   1 day(s) 06:47:17 
Process Up-Time   0 day(s) 01:19:11 

Thread 18 - System ID 2008
Entry point   msvcrt!_endthread+3b 
Create time   5/25/2006 9:57:30 AM 
Time spent in user mode   0 Days 0:0:0.0 
Time spent in kernel mode   0 Days 0:0:0.0 

Function     Arg 1     Arg 2     Arg 3   Source 
<Unloaded_php5ts.dll>+265c80     02e8a940     00000000     00000000    
msvcrt!_endthread+ab     02db8bf8     00000000     00000000    
kernel32!BaseThreadStart+34     77bcb35a     02db8bf8     00000000    

In
w3wp__PID__4176__Date__05_25_2006__Time_09_57_31AM__495__Second_Chance_E
xception_C0000005.dmp an access violation exception (0xC0000005) occured
on thread 18 when another module attempted to call the following
unloaded module: php5ts.dll.
[10 Jun 2006 11:31am UTC] hayden dot kirk at mobilepc dot co dot nz
I have the same error on Windows 2003 SP1 and Windows 2003 SBS SP1.
[12 Jun 2006 8:07pm UTC] mike at normi dot net
Can confirm this on Windows 2003 SP1, ISAPI extension is as unstable as
hell since 5.1.4.
[17 Jun 2006 11:47am UTC] gravityworksllc at hotmail dot com
I just installed mysql.5.0.22 and the w3wp errors stopped even though I
am using php 5.1.4.  Very strange...  But it works and it works well. 
Also using MYSql Admin 1.1 ( latest revision )  Installed php 5.1.4 then
MYSql 5.0.22 and then SQLAdmin 1.1.  No more errors from w3wp.exe and
anything.. Clean as a whistle...

Kind regards, 
Mynd
[19 Jun 2006 1:23pm UTC] tony2001@php.net
Please try using this CVS snapshot:

  http://snaps.php.net/php5.2-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5.2-win32-latest.zip

[19 Jun 2006 9:44pm UTC] jneill at gamedaytv dot com
The crashes continue even with this latest snapshot.
[20 Jun 2006 4:26pm UTC] gravityworksllc at hotmail dot com
I spoke too soon about version 5 5 and 1.1admin.  The crashes still
occur.  Man we need this fixed.   My logs are getting killed with errors
and warnings all day.. 

Hope you can get to the bottom of this soon.. I know you are trying.. 

Kind regards, 
Mynd
http://www.myndpollution.com
[20 Jun 2006 4:33pm UTC] tony2001@php.net
I have serious doubts that we can fix something we can't reproduce and
nobody can provide a piece of useful information.
[20 Jun 2006 5:27pm UTC] zbowden at vt dot edu
Tony, what information do you need that would be useful?
It looks to me (and I'm definately not a gd or windbg expert) that the
php5ts module is just unloading itself too soon. AFAIK, you won't be
able to get a meaningful backtrace (like I'm sure you're accustomed to
seeing) when the module has been unloaded. I looked over the msdn site
quite a bit trying to correlate some change that was made from 5.1.2 -
5.1.3 (and beyond) that relates to unloading but couldn't really find
anything. 

When you're trying to repro the problem do you have any extensions
enabled?
[20 Jun 2006 6:48pm UTC] jneill at gamedaytv dot com
Tony, I understand the predicament you are in as far as not being able
to reproduce the issue. However, you have 21 votes, 19 reported
reproductions of the issue, and several written accounts of this
problem; this tends to indicate that there is indeed a problem that
needs to be fixed, and the problem was introduced by changes that
occurred from 5.1.2 to 5.1.4.

I cannot generate any of the backtraces you require other than giving
you the errors I have already reported.

I can tell you that we only use PHP for the following on our
webservers:

1. Running PHP forums, Invision Power Board (www.invisionpower.com),
which utilize MS SQL 2005 databases.

2. Running a program called Flashloaded bannerRotator
(www.flashloaded.com) which utilizes a mySQL database.

3. Running test PHP scripts.

On each of the sites that we run PHP on, the errors are generated. It
does not appear that using MySQL or MSSQL or no database affects the
frequency of PHP crashes.

Is it possible for someone to procure a Windows 2003 SP1 box and run PHP
with similar forum or banner management software to see if they can
replicate the issue?
[21 Jun 2006 9:29am UTC] rusty at gmx dot de
Same problem here.
OS: Win2003SP1
PHP: 5.1.4
MySQL: 4.1.20

PHP-Applications running: Typo3, EQDKP, Wordpress...
[21 Jun 2006 1:15pm UTC] fcomparini at tvninteractivo dot cl
I have the same problem on 4 machines behind a load balancer (Windows
2003, IIS, PHP 5.1.4, MySQL 5.0.15). I was using PHP 5.0.5 and no
problems, but after upgrading I keep having this w3wp.exe crashing
problem. I downgrade to 5.0.5 and the problem disappear, although the
site run slow on heavy load.

I can't install debugging applications because these are my production
servers.....
[22 Jun 2006 2:31am UTC] pauldain at hotmail dot com
Having the exact same issue. I'll add that the same behavior occurs on
Windows XP Pro/IIS 5.1. In fact it is somewhat easier to reproduce.
Restart IIS, and the error dialog will be thrown every time.
[22 Jun 2006 9:37am UTC] flekj at atlas dot cz
Same problem using PHP 5.1.4 and 5.1.3.... We had to downgrade back to
5.1.2. There were no other changes made in configuration, only new
binaries copied to PHP directory. 

OS: Windows Server 2003 SP1 with latest system updates
IIS6 with ASP.NET v1.1.4322, Active server Pages and PHP5 ISAPI
extensions allowed
PHP versions mentioned above
[28 Jun 2006 11:15am UTC] gauthier at datas dot com
Same problem here with Windows Server 2003 SP1, IIS 6, .NET 1.1 , PHP
5.1.4 (tested also 5.1.3 & 5.2.0-dev) using ISAPI: start WWW Publishing
Service then load any PHP page (w/ phpinfo() directive for example) then
stop WWW Publishing Service -> the error is thrown. Had to downgrade to
PHP 5.1.2 to make the error go away...
[28 Jun 2006 3:13pm UTC] admin at dhosting dot co dot uk
Same issue 
Win 2003 SP1
PHP 5.1.4
MySQL 5.0.22
Reproduced on 5 servers, production and test environment, new installs
etc

Only way to resolve is to revert back to 5.1.2

Any news on a fix yet?
[28 Jun 2006 3:34pm UTC] tony2001@php.net
Please don't add any comments to this report if you have nothing to say
except for "me too".
[30 Jun 2006 6:50am UTC] danielm at deekora dot tv
I suspect the reason it occurs when no one is using the web site is
because the warning appears when the application pool is recycled.

After disabling automatic pool recycling the warning has not appeared.

to replicate the problem:
> Open a php site that uses the isapi module

> run the following script
======================================
'Recycle all application pools on server strComputer 
strComputer = "your server name in here"
Set objWMIService =
GetObject("winmgmts:{authenticationLevel=pktPrivacy}\\" & strComputer &
"\root\microsoftiisv2")

Set colItems = objWMIService.ExecQuery("Select * From
IIsApplicationPool")

For Each objItem in colItems
    objItem.Recycle
Next

wscript.echo "Done!"
======================================

> Check iis logs
[12 Jul 2006 6:29pm UTC] ferrante at aracnet dot com
These are related issues in the bug database that seem to be describing
the same problem:

Bug #36853 Worker process crashes after application pool recycle
Bug #33373 IIS worker Process continually restarts
Bug #37575 Faulting application w3wp.exe
Bug #35263 Crash during IIS Restart

We have the situation where the access violation appears when the
process is restarted. We followed the advice above to minimize error
messages by putting the PHP app into its own application pool and not
letting the app pool get recycled. However, on iisreset or stop/restart
of the application pool, the access violation is generated, even on the
snapshot code as recent as php5.2-win32-200607120630.

Data Execution Prevention (DEP) was implicated in Bug #36853 and on one
of our servers we were able to mask the error by added an DEP exception
for the w3wp.exe executible. However on another server this did not
work.

Bug #36853 also mentions changing the dynamic extensions load order
around, but in our case it did not seem to help since we are able to
reproduce the problem with PHP installed, no dynamic extensions enabled,
with a simple echo("hello world"); php file. If the app pool is recycled
or iisreset occurs, the php5ts.dll will generate an exception on
unload.

Bug #36853 also mentions that recompiling php from source with a Visual
Studio 2005 can fix the issue also. We have not yet tried that step.

Hopefully this information helps to resolve the issue. Thanks.
[12 Jul 2006 6:36pm UTC] ferrante at aracnet dot com
I am a software developer and would be happy to provide any additional
information or collect any other diagnostics that would help resolve
this issue, including providing access to a machine on which the problem
occurs that has tools such as WinDbg and the IIS "Debug Diagnostics
Tool" installed.

Please let me know how I can help out, and thanks for all your efforts.
[12 Jul 2006 9:49pm UTC] iburguer at hotmail dot com
Hi. I have the same issue here (development box, Windows XP Pro/sp2). I
have a Dr. Watson dump and log. Where should I send those files?  

Regards,
Ignacio
[13 Jul 2006 6:16am UTC] iburguer at hotmail dot com
Hi. It's quite hard to get a backtrace, because both php5isapi.dll and
php5ts.dll have been unloaded when the exception raises. So I ran
windbg, attached it to inetinfo.exe, run a test case, then stopped the
IIS service.
I noticed that php5ts.dll leaves some structures allocated in the Thread
Local Storage (which is not good, and may lead to this problem).
Anyway, after the exception occured, I reloaded the dll in the debugger,
and so I got this backtrace:

ChildEBP RetAddr  
11f4f90c 00403368 ntdll!DbgBreakPoint
11f4fadc 00406843 vrfcore!VerifierStopMessageEx+0x3d3
[d:\avrf\x86fre\base\avrf\avrf30\vrfcore\sdk.cpp @ 471]
11f4fb04 003b2139 vrfcore!VfCoreRedirectedStopMessage+0x86
[d:\avrf\x86fre\base\avrf\avrf30\vrfcore\stopredirect.cpp @ 103]
11f4fb34 003a8f19 vfbasics!VfBasicsStopMessage+0x1c9
[d:\avrf\x86fre\base\avrf\avrf30\providers\basics\basics.cpp @ 1045]
11f4fb98 003a8658 vfbasics!AVrfpCheckFirstChanceException+0x139
[d:\avrf\x86fre\base\avrf\avrf30\providers\basics\support.c @ 966]
11f4fba8 7c942dcf vfbasics!AVrfpVectoredExceptionHandler+0x18
[d:\avrf\x86fre\base\avrf\avrf30\providers\basics\support.c @ 313]
11f4fbc8 7c9377da ntdll!RtlCallVectoredExceptionHandlers+0x48
11f4fc40 7c90eafa ntdll!RtlDispatchException+0x19
11f4fc40 07a25c90 ntdll!KiUserExceptionDispatcher+0xe
11f4ff40 77c3a243 php5ts!xmlGetGlobalState+0xd0
11f4ff74 003a4e8f msvcrt!_endthread+0xaf
11f4ffb4 7c80b50b vfbasics!AVrfpStandardThreadFunction+0x6f
[d:\avrf\x86fre\base\avrf\avrf30\providers\basics\thread.c @ 553]
11f4ffec 00000000 kernel32!BaseThreadStart+0x37

Note: I'm also using Microsoft's Application Verifier. That's how I
found out about the TLS issue, and also is responsible for those vrfcore
and vfbasics functions that appear in the stack.

If you need further information, I'd be glad to help.
[13 Jul 2006 7:23am UTC] iburguer at hotmail dot com
One last thing. I removed php5isapi.dll from IISAPI filters (but left it
to handle the .php mapping in the "application settings" tab of the
resource properties in IIS).
The problem seems to be solved. I can run now phpinfo(), then stop the
w3svc service and nothing crashes.
I have no idea if I'm missing something having removed iisapi filter.

Greetings,
Ignacio Burgueņo
[17 Jul 2006 2:15am UTC] lascjr at bol dot com dot br
I have same problem, i has version 5.1.4, i have read and use this
instructions (http://bugs.php.net/bugs-generating-backtrace-win32.php, i
have tested with Last Snap 5.2
http://snaps.php.net/win32/php5.2-win32-200607162230.zip and
http://snaps.php.net/win32/php5.2-dbgpack-win32-latest.zip) but the
Debug donīt work, i have installed MSVC6, when PHP crashes the system
show:

---------------------------
w3wp.exe - Application Error
---------------------------
The instruction at "0x0c107dc8" referenced memory at "0x0c107dc8". The
memory could not be "read".

Click on OK to terminate the program
Click on CANCEL to debug the program
---------------------------
OK   Cancel   
---------------------------

I click at Cancel button to debug the process, but i only received the
new Msgbox with:

---------------------------
w3wp.exe - Application Error
---------------------------
The instruction at "0x0c107dc8" referenced memory at "0x0c107dc8". The
memory could not be "read".

Click on OK to terminate the program
---------------------------
OK   
---------------------------

I am not totally sure, but only downgrade to 5.0.3 solves my problem,
5.0.4 or newer are the same problem.

I use Windows Server 2003 Web Edition SP1, full patched, i only use
extensions php_mysql and php_mbstring

PHP Bug Team, please create the ambient for test, itīs very simple,
backtrace really donīt show nothing expect i related.
[22 Jul 2006 3:55pm UTC] sniper@php.net
We are aware of PHP's problems with stability under IIS and are working 
to rectify the problem. Unfortunatly your bug report does not contain
any
extra useful information and we already have enough bug reports open
about
this issue. If you can provide more detailed information such as a 
reproducable crash or a backtrace please do so and reopen this bug. 
Otherwise please keep trying new releases as we are working to resolve 
the problems on this platform
 
Thanks for your interest in PHP.


RSS feed | show source 

PHP Copyright © 2001-2009 The PHP Group
All rights reserved.
Last updated: Sat Nov 21 10:30:49 2009 UTC