w3wp.exe application pool crashing every 5 minutes

0

I had a classic ASP working site on Windows 2012. Everything worked ok. Since I moved it to 2016 machine (same DB, same files), w3wp.exe is crashing every few minutes ;-(

I did the dump and there seems to be this 2 errors every time there is a crash:

In w3wp__xxx.net(domain)(pool)__PID__8764__Date__06_06_2017__Time_05_57_31PM__204__Second_Chance_Exception_C0000374.dmp the assembly instruction at ntdll!RtlReportCriticalFailure+89 in C:\Windows\System32\ntdll.dll from Microsoft Corporation has caused a corrupted heap exception (0xC0000374) when trying to perform an unknown operation on memory location 0x00000000 on thread 48 Current NTGlobalFlags value: 0x0

The second one

A COM+ STA Activity Pileup has been detected in w3wp__xxx.net(domain)(pool)__PID__8764__Date__06_06_2017__Time_05_57_31PM__204__Second_Chance_Exception_C0000374.dmp. There is more than one activity bound to every COM+ STA ThreadPool thread.

I think the first one is the problem one, if I look at the thread under it:

Thread 48 - System ID 9056

Entry point msvcrt!_threadstartex Create time 6.6.2017 17:53:57 Time spent in user mode 0 Days 00:00:00.359 Time spent in kernel mode 0 Days 00:00:00.343

This thread is making a database operation using ADO.

The call to MSADO15!CCONNECTION::EXECUTE originated from vbscript!IDispatchInvoke2+76

ntdll!RtlReportCriticalFailure+89 ntdll!RtlpReportHeapFailure+32 ntdll!RtlpLogHeapFailure+9f ntdll!RtlFreeHeap+ac AcLayers!NS_FaultTolerantHeap::APIHook_RtlFreeHeap+3f70 msvcr120!free+1a msvcr120!__freetlocinfo+13e msvcr120!_updatetlocinfoEx_nolock+40 msvcr120!__updatetlocinfo+5f msvcr120!_LocaleUpdate::_LocaleUpdate+3e msvcr120!_input_l+10f msvcr120!vscan_fn+6a msvcr120!sscanf+19 myodbc5w!SQLGetCursorNameW+22887 myodbc5w!SQLGetCursorNameW+23c13 myodbc5w!SQLGetCursorNameW+169f0 myodbc5w!SQLGetCursorNameW+16399 odbc32!SetStmtAttr+5d1 odbc32!SQLSetStmtAttrW+91 msdasql!CKagRowsetProps::SetODBCOptions+1cd msdasql!CKagRowsetProps::FindCapableCC+575 msdasql!CImpICommandText::Execute+ddd msado15!CConnection::Execute+b1 msado15!_ExecuteAsync+1da msado15!ExecuteAsync+59 msado15!CQuery::Execute+fae msado15!CCommand::_Execute+18a msado15!CConnection::OpenRecordset+df msado15!CConnection::ExecuteWithModeFlag+622 msado15!CConnection::Execute+67 msado15!CConnection::Invoke+de2d vbscript!IDispatchInvoke2+76 vbscript!InvokeDispatch+4fa vbscript!CScriptRuntime::RunNoEH+f79 vbscript!CScriptRuntime::Run+dc vbscript!CScriptEntryPoint::Call+f3 vbscript!CSession::Execute+3a0 vbscript!COleScript::ExecutePendingScripts+14b vbscript!COleScript::SetScriptState+62 asp!CActiveScriptEngine::TryCall+2e asp!CActiveScriptEngine::Call+3d asp!CallScriptFunctionOfEngine+58 asp!ExecuteRequest+159 asp!Execute+237 asp!CHitObj::ViperAsyncCallback+425 asp!CViperAsyncRequest::OnCall+7e comsvcs!CSTAActivityWork::STAActivityWorkHelper+50 combase!EnterForCallback+142 combase!SwitchForCallback+1c6 combase!PerformCallback+b0 combase!CObjectContext::InternalContextCallback+10d combase!CObjectContext::DoCallback+31 comsvcs!CSTAActivityWork::DoWork+175 comsvcs!CSTAThread::ProcessQueueWork+68 comsvcs!CSTAThread::WorkerLoop+173 msvcrt!_callthreadstartex+25 msvcrt!_threadstartex+61 kernel32!BaseThreadInitThunk+24 ntdll!__RtlUserThreadStart+2f ntdll!_RtlUserThreadStart+1b

I can not figure out what does this mean... I use mysql 5.7 and myODBC, it is the same as on the old windows 2012.

It seems that ADo is failing or what? But not every time, as I have connections every second and the w3wp.exe is failing every few minutes, sometimes 3 times in a row, sometimes 20 minute without fail.

Can anybody share some ideas please, I'll have to go back to old server and I am quite desperate. Can the msado15.dll be broken on windows 2016? The files are ok, I checked with the windows shell file checker.

Is it possible to get a support from MS somehow? Free or payed...

Thanx

iis
windows-server-2016
asp-classic
asked on Server Fault Jun 6, 2017 by Jerry2

2 Answers

1

I have found the problem, thanx for the help. It wasn't my code... Oracle's myODBC since 5.3.4 is severly corrupted with heap memory problems ;-( Confirmed in a bug report from someone but Oracle doesn't fix it...

5.3.6 and up version produce this kind of problems, reverting to 2014 5.3.4 version and everything is OK again...

answered on Server Fault Jun 9, 2017 by Jerry2
0

Clearly you're dealing with a null pointer being passed to ADO. You need to look at the places your code calls ADO and make sure none of the parameters are null:

set rs=Server.CreateObject("ADODB.recordset")
If rs is Nothing then
  Response.Write("We have a problem with rs")
  Exit Sub
endif
If conn is Nothing then
  Response.Write("We have a problem with conn")
  Exit Sub
endif
rs.Open "Customers", conn

It's not too difficult to move apps from ASP to ASP.net if the apps don't generate a lot of dynamic HTML. Contact me directly and I can discuss this with you.

answered on Server Fault Jun 6, 2017 by nutcase • edited Jun 6, 2017 by nutcase

User contributions licensed under CC BY-SA 3.0