【问题标题】:A new guard page for the stack cannot be created无法为堆栈创建新的保护页
【发布时间】:2014-07-16 11:56:26
【问题描述】:

我们正在使用 C# 应用程序进行开发。

我们使用 COM 组件在 ImageViewer 中渲染和显示图像文件。 有时我们会收到奇怪的系统错误,因为“无法创建堆栈的新保护页面。” 出现此错误后,Application Get Exited。

有人知道为什么会出现这个错误吗?由于没有特定情况可以复制相同的错误。

谢谢

【问题讨论】:

  • 您的 COM 服务器因该站点的名称而崩溃。堆栈溢出异常总是令人讨厌的。如果您 100% 确定不是您的代码导致了它,请联系 COM 作者或供应商寻求支持。
  • 有什么方法可以从代码中捕捉到这个异常?
  • 如果这很容易处理,他们不会给这个网站起名字。不是,国有企业在 99.99% 的情况下都是致命的事故。它始终是一个编程错误,您需要找到错误。使用调试器。
  • 你解决了吗?根据我的调查,当非托管组件尝试将超过 256KB 的数据放入堆栈时,似乎会发生这种情况

标签: c#-4.0


【解决方案1】:

我遇到了同样的例外,但在不同的上下文中。我正在运行一个 Windows 服务来进行一些非常繁重的处理(这里没有 COM 对象)。

在我的例子中,我发现我的代码中存在内存泄漏,导致错误“无法创建堆栈的新保护页”。由于内存不足。

我知道你的问题现在已经 2 岁了。尽管我分享这个是为了帮助任何未来的读者。 VS 2015 现在有一个很好的工具来监控调试期间的内存使用情况。

-------- 编辑 ------

此异常的另一个常见情况是由于递归调用而耗尽堆栈。

【讨论】:

    【解决方案2】:

    可能是 Windows 虚拟内存设置得不够大,或者没有设置为系统管理。

    打开文件资源管理器>右键单击此电脑>属性,

    高级系统设置

    高级选项卡 > 性能部分 > 设置

    高级选项卡,点击更改

    选择一个驱动器,然后点击系统管理,不要忘记点击设置。

    在我记得我将页面文件大小更改为小尺寸之前,我的 VR 游戏崩溃了。显然我的系统需要超过 20 GB 的内存,这会导致崩溃。

    【讨论】:

      【解决方案3】:

      您在使用 Visual Studio IDE 时使用了太多繁重的进程

      【讨论】:

      • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
      猜你喜欢
      • 2012-06-28
      • 2014-06-30
      • 2011-07-30
      • 2021-09-11
      • 1970-01-01
      • 2017-08-28
      • 2019-12-13
      • 1970-01-01
      • 2017-06-30
      相关资源
      最近更新 更多