This is a tricky debug. You actually have at least 2 problems. 1 fatal and
1 annoying.
Fatal:
Basically what has happened is that thread 55 has actually crashed due to
memory (Heap) corruption. When it crashed, it went into a wait state while
it still owned a lock that protects the system (process) heap. As other
threads tried to access the process heap, they hung waiting for the lock to
be released. Since the owning thread was hung (if it hadn't hung, the
process would have crashed anyway) the process hung.
Annoying:
You are using the XmlHttp interface to do HTTP sends which is not good for
Server based applications. You must use ServerXmlHttp. The XmlHttp
interface is limited to 2 concurrent HTTP requests to the same server,
ServerXmlHttp does not have a hard limit. Grep your asp pages and make this
change. The methods are identical, so you need to only change the
interface. This does not impact the fatal issue above (unless by chance the
issue is in URLMON.dll).
Other things to do:
1) Upgrade MDAC to the latest version (www.microsoft.com/data)
2) Upgrade your script engines (msdn.microsoft.com/scripting)
If the problem persists, you will need to contact MS-Support for a more
in-depth debug for heap corruption.
Pat
So, what you need to do is identify the cause of the corrupted memory.
"Egbert Nierop (MVP for IIS)" <egbert_nierop RemoveThis @nospam.invalid> wrote in
message news:%230YZIvTDFHA.3908@TK2MSFTNGP12.phx.gbl...
> "theMav" <martin_devlin RemoveThis @hotmail.com> wrote in message
> news:e9e85c77.0502070503.4ad3b3c7@posting.google.com...
>> Hi,
>>
>> One of our busier sites has started hanging in the last week or so,
>> queries to the site just timeout, IIS itself doesn't crash but a
>> 'memory could not be 'read'' event appears in the System Event log.
>> The site has been partially re-written in .Net about 2-3 weeks ago but
>> there have been no changes to the server (hotfixes etc) since the most
>> recent security bulletin. Before this the site ran solidly for 3
>> years. The fault appears on both live server at random intervals of
>> between 24 hours and 5 days. We have been unable to replicate the
>> fault in test or dev.
>
> Looks like your session management cannot deal with this :<
>
> Why do you specify an ODBC connection string? Please use a SQL Oledb
> driver (see your connection string) which might not be the cause of the
> crash, but the more drivers are mixed in several environments, the more
> chance an untested situation happens.
> An other possibility is that MSXML3 does fault.
> My session manager product, only uses SQL OleDB and does not persist using
> XML but uses a binary format, the smallest code-footprint possible, and
> besides, it works great with .NET as well (but it needs aspcompat=true
> mode)...
>
> --
> compatible web farm Session replacement for Asp and Asp.Net
<font color=purple> > <a style='text-decoration: underline;' href="http://www.nieropwebconsult.nl/asp_session_manager.htm</font" target="_blank">http://www.nieropwebconsult.nl/asp_session_manager.htm</font</a>>
>
>
>> I attach an IIState trace (of the relevant dllhost.exe process) from
>> the most recent one, can anyone shed any light on where the problem
>> might be? Thread 55 has cashed and is blocking many of the others:
>>
>>
>> Opened log file 'C:\iisstate\output\IISState-1136.log'
>>
>> ***********************
>> Starting new log output
>> IISState version 3.4
>>
>> Sun Feb 06 20:40:19 2005
>>
>> Thread ID: 9
>> System Thread ID: 7c8
>> Kernel Time: 0:0:37.343
>> User Time: 0:0:11.140
>> Other information: Thread is waiting for a lock to be released.
>> Looking for lock owner.
>> Owning thread System ID: 930
>> Thread Type: Idle ASP thread
>> # ChildEBP RetAddr
>> 00 00fdfd1c 77f8822a ntdll!ZwWaitForSingleObject+0xb
>> 01 00fdfd90 77f8819b ntdll!RtlpWaitForCriticalSection+0x9e
>> 02 00fdfd98 77f855fd ntdll!RtlEnterCriticalSection+0x46
>> 03 00fdfdcc 77f856d0 ntdll!RtlpFreeDebugInfo+0x2d
>> 04 00fdfe0c 787c416b ntdll!RtlDeleteCriticalSection+0x82
>> 05 00fdfe6c 787c41c5 COMSVCS!AptReference::~AptReference+0xe7
>> 06 00fdfe7c 787c02c5 COMSVCS!AptReference::KillObject+0x35
>> 07 00fdfe84 787c0301 COMSVCS!CAsyncCall::~CAsyncCall+0x15
>> 08 00fdfe90 749f70ec COMSVCS!CAsyncCall::Release+0x21
>> 09 00fdfe9c 749f705d asp!CViperActivity::UnInit+0x20
>> 0a 00fdfeac 749f6fe7 asp!CSession::UnInit+0x50
>> 0b 00fdff04 74a253d4 asp!CSessionMgr::DeleteSession+0x108
>> 0c 00fdff24 749f7ddc asp!CSessionMgr::DeleteExpiredSessions+0xeb
>> 0d 00fdff34 6e5a5bee
>> asp!CSessionMgr::SessionKillerSchedulerCallback+0x22
>> 0e 00fdff7c 780085bc IISRTL!SchedulerWorkerThread+0x265
>> 0f 00fdffb4 7c57b388 MSVCRT!_endthreadex+0xc1
>> 10 00fdffec 00000000 KERNEL32!BaseThreadStart+0x52
>>
>>
>>
>>
>> Thread ID: 10
>> System Thread ID: 594
>> Kernel Time: 0:0:0.78
>> User Time: 0:0:0.46
>> Thread Type: HTTP Listener
>> # ChildEBP RetAddr
>> 00 0110ff50 7c5853d7 ntdll!ZwRemoveIoCompletion+0xb
>> 01 0110ff7c 6d702957 KERNEL32!GetQueuedCompletionStatus+0x27
>> 02 0110ffb4 7c57b388 ISATQ!AtqPoolThread+0x40
>> 03 0110ffec 00000000 KERNEL32!BaseThreadStart+0x52
>>
>>
>>
>>
>> Thread ID: 11
>> System Thread ID: 5a4
>> Kernel Time: 0:0:0.78
>> User Time: 0:0:0.171
>> Thread Type: HTTP Listener
>> # ChildEBP RetAddr
>> 00 0114ff50 7c5853d7 ntdll!ZwRemoveIoCompletion+0xb
>> 01 0114ff7c 6d702957 KERNEL32!GetQueuedCompletionStatus+0x27
>> 02 0114ffb4 7c57b388 ISATQ!AtqPoolThread+0x40
>> 03 0114ffec 00000000 KERNEL32!BaseThreadStart+0x52
>>
>>
>>
>>
>> Thread ID: 12
>> System Thread ID: 8e8
>
>> Thread ID: 57
>> System Thread ID: aa0
>> Kernel Time: 0:0:10.687
>> User Time: 0:0:27.750
>> Other information: Thread is waiting for a lock to be released.
>> Looking for lock owner.
>> Owning thread System ID: 518
>> Thread Type: Idle ASP thread
>> # ChildEBP RetAddr
>> 00 03eada6c 77f8822a ntdll!ZwWaitForSingleObject+0xb
>> 01 03eadae0 77f8819b ntdll!RtlpWaitForCriticalSection+0x9e
>> 02 03eadae8 00ae2861 ntdll!RtlEnterCriticalSection+0x46
>> WARNING: Stack unwind information not available. Following frames may
>> be wrong.
>> 03 03eadb30 00ae28d1 ODBC32!MpHeapAlloc+0x142
>> 04 03eadb50 00ae2b42 ODBC32!MpHeapAlloc+0x1b2
>> 05 03eae290 1f696a4b ODBC32!SQLDriverConnectW+0x1a5
>> 06 03eae2f4 1f6969e6 msdasql!CODBCHandle::OHDriverConnect+0x78
>> 07 03eae314 1f696847 msdasql!CHdbcNode::DriverConnect+0x20
>> 08 03eae358 03233c23 msdasql!CImpIDBInitialize::Initialize+0x161
>> 09 03eae384 03233ca9 oledb32!DllGetClassObject+0x1f6d
>> 0a 03eae3b4 03233361 oledb32!DllGetClassObject+0x1ff3
>> 0b 03eae45c 7878e947 oledb32!DllGetClassObject+0x16ab
>> 0c 03eae498 7878f45f
>> COMSVCS!CHolder::SafeDispenserDriver::CreateResource+0x45
>> 0d 03eae4e8 032339a4 COMSVCS!CHolder::AllocResource+0x3ef
>> 0e 03eae538 03233e51 oledb32!DllGetClassObject+0x1cee
>> 0f 03eae590 03233d8b oledb32!DllGetClassObject+0x219b
>> 10 03eae5f0 1f441bbb oledb32!DllGetClassObject+0x20d5
>> 11 03eae6e0 1f441b46 msado15!_ConnectAsync+0x96
>> 12 03eae6f0 1f441a8c msado15!ConnectAsync+0x1f
>> 13 03eae87c 1f4439ce msado15!CConnection::Open+0xb01
>> 14 03eaeaf8 6b614279 msado15!CConnection::Invoke+0xb5c
>> 15 03eaeb54 1f431446 vbscript!DllCanUnloadNow+0x8e24
>> 16 00000003 00000000 msado15!ATL::AtlInternalQueryInterface+0x57
>>
>>
>>
>>
>> Thread ID: 58
>> System Thread ID: b08
>> Kernel Time: 0:0:9.125
>> User Time: 0:0:2.343
>> Thread Type: Other
>> # ChildEBP RetAddr
>> 00 07cefe58 7c59a1af ntdll!ZwWaitForMultipleObjects+0xb
>> 01 07cefea8 77e1e9a5 KERNEL32!WaitForMultipleObjectsEx+0xea
>> 02 07ceff04 77e1e9f2 USER32!MsgWaitForMultipleObjectsEx+0x153
>> 03 07ceff20 70ac7adc USER32!MsgWaitForMultipleObjects+0x1d
>> 04 07ceff74 70ac7e95 SHLWAPI!CThreadPool::RemoveWorkItem+0x77
>> 05 07ceffac 70ac7f81 SHLWAPI!CThreadPool::Worker+0x2c
>> 06 07ceffb4 7c57b388 SHLWAPI!CThreadPool::WorkerThread+0x30
>> 07 07ceffec 00000000 KERNEL32!BaseThreadStart+0x52
>>
>>
>>
>>
>> Thread ID: 59
>> System Thread ID: c30
>> Kernel Time: 0:0:0.15
>> User Time: 0:0:0.15
>> Other information: Thread is waiting for a lock to be released.
>> Looking for lock owner.
>> Owning thread System ID: 4e4
>> Thread Type: Possible ASP page. Possible DCOM activity
>> Executing Page: Unable to locate ASP page
>>
>> No remote call being made
>> # ChildEBP RetAddr
>> 00 0868fd80 77f8822a ntdll!ZwWaitForSingleObject+0xb
>> 01 0868fdf4 77f8819b ntdll!RtlpWaitForCriticalSection+0x9e
>> 02 0868fdfc 77fcc74d ntdll!RtlEnterCriticalSection+0x46
>> 03 0868fe9c 77d33e21 ntdll!RtlFreeHeap+0x11b
>> 04 0868feac 77d33e67 RPCRT4!operator delete+0x12
>> 05 0868febc 77f830e7 RPCRT4!InitializeDLL+0x34
>> 06 0868fedc 77f837f5 ntdll!LdrpCallInitRoutine+0x14
>> 07 0868ff30 7c59b9f0 ntdll!LdrShutdownThread+0xa3
>> 08 0868ff98 7c590876 KERNEL32!ExitThread+0x53
>> 09 0868ffa0 77ab5060 KERNEL32!FreeLibraryAndExitThread+0x24
>> 0a 0868ffb4 7c57b388 ole32!CRpcThreadCache::RpcWorkerThreadEntry+0x34
>> 0b 0868ffec 00000000 KERNEL32!BaseThreadStart+0x52
>>
><!-- ~MESSAGE_AFTER~ -->
>> Stay informed about: IISState trace