[
https://issues.apache.org/jira/browse/LOG4NET-462?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Stefan Bodewig resolved LOG4NET-462.
------------------------------------
Resolution: Fixed
Fix Version/s: 1.3.0
Well, the inheritance hierarchy is pretty strange, PropertiesDictionary is a
subclass of ReadOnlyPropertiesDictionary - and happily modifies the internal
hashtable. To be honest I don't understand why it looks the way it does, in
particualr since PropertiesDictionary reimplements most of the methods anyway.
I think the problem should be fixed with svn revision 1675705 but for 1.3 we
may as well rethink the inheritance hierarchy anyway.
> 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
> Labels: thread-safety
> Fix For: 1.3.0
>
>
> 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)