[ https://issues.apache.org/jira/browse/LOG4NET-403?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13810193#comment-13810193 ]
Dominik Psenner commented on LOG4NET-403: ----------------------------------------- The loggers should be static attributes or properties, otherwise they might get finalized by the GC when their reference counter is 0 (i.e. the containing object is finalized). Further, if these attributes or properties are not static the application may suffer of a severe performance penalty for every instantiation. Please close and mark the issue as invalid if making the attribute/property static solves your problems. > LocalDataStoreSlot exception when using log4net in Dispose method > ----------------------------------------------------------------- > > Key: LOG4NET-403 > URL: https://issues.apache.org/jira/browse/LOG4NET-403 > Project: Log4net > Issue Type: Bug > Components: Core > Affects Versions: 1.2.11 > Environment: Windows 7 64 bit, .Net Framework 4.5 > Reporter: PiotrG > Priority: Critical > > Setting ThreadContext property in Dispose method called by GC thread throws > Exception: > LocalDataStoreSlot storage has been freed > Stacktrace: > w System.LocalDataStore.GetData(LocalDataStoreSlot slot) > w System.Threading.Thread.GetData(LocalDataStoreSlot slot) > w log4net.Util.ThreadContextProperties.GetProperties(Boolean create) > w log4net.Util.ThreadContextProperties.set_Item(String key, Object value) > w xxx.Dispose(Boolean freeAlsoManagedObjects) > w xxx.Finalize() > Code: > private void Dispose(bool freeAlsoManagedObjects) > { > > if (_log.IsErrorEnabled) > ThreadContext.Properties["method"] = "Dispose"; // throws Exception > -- This message was sent by Atlassian JIRA (v6.1#6144)