.NET StringBuilder 中的意外 NullReferenceException

问题描述

在 .NET Framework 4.5.2 的 StringBuilder 上调用 AppendLine() 方法时,我遇到了一个奇怪的 NullPointerException。

异常轨迹如下图所示:

System.NullReferenceException:NullReferenceException 未将对象引用设置为对象的实例。
在 System.Text.StringBuilder.Append(String value)
在 System.Text.StringBuilder.AppendLine(String value)
......

应用程序的转储如下所示:

enter image description here

很明显,异常是由StringBuilder的m_ChunkChars字段引起的。

此外,在相关上下文中没有并发或反射操作。

我曾尝试分析StringBuilder的源代码,但最终没有找到任何可能的原因。

任何人都可以对可能导致这种情况的可能情况提出任何想法吗?

public void SomeLocalMethod()
{
    var log = new StringBuilder();
    //some operations
    log.AppendLine("Some log text.")
        .Append("Some log")
        .AppendLine("Some log");
}

代码很简单。我们在一个方法中构造了一个 StringBuilder 来记录多个操作。

我认为它不是线程安全问题的原因是这个 StringBuilder 是一个局部变量,并且没有在其方法之外传递引用。

此外,我们在系统日志中发现,此类错误在多个节点上是连续且频繁的,我认为这可能不是由对象初始化期间的意外访问引起的。

代码再次在 .NET framework 4.5.2 上运行。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)