From: Dominik Psenner 
Sent: Monday, May 22, 2017 1:27 PM


   >> Please note that it is known that an application can also cause log4net 
to deadlock [3].
  >> [3] https://issues.apache.org/jira/browse/LOG4NET-298

  This particular application is not using any async/task code so not sure if 
other scenarios apply?

>> That's not true. All it needs is two threads and the well known dead lock 
>> candidates (waits, locks, ..). Does your web application pass objects on to 
>> the logging framework or are all >> arguments converted to immutable types 
>> (string, int, bool, ..)? If the logging framework calls ToString() of an 
>> object, beware!

I will have to do some investigating to see. However I know we log exceptions 
using log.Error(“Exception details”, ex) and it seems that every time this 
issue occurs it is happening while attempt to write an exception to the 
exception.log we have configured. Note that according to the stack trace it 
appears that the exceptions log is attempting to be rolled when the issue 
happens. I can also see now that our exceptions log is intermittently getting 
rolled whereas the other logs seem to be rolling as expected. One thing 
different about this logging configuration for exceptions is that we are using 
MinimalLock so that the file can be cleared.



  We have also installed Debug Diagnostics on the machine to take memory dumps 
and analyze the results and this made it really easy to determine the deadlock 
issue and provide the traces previously. If you have any suggestions for 
further diagnosing it would be appreciated. Was thinking that maybe I would 
have enabled log4net debugging?

>> That's a great starting point. Maybe something fishy jumps out that makes it 
>> easier. You could further investigate the behavior of your web application 
>> when the dead lock happened.

What suggestions might you have with regards to investigating the behavior of 
the web application when the deadlock happened?

>> Please note also that 1.2.11 is from 2011 and rather old. Can you give a 
>> newer log4net version a shot?

That was my next move actually. We use 1.2.13.0 on a few other projects and 
since we have been using reliably in those applications was going to see if 
moving to it made any difference. This project has a number of dependencies 
that are all compiled again 1.2.11.0 so was going to use the following approach.

Update to 1.2.13.0
Add this to web.config to redirect to 1.2.13.0
<runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">      
          <dependentAssembly>
            <assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a"/>
            <bindingRedirect oldVersion="0.0.0.0-1.2.13.0" 
newVersion="1.2.13.0"/>
          </dependentAssembly>      
        </assemblyBinding>
    </runtime>

Reply via email to