[
https://issues.apache.org/jira/browse/LOG4NET-393?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
W.R. Dittmer updated LOG4NET-393:
---------------------------------
Description:
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)}
then 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'.
was:
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'.
> 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
> Attachments: Log4netLambaExpressionTest.zip
>
>
> 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)}
> then 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)