与ntdll.dll相关的无法解释的崩溃

Jes*_*per 6 c# windows dll ntdll

我有一个编写的应用程序间歇性崩溃,但是我无法在应用程序层捕获异常。我总是在事件日志中得到一个条目,但没有给我太多信息:

Faulting application name: BCS-UI.exe, version: 1.0.11.0, time stamp: 0x5c0edcbd
Faulting module name: ntdll.dll, version: 10.0.17134.376, time stamp: 0x4358e406
Exception code: 0xc0000374
Fault offset: 0x000d8829
Faulting process id: 0x39b0
Faulting application start time: 0x01d49161c80079a0
Faulting application path: C:\Gogs Local\SMR_Windows_UI\BCS-UI\BCS-UI\bin\Release\BCS-UI.exe
Faulting module path: C:\WINDOWS\SYSTEM32\ntdll.dll
Report Id: 1fbc4761-d256-44b0-99b0-4d9d758e4fe0
Faulting package full name: 
Faulting package-relative application ID: 

    - System 

  - Provider 

   [ Name]  Application Error 

  - EventID 1000 

   [ Qualifiers]  0 

   Level 2 

   Task 100 

   Keywords 0x80000000000000 

  - TimeCreated 

   [ SystemTime]  2018-12-11T15:12:28.109191000Z 

   EventRecordID 23318 

   Channel Application 

   Computer Leviathan 

   Security 


- EventData 

   BCS-UI.exe 
   1.0.11.0 
   5c0edcbd 
   ntdll.dll 
   10.0.17134.376 
   4358e406 
   c0000374 
   000d8829 
   39b0 
   01d49161c80079a0 
   C:\Gogs Local\SMR_Windows_UI\BCS-UI\BCS-UI\bin\Release\BCS-UI.exe 
   C:\WINDOWS\SYSTEM32\ntdll.dll 
   1fbc4761-d256-44b0-99b0-4d9d758e4fe0 
Run Code Online (Sandbox Code Playgroud)

如您所见,我得到了:

错误的模块路径:C:\ WINDOWS \ SYSTEM32 \ ntdll.dll。

我不确定那是什么或者它与崩溃有什么关系,但是我已经能够在多台机器上重现它,而如何确定原因或防止它的发生我却一头雾水。

更新:由于以上原因,我到了启动时应用程序崩溃的地步。它到达MainWindow构造函数(它是WPF应用程序)的末尾,在白屏上停留约10秒钟,然后死掉。我已回滚到该软件的旧版本,并重现了此行为。我也将其移至另一台计算机上,但未发现此行为,因此我的当前理论与注释中所说的相符-某些东西破坏了堆,并且只有在重新启动后才能清除。

更新2:在调试器外部运行时,我能够产生此错误消息,尽管在调试器中运行时,我无法使它停止于异常:

GDI +中发生一般性错误

这就是我今天要寻找的。有趣且令人不安的是,该应用程序每次启动时都会崩溃,即使在重新启动后也是如此。目前,在其他计算机上不会发生相同的行为。

Hai*_*n.Z 6

要调试此类系统内部问题,建议您尝试使用“ 进程监视器”

Process Monitor是Windows的高级监视工具,可显示实时文件系统,注册表和进程/线程活动。

在此处输入图片说明

基本上,您需要注意“ NAME FOUND”错误,这意味着缺少dll或注册表项,或者在监视器屏幕中存在任何其他可疑错误。


小智 6

上次我在我的应用程序中发生类似的崩溃,指向 ntdll.dll 作为故障模块,现实是我自己的代码有内存泄漏。我对未分配内存的字符串执行了 strcpy。就像是,

char * str;
strcpy(str, "Hello");
Run Code Online (Sandbox Code Playgroud)

在对我的代码进行了艰苦的演练后,我发现了这一点。

检查您的代码是否有泄漏。