Site comes to a full stop after recursion error in topicview

Sep 9, 2013 at 6:24 AM
Edited Sep 9, 2013 at 6:26 AM
Hi,

I'm trying to find a solution for this for the last week, but haven't been succesfull. My site runs fine for a couple of hours (sometimes shorter depending on the traffic) and then is beginnening to show "Internal Server Errors" on some requests, followed by a total shutdown. See the copy of the logs below.

It seems to start with an error in the TopicView. After that it keeps showing the error for "Recursive read lock acquisitions..." for the affected thread.

I'm not really sure it is ActiveForums, but it seems to be the source of this issue. It started with the migration to DNN 7.1.

Hope you guys can help.

Jeroen

...

This is the behaviour I was encountering:

___*** The issue seems to originate in the forummodule --> TopicView-OnLoad ***___
2013-09-08 12:33:02,210 [myserver][Thread:43][FATAL] DotNetNuke.Framework.PageBase - An error has occurred while loading page.
System.Threading.LockRecursionException: Recursive read lock acquisitions not allowed in this mode.
at System.Threading.ReaderWriterLockSlim.TryEnterReadLockCore(Int32 millisecondsTimeout)
at System.Threading.ReaderWriterLockSlim.TryEnterReadLock(Int32 millisecondsTimeout)
at System.Threading.ReaderWriterLockSlim.TryEnterReadLock(TimeSpan timeout)
at DotNetNuke.Collections.Internal.ReaderWriterLockStrategy.GetReadLock(TimeSpan timeout)
at DotNetNuke.ComponentModel.SimpleContainer.GetComponentType(Type contractType)
at DotNetNuke.ComponentModel.SimpleContainer.GetComponent(Type contractType)
at DotNetNuke.ComponentModel.AbstractContainer.GetComponentTContract
at DotNetNuke.ComponentModel.ComponentFactory.GetComponentTContract
at DotNetNuke.ComponentModel.ComponentBase2.get_Instance()
at DotNetNuke.Modules.ActiveForums.SettingsBase.RenderMessage(String Message, String ErrorMsg, Exception ex)
at DotNetNuke.Modules.ActiveForums.Controls.TopicView.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

___*** Then this ***___
2013-09-08 12:33:02,241 [myserver][Thread:43][FATAL] DotNetNuke.Web.Common.Internal.DotNetNukeHttpApplication - System.Web.HttpException (0x80004005): Request timed out.

___*** The thread is now corrupted and this error keeps coming back at every request of the IIS worker thread resulting in a display of internal error ***___

2013-09-08 12:33:25,522 [myserver][Thread:43][FATAL] DotNetNuke.Web.Common.Internal.DotNetNukeHttpApplication - System.Threading.LockRecursionException: Recursive read lock acquisitions not allowed in this mode.
at System.Threading.ReaderWriterLockSlim.TryEnterReadLockCore(Int32 millisecondsTimeout)
at System.Threading.ReaderWriterLockSlim.TryEnterReadLock(Int32 millisecondsTimeout)
at System.Threading.ReaderWriterLockSlim.TryEnterReadLock(TimeSpan timeout)
at DotNetNuke.Collections.Internal.ReaderWriterLockStrategy.GetReadLock(TimeSpan timeout)
at DotNetNuke.ComponentModel.SimpleContainer.GetComponentType(Type contractType)
at DotNetNuke.ComponentModel.SimpleContainer.GetComponent(Type contractType)
at DotNetNuke.ComponentModel.AbstractContainer.GetComponent[TContract]()
at DotNetNuke.ComponentModel.ComponentFactory.GetComponent[TContract]()
at DotNetNuke.ComponentModel.ComponentBase
2.get_Instance()
at DotNetNuke.Entities.Urls.RewriterUtils.OmitFromRewriteProcessing(String localPath)
at DotNetNuke.HttpModules.RequestFilter.RequestFilterModule.FilterRequest(Object sender, EventArgs e)
at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
Sep 9, 2013 at 9:07 PM
Edited Sep 9, 2013 at 9:07 PM
I think I found the answer myself.

I had the option "Use breadcrumb from skin" checked. This results in a recursive function where active forums tries to find the breadcrumb in the skin. Except in my case I use a custom breadcrumb. Active forums doesn't find anything and the recursive error occurs.

The problem is gone for nearly an hour now, so I'm hopefull...