【发布时间】:2011-03-28 17:37:55
【问题描述】:
我有一个 .NET 程序,它在 CLR JIT 中崩溃,出现内部堆栈溢出和内存不足错误,但仅在运行时从 PowerShell 作业内部。
我假设将其作为 powershell 作业运行会施加某种资源或安全限制,从而导致 .NET CLR 发疯。
我能得到的最明确的线索是,其中一个错误曾经表现为 HRESULT 的异常,HRESULT 是 ERROR_COMMITMENT_LIMIT(页面文件已用尽),尽管页面文件和内存。其他时候,这些错误发生在程序的完全任意和无辜的地方。
我如何诊断到底出了什么问题,违反了哪些限制?是否有 API 可以获取流程所受的所有限制?或者有没有办法拦截或记录因安全或配额限制而失败的 WinAPI 调用?我什至可以使用 WinDbg 来完成这项任务,但我不知道如何使用它来完成这项任务。
【问题讨论】:
-
作业以什么用户身份运行?另外,您在事件日志中是否有任何有趣的错误?尝试附加调试器,加载足够的符号,也许您可以从异常中获得良好的调用堆栈。
标签: .net windows security winapi debugging