I'm developing a Web site on my Windows Vista Ultimate (64-bit) workstation using IIS 7.0 locally for testing. At random times, I receive an "IIS Worker Process stopped working and was closed" error popup. I'm able to keep working on the site after that, so IIS seems to be spawning new worker processes without any trouble.
It appears from looking at the error logs that what is happening is that IIS is shutting down the worker process after a specified period of inactivity, as it is designed to do. So far, so good, but why is that causing an error?
The site is hosted on localhost port 8008 and uses PHP (ISAPI) and the URL Rewrite module, but is otherwise configured fairly simply. The relevant error log entries follow, in chronological order:
System log, 12:10:18 PM (Information, Event 5186, WAS):
A worker process with process id of '6288' serving application pool 'SDL' was shutdown due to inactivity. Application Pool timeout configuration was set to 20 minutes. A new worker process will be started when needed.
Application log, 12:10:20 PM (Error, Event 1000, Application Error):
Faulting application w3wp.exe, version 7.0.6002.18005, time stamp 0x49e023cf, faulting module ntdll.dll, version 6.0.6002.18005, time stamp 0x49e03824, exception code 0xc0000374, fault offset 0x000ab0bf, process id 0x1890, application start time 0x01ca0255c7b92db0.
System log, 12:10:24 PM (Warning, Event 5009, WAS):
A process serving application pool 'SDL' terminated unexpectedly. The process id was '6288'. The process exit code was '0xff'.
The error code in your app log (0xc0000374) is a heap corruption error. You could debug this further with a crash dump, but that is kind of a pain. You mentioned you were using an ISAPI DLL, so I would look for an updated version of that DLL that specifically supports IIS7.