Tom Tutko created LOG4NET-462:
---------------------------------

             Summary: ReadOnlyPropertiesDictionary not thread safe
                 Key: LOG4NET-462
                 URL: https://issues.apache.org/jira/browse/LOG4NET-462
             Project: Log4net
          Issue Type: Bug
    Affects Versions: 1.2.13
            Reporter: Tom Tutko
            Priority: Blocker


I have an application that runs as a windows service and spins up multiple 
AppDomains, each with their own loggers. I will often run into an issue where 
log4net appears to be causing one or more of the spun up AppDomains to not 
function properly. The relevant stack trace looks as follows:

System.InvalidOperationException: Collection was modified; enumeration 
operation may not execute.
  at System.Collections.Hashtable.HashtableEnumerator.MoveNext()
  at log4net.Util.ReadOnlyPropertiesDictionary.GetObjectData(Serialization 
info, StreamingContext context)
  at System.Runtime.Serialization.ObjectCloneHelper.GetObjectData(Object 
serObj, String& typeName, String& assemName, String[]& fieldNames, 
Object[]& fieldValues)

I have not been able to find the specific conditions to reproduce this but it 
happens often enough to be a huge problem. Looking at the log4net source, the 
ReadOnlyPropertiesDictionary.GetObjectData() method does a foreach over the 
InnerHashTable collection but there is nothing to stop that collection from 
being modified outside of that loop which is leading to the exception. I am not 
sure where in my code I would be doing anything that modified that collection 
indirectly but I do know that I push several things on and off of the 
LogicalThreadContext.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to