【问题标题】:IIS crashes and restarts without dropping a mini-dumpIIS 崩溃并重新启动,而不会删除小型转储
【发布时间】:2011-09-11 06:35:01
【问题描述】:

我正在尝试调试一个棘手的场景...在 Web 表单页面上,当我单击提交时,Web 服务器遇到一些错误并重新启动 w3svc 进程。

我没有看到任何堆栈跟踪转储到事件日志。 Windows 应用程序日志中的唯一条目是:

错误应用程序名称:w3wp.exe,版本:7.5.7600.16385,时间戳:0x4a5bd0eb

故障模块名称:KERNELBASE.dll,版本:6.1.7600.16385,时间戳:0x4a5bdfe0

异常代码:0xe053534f

没有为我创建迷你转储以将 windbg 附加到...

任何想法如何调试我的问题?

【问题讨论】:

  • 我怀疑这是一个stackoverflow。能否调试到按钮点击处理程序,单步执行代码,看看堆栈是否越来越深?
  • 当我使用我的 VS2010 安装在本地运行时,我没有遇到所描述的问题。但是,我的 QA 团队可以经常得到它......所以我正在尝试使用 WinDBG 进行调试。我正在尝试按照您的建议进行调试...

标签: asp.net iis-7 windbg


【解决方案1】:

我怀疑你像这样循环调用

public string sMyText
{
   get {return sMyText;}
   set {sMyText = value;}
} 

然后你调用 sMyText

或类似的东西

protected override void OnLoad(EventArgs e)
{
  base.OnInit(e);
}

或类似的东西

Server.Transfer("TheSamePage.aspx");

在这种情况下,崩溃不是调用 minidump。 你能运行process explorer 看看你的池是否在吃cpu 直到崩溃?

【讨论】:

  • 类似...我发现问题出在一个私有方法中对 Page.Validate() 的调用,该私有方法由附加到 Web 控件的验证器调用
【解决方案2】:

我会使用Procdump 之类的东西来获取进程时的内存转储 终止并查找异常和调用堆栈。

-t 进程终止时写入转储。

仅供参考...您在 EventViewer 中看到的是Watson buckets,它告诉哪个应用程序和模块有未处理的异常。从您的日志看来,kernelBase是故障模块。

【讨论】:

    【解决方案3】:

    要为崩溃的应用程序创建内存转储,您可以使用 DebugDiag 或 adplus。要么将监视进程,并在崩溃发生时生成转储文件。 DebugDiag 还可以分析转储文件并生成问题报告(类似于 WinDbg 中的“!analyze -v”命令。)

    DebugDiag 可以下载here.

    您应该会找到随 Windows 调试工具一起安装的 adplus - 这是包含 WinDbg 的同一安装程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-22
      • 1970-01-01
      • 2021-09-16
      • 2015-05-12
      相关资源
      最近更新 更多