【发布时间】:2014-06-11 03:13:18
【问题描述】:
我最近从我们的一个客户那里收到了一些系统事件日志,该客户在虚拟机上运行我们的应用程序。
我注意到日志中有这些条目:
Description: The process was terminated due to an unhandled exception.
Framework Version: v4.0.30319
4/22/2014 5:05:28 PM;"Error";".NET Runtime";"1026";"Application: MyApp.exe
Report Id: d50fe7ab-ca61-11e3-9e10-6805ca17040a"
Faulting module path: C:\Windows\system32\KERNELBASE.dll
Faulting application path: C:\Program Files\MyApp\bin\MyApp.exe
Faulting application start time: 0x01cf5e44d3e971c2
Faulting process id: 0x13fc
Fault offset: 0x000000000000a49d
Exception code: 0xe0434352
Faulting module name: KERNELBASE.dll version: 6.1.7601.17514 time stamp: 0x4ce7c78c
4/22/2014 5:05:29 PM;"Error";"Application Error";"1000";"Faulting application name: MyApp.exe version: 1.2.1403.7002 time stamp: 0x5319d243
后面是一个以 "The directory name is invalid" 结尾的巨大 rdlc 堆栈跟踪
我一直试图确定Fault offset: 0x000000000000a49d Exception code: 0xe0434352 的真正含义。到目前为止,我只能说我可能与用户访问权限有关,KERNELBASE.dll 可能已损坏,或者可能是一些神秘的 Microsoft voodoo。
有人对这意味着什么有明确的答案吗?或者一个 msdn lync 详细解释这个? 我真的很想了解这个问题背后的全部细节。
【问题讨论】:
-
听起来您只是在执行文件 IO 时错过了应用程序中的一些异常处理。那将是第一个开始的地方。此外,您应该发布完整的堆栈跟踪,不要害羞。
-
@Ashigore 有问题的例外是表单 Microsoft.Reporting.WinForms.LocalProcessingException ,它基本上表示为导出提供的路径无效。这是没有意义的,因为就在调用 export 之前,我创建了所有必需的目录结构,并且没有任何问题的提示。
-
@memoryofadream 创建目录和写入文件之间是否可能存在竞争条件?也许在创建目录后插入循环检查以检查路径现在是否有效,然后再继续?
-
@Ashigore 感谢您的建议,但这不是问题。我的日志显示该文件夹已于去年 10 月成功创建,并且此导出功能从那时起一直在使用它而没有出现问题。我唯一的猜测是该应用程序没有足够的权限在此文件夹中创建文件。至少在这次运行期间不会。这就是我试图理解这些 CLR 代码的原因。我希望他们能对某些事情有所了解。
-
@leppie 感谢您的链接。我应该理解有问题的异常代码代表 AppDomain.UnhandledException 吗?