W.R. Dittmer created LOG4NET-393:
------------------------------------

             Summary: Using dynamic methods with log4net causes 
NullReferenceException in StackFrameItem
                 Key: LOG4NET-393
                 URL: https://issues.apache.org/jira/browse/LOG4NET-393
             Project: Log4net
          Issue Type: Bug
          Components: Core
    Affects Versions: 1.2.12
         Environment: VS2012, Windows 7
            Reporter: W.R. Dittmer
            Priority: Blocker


In our production code we use dynamic methods e.g. when using the factory 
pattern. We upgraded from 1.2.10 to 1.2.12 and encountered the following 
exception:

log4net:ERROR An exception ocurred while retreiving stack frame information.
System.NullReferenceException: Object reference not set to an instance of an obj
ect.
   at log4net.Core.StackFrameItem..ctor(StackFrame frame) in 
c:\Users\wilfred.dittmer\Documents\Visual Studio 
2012\Projects\Log4netLambaExpressionTest\log4net-1
.2.12-src\log4net-1.2.12\src\Core\StackFrameItem.cs:line 61

I created a test project (attached) which shows the exception occuring.
If the the method is:: {System.Object 
lambda_method(System.Runtime.CompilerServices.Closure)}
the one cannot access the DeclaringType. The code then tries to get the 
FullName of the null value which causes the exception.

According to: 
http://msdn.microsoft.com/en-us/library/system.reflection.emit.dynamicmethod.declaringtype.aspx

"DynamicMethod.DeclaringType: Gets the type that declares the method, which is 
always null for dynamic methods."

So it seems best to check if DeclaringType is null and if so leave the 
m_className set to 'NA'.




--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to