天道酬勤,学无止境

与 ntdll.dll 相关的无法解释的崩溃(Unexplained crashes related to ntdll.dll)

问题

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

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 

正如你所看到的,我得到了这个:

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

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

更新:由于上述原因,我已经到了应用程序在启动时崩溃的地步。 它到达 MainWindow 构造函数的末尾(它是一个 WPF 应用程序),在白色屏幕上停留大约 10 秒钟,然后死亡。 我已经回滚到该软件的旧版本并重现了这种行为。 我也将它移到另一台机器上,但没有看到这种行为,所以我目前的理论与评论中所说的一致 - 某些东西损坏了堆,只有在重新启动时才会被清除。

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

GDI+ 中发生一般错误

所以这就是我今天要狩猎的东西。 有趣且令人不安的是,该应用程序每次启动时都会崩溃,即使在重新启动后也是如此。 此时在其他机器上不会发生相同的行为。

回答1

要调试此类系统内部问题,我建议您尝试使用 Process Monitor。

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

在此处输入图片说明

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

回答2

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

char * str;
strcpy(str, "Hello");

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

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

标签

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • Unexplained crashes related to ntdll.dll
    I have an application that I've written that crashes intermittently, but I'm unable to capture an exception at the application layer. I always get an entry in the event log but doesn't give me much info: 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
  • 安装IE9后,Visual Studio 2012崩溃(错误模块ntdll.dll)(Visual Studio 2012 Crashes after installing IE9 (Faulting Module ntdll.dll))
    问题 好的.... 自从Visual Studio RTM在我的工作计算机上发布以来,我一直在运行它。 上周五,我安装了IE并将其更新至版本9,以测试JavaScript问题。 安装IE9并重新启动计算机后,Visual Studio 2012不再起作用,它将打开并显示开始页面约一秒钟,然后崩溃。 我尝试了以下失败: 恢复为IE8-仍然崩溃运行devenv / SafeMode-仍然崩溃运行devenv / ResetSettings-仍然崩溃修复VS2012-仍然崩溃完全卸载VS2012并重新安装-仍然崩溃完全卸载VS2012,删除所有VS2012文件夹和注册表项,然后重新安装-仍然崩溃 (重新)更新为IE9,卸载vs2012并重新安装-仍然崩溃 (每一个细致的步骤后无数重新启动) PS我无法运行“系统还原”,因为该操作“已被您的管理员禁用”,如果我可以使用的话,该操作将在上述步骤4之前进行... 当我运行devenv(是否使用安全模式)时,在应用程序事件日志中得到以下信息: Faulting application name: devenv.exe, version: 11.0.50727.1, time stamp: 0x5011ecaa Faulting module name: ntdll.dll, version: 6.1.7601.17725, time stamp
  • 为什么 ntdll.dll 会导致我的 C++ 可执行文件崩溃?(Why is ntdll.dll crashing my c++ executable?)
    问题 我无法让 Visual C++ 可执行文件工作,应用程序崩溃,这是我在事件查看器中看到的。 Faulting application name: submit.exe, version: 0.0.0.0, time stamp: 0x50a3cce7 Faulting module name: ntdll.dll, version: 6.1.7601.17514, time stamp: 0x4ce7ba58 Exception code: 0xc0000374 Fault offset: 0x000ce653 Faulting process id: 0x8fc Faulting application start time: 0x01cdc2a3da4f2997 Faulting application path: c:\submit.exe Faulting module path: C:\Windows\SysWOW64\ntdll.dll Report Id: 1813823a-2e97-11e2-8675-000c29229191 在旧版本的 Visual Studio 中编译的可执行文件可以工作,但我在使用 2008 或 2010 等较新的 VS 编译的可执行文件时出现错误。请指教 回答1 解决此类问题可能是一个真正的挑战……尤其是当您不熟悉代码库时。
  • 为什么 JVM 会因为 NTDLL.DLL 而在 Windows Server 2012 上随机崩溃?(Why does JVM randomly crashes on Windows Server 2012 due to NTDLL.DLL?)
    问题 我的生产服务器偶尔会崩溃 java.exe 服务,因此 myApplication Server Glassfish 4.1。 它随机发生,到目前为止我找不到解释这种行为的理由。 检查 Win Server 2012 事件查看器,表明应用程序错误是由于与 NTDLL.DLL 冲突。 在下面,我发布了这些崩溃之一后收集的转储: Version=1 EventType=APPCRASH EventTime=130971776990222439a ReportType=2 Consent=1 ReportIdentifier=60c166c2-ba16-11e5-8100-22000afdaf63 IntegratorReportIdentifier=60c166c1-ba16-11e5-8100-a22000afdaf63 NsAppName=java.exe Response.type=4 Sig[0].Name=Application Name Sig[0].Value=java.exe Sig[1].Name=Application Version Sig[1].Value=8.0.650.17 Sig[2].Name=Application Timestamp Sig[2].Value=56145db1 Sig[3].Name=Fault Module Name Sig
  • Visual Studio 2010 反复崩溃(Visual Studio 2010 crashes repeatedly)
    问题 我已经运行 Visual Studio 2010(官方版本)有一段时间了。 最近,在我 8 小时的工作日内,VS 会崩溃 10 多次。 在 VS2008 中,处理大型 Xaml 文件时崩溃很常见,虽然我在 VS2010 中遇到过一些崩溃,但在调试、启动调试器、停止调试器和编辑代码时的其他随机时间时会发生崩溃。 我查看了问题报告,我发现最常出现的问题是: 描述错误的应用程序路径:C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe 问题签名问题事件名称:APPCRASH 应用程序名称:devenv.exe 应用版本:10.0.30319.1 应用时间戳:4ba1fab3 故障模块名称:ntdll.dll 故障模块版本:6.1.7600.16385 故障模块时间戳:4a5bdb3b 异常代码:c0000005 异常偏移:0002e23e 我正在运行 Windows 7 (x64)。 希望有人遇到过这个问题并找到了解决方案。 我打算重新安装VS2010。 希望这能解决问题。 回答1 您是否认为您安装了任何可能导致频繁崩溃的额外扩展? 你可以试试 Devenv.exe /SafeMode 以安全模式启动。 你也可以试试 Devenv.exe /Log 这将记录所有活动。
  • 在 Windows 上第二次使用时 libxml2 崩溃(libxml2 crash on second use on Windows)
    问题 我一直在使用 libxml2 推送解析 (SAX) 来解析传入的 XML 流,这第一次运行良好,但每次都在第二次尝试时崩溃,我的代码如下所示: xmlSAXHandler saxHandler; memset(&saxHandler, 0, sizeof(m_SaxHandler)); xmlSAXVersion(&saxHandler, 2); saxHandler.initialized = XML_SAX2_MAGIC; // so we do this to force parsing as SAX2. saxHandler.startElementNs = &startElementNs; saxHandler.endElementNs = &endElementNs; saxHandler.warning = &warning; saxHandler.error = &error; saxHandler.characters = &characters; xmlParserCtxtPtr pSaxCtx = xmlCreatePushParserCtxt(&m_SaxHandler, this, 0, 0, 0); 然后我使用xmlParseChunk()输入 XML 流并使用回调来处理数据,一旦解析完成,我调用xmlFreeParserCtxt(pSaxCtx
  • Windows 10 特定的崩溃调用 LeaveCriticalSection(Windows 10 specific crash on call LeaveCriticalSection)
    问题 我在 Windows 10 上遇到了线程同步和关键部分的问题。 在这种情况下,应用程序将崩溃: 应用程序有两个线程。 线程 1 使用对象 m_CS 调用 EnterCriticalSection 线程 2 然后尝试进入相同的临界区线程 1 使用 TerminateThread 终止线程 2 线程 1 调用 LeaveCriticalSection 在我能够测试的以前的 Windows 版本(7、8、8.1)中,这可以正常工作。 线程 2 终止,线程 1 无一例外地离开临界区。 在 Windows 10 上,当线程 1 离开临界区时,应用程序会因访问冲突而崩溃。 它仅在另一个线程在等待 EnterCriticalThread 时终止时发生。 查看堆栈跟踪,它看起来像这样(顶部的最新帧): RtlpWakeByAddress RtlpUnWaitCriticalSection RtlLeaveCriticalSection 我花了很多时间来调试这个问题。 在我的情况下,当调用 LeaveCriticalSection 时,m_CS 完全没问题。 我调试并花了一些时间来分析ntdll.dll函数的反汇编代码。 似乎对象在执行 RtlpUnWaitCriticalSection 期间在某处损坏,然后在发生崩溃时传递给 RtlpWakeByAddress。 基本上 ntdll.dll
  • C++ - std::thread 在执行时崩溃(C++ - std::thread crashes upon execution)
    问题 我正在使用 VS2012,我无法在程序中执行线程而不崩溃。 需要注意的是,我的程序包含OpenGL和SOIL。 我只是在我的一个函数中调用一个空白线程,一个没有语句的函数,它立即崩溃: void service(){ } /* Connect to server */ void connectToServer(){ cout << "~CLIENT~\n" << endl; std::thread serverConnect(service); } 当程序调用connectToServer()它会在调用语句std::thread serverConnect(service); 具有以下调用堆栈: msvcr110.dll!_crt_debugger_hook(int _Reserved) Line 60 C msvcr110.dll!_call_reportfault(int nDbgHookCode, unsigned long dwExceptionCode, unsigned long dwExceptionFlags) Line 152 C++ msvcr110.dll!abort() Line 90 C msvcr110.dll!terminate() Line 96 C++ IRC.exe!connectToServer() Line 449 C++ IRC
  • MySQL 崩溃(“某些指针可能无效并导致转储中止”)(MySQL crashes (“Some pointers may be invalid and cause the dump to abort”))
    问题 我有一个名为“tweets”的 5GB MySQL 数据库,我需要从中访问表“searchresults”。 但是,当我对其执行查询或创建转储时,MySQL 服务器(在 Windows 10 上运行)一直崩溃并在同一行出现相同的错误。 例如,如果我尝试使用以下命令转储数据库: C:\xampp\mysql\bin>mysqldump.exe --user root --force tweets > D:\secondtry.sql 我在 cmd.exe 窗口中一遍又一遍地收到以下错误消息,其中包含完全相同的行: mysqldump.exe: Error 2013: Lost connection to MySQL server during query when dumping table `searchresults` at row: 5222907 mysqldump.exe: Couldn't execute 'SELECT engine FROM INFORMATION_SCHEMA.TABLES WHERE table_name = 'stats'': MySQL server has gone away (2006) mysqldump.exe: Couldn't execute 'SET SQL_QUOTE_SHOW_CREATE=1': MySQL
  • 程序仅在发布版本时崩溃-如何调试?(Program only crashes as release build — how to debug?)
    问题 我这里遇到的是“薛定inger之猫”类型的问题-我的程序(实际上是我程序的测试套件,但仍然是一个程序)崩溃了,但仅当在发布模式下构建时才发生崩溃,并且仅当从命令行启动时才崩溃。 通过穴居人调试(即到处都是讨厌的printf()消息),我确定了代码崩溃的测试方法,但是不幸的是,实际的崩溃似乎发生在某些析构函数中,因为我看到的最后一条跟踪消息在其他执行干净的析构函数。 当我尝试在Visual Studio中运行该程序时,它不会崩溃。 从WinDbg.exe启动时也是如此。 仅在从命令行启动时才发生崩溃。 顺便说一句,这是在Windows Vista下发生的,不幸的是,我现在无法使用XP计算机进行测试。 如果我可以让Windows打印出堆栈跟踪信息,或者可以像终止程序一样干净地终止程序,那将是非常不错的选择。 是否有人对我如何在此处获取一些更有意义的信息以及希望修复此错误有任何建议? 编辑:问题确实是由越界数组引起的,我将在本文中对此进行更多描述。 感谢大家对发现此问题的帮助! 回答1 在我见过或听说过的100%的情况下,C或C ++程序在调试器中运行良好,但在外部运行时失败,其原因一直是在函数局部数组的末尾写入。 (调试器将更多内容放到了堆栈上,因此您不太可能覆盖重要的内容。) 回答2 当我遇到这样的问题之前,通常是由于变量初始化引起的。 在调试模式下,变量和指针会自动初始化为零
  • 是否存在与Windows 7内核符号有关的已知问题?(Is there a known issue relating to Windows 7 Kernel Symbols?)
    问题 我有几台Windows 7计算机,我无法读取它们的内存转储。 我发现一些我怀疑可能与之相关的东西,但并不肯定: https://twitter.com/aionescu/status/634028737458114560 我也发现了这一点:http://support.microsoft.com/kb/2528507 但是,在我的任何转储中都没有看到文档中给出的有关wow64exts的场景消息。 我现在也不能应用该修补程序来对其进行测试。 所以我只是在寻找更多信息或意见。 我可以打开任何其他操作系统转储以及我自己系统的Windows 7转储,但是还有其他2台运行Win 7的计算机,它告诉我我使用了错误的内核符号。 我尝试清除符号缓存,重新安装Windows SDK,还尝试在其他两台计算机上打开转储,结果相同。 如果很重要,则使用滚动锁定方法手动创建崩溃。 符号路径: SRV*c:\symbols*http://msdl.microsoft.com/download/symbols; 看到这些错误:后面跟着“引用的类型:nt!_KPRCB” 是否有人知道Twitter链接中Alex提到的问题,以及是否可能与我所看到的有关? 回答1 2015年10月22日更新: 随着Microsoft补丁程序发布日(2015-10-13)和KB3088195,符号再次可用。 但是
  • 为什么Environment.Exit()不再终止程序?(Why does Environment.Exit() not terminate the program any more?)
    问题 这是我几天前发现的,我从这个问题中得到了确认,它不仅限于我的机器。 最简单的复制方法是启动Windows Forms应用程序,添加按钮并编写以下代码: private void button1_Click(object sender, EventArgs e) { MessageBox.Show("yada"); Environment.Exit(1); // Kaboom! } Exit()语句执行后,程序失败。 在Windows窗体上,您会收到“错误创建窗口句柄”。 启用非托管调试可以使事情更加清晰。 COM模态循环正在执行,并允许传递WM_PAINT消息。 这对处置形式是致命的。 到目前为止,我收集到的唯一事实是: 它不仅限于与调试器一起运行。 如果没有,这也将失败。 同样非常糟糕的是,WER崩溃对话框显示了两次。 它与过程的复杂性无关。 wow64层是非常臭名昭著的,但是AnyCPU构建会以相同的方式崩溃。 它与.NET版本无关,4.5和3.5崩溃的方式相同。 退出代码无关紧要。 在调用Exit()之前先调用Thread.Sleep()并不能解决问题。 在Windows 8的64位版本上会发生这种情况,并且Windows 7似乎不会以相同的方式受到影响。 这应该是相对较新的行为,我之前从未见过。 我没有看到通过Windows Update交付的相关更新
  • Python程序因为ntdll.dll和QtGui4.dll崩溃(Python program crashes because of ntdll.dll and QtGui4.dll)
    问题 我设计了一个 Python 软件来从我的微控制器收集数据并制作实时绘图: 我的 GUI 中有十二个 matplotlib 动画(GUI 是用 PyQt 设计的)。 每个 matplotlib 动画都连接到一个 TCP 线程,通过该链接接收浮点数。 收到浮点数后,matplotlib 动画会向图中添加一个新点。 万岁,我们有现场情节! 我的软件可以平稳运行几秒钟(有时长达半分钟)。 然后灾难来袭。 Windows 提到“Python 已停止工作”。 我什至没有在终端窗口中打印异常报告(因为它通常会发生在我的所有其他错误中)。 Windows 询问我是否要调试 Python 应用程序,并建议为此使用 Visual Basic。 在 Visual Basic 中,我收到以下错误报告: Unhandled exception at 0x00007FFC596CE6FC (ntdll.dll) in python.exe: 0xC0000374: A heap has been corrupted (parameters: 0x00007FFC597222B0). Unhandled exception at 0x00007FFC56071F28 in python.exe: Microsoft C++ exception: std::bad_alloc at memory
  • Java 随机崩溃(可能的罪魁祸首:ntdll.dll?)(Java Randomly Crashing (Possible Culprite: ntdll.dll?))
    问题 我有一个用 Java 编写的程序,并使用 Windows 任务计划程序设置为每 5 分钟运行一次。 它执行“C:\Program Files\Java\jre7\bin\javaw.exe”并传递 jar 文件和所有命令行参数。 在大多数情况下,这运行得非常好,但时不时地,我会回到我的计算机并看到一个弹出窗口,说“Java(TM) Platform SE 二进制文件已停止工作”。 所以,起初,我认为这与我的代码有关,并添加了许多附加到文本文件的调试语句。 当它崩溃时,我检查了文本文件,其中没有列出未完成的运行。 然后我在我的主要方法中添加了一个打印语句: public static void main (String[] args) { System.out.println ("Main Method Called"); new Runner (args); } 然后我不断地从命令行运行 Java 程序,直到它崩溃,我注意到一些有趣的事情。 在崩溃时,它从未打印过“调用的主要方法”。 现在,我觉得这很有趣,因为这告诉我崩溃的不是我的 Java 程序,而是 Java 本身。 然后我继续向我的命令行添加详细的打印语句: java -verbose:class -verbose:gc -verbose:jni -jar ... 从那里,我继续这个过程,直到程序再次失败。 当它失败时
  • 如何调试 DLL 加载失败:对内存位置的访问无效(How to debug DLL load failed: Invalid access to memory location)
    问题 我有一个 MinGW64 编译的 DLL(python 模块),它在加载时出错: ImportError: DLL load failed: Invalid access to memory location DLL 仅链接到 64 位库(Dependency Walker 证实了这一点)并具有调试符号。 代码是相当复杂的 c++11(大约 30 个源文件),我无法将其一分为二。 我已经使用 MinGW64 成功编译和测试了其他模块,工具链工作正常。 网络上的一些人报告了使用 SSE2 指令(我的硬件支持这些指令,我没有明确使用它们)或从尚未初始化的全局变量中读取的代码的此错误(有一些函数带有__attribute__((constructor)) ,但根据我读过的内容,这些应该可以在 MinGW64 中正常工作;更新:我删除了所有构造函数以确保它不是原因 - 没有区别)。 分析错误来自何处的方法是什么? 我试过的: 当我在调试器中加载 DLL 时(使用ctypes.WinDLL(...) ),不幸的是,我只从 gdb 中获得了毫无意义的ctypes.WinDLL(...) - 显然,错误被ntdll.dll捕获并引发了信号,但它没有进一步提供关于错误来自何处的提示: Program received signal SIGTRAP, Trace/breakpoint trap
  • 服务和 Web 引用使 Visual Studio 崩溃(Service and Web Reference crashes Visual Studio)
    问题 当我将鼠标移到这两个中的任何一个上或右键单击其中任何一个时,Visual Studio 崩溃并在事件日志中显示以下消息: “错误”:0x01cb07b7f1bd036d 程序路径:C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe 模块路径:C:\Windows\SysWOW64\ntdll.dll 报告 ID:46c92fc7-73ab-11df -b110-002481038dc3 不幸的是,它在 Visual Studio 2010 和 Visual Studio 2008 中是一样的。我尝试修复安装,将所有设置重置为默认值并卸载我拥有的所有插件,但没有任何明显的结果。 有没有人知道发生了什么? 英语的突出部分: 错误的应用程序 devenv.exe,版本 9.0.30729.1,时间戳 0x488f2b50,错误的模块 ntdll.dll,版本 6.1.7600.16385,时间戳 0x4a5bdb3b,异常代码 0xc0000374,错误偏移量 0x000370 0x000000000000000000000000000000000000000000000000000 回答1 您是否安装了 ReSharper? 错误代码 0xC0000374 表示堆损坏
  • 在符号服务器中没有 Windows DLL 的确切版本的情况下进行事后故障转储调试(Post-mortem crash-dump debugging without having the exact version of a Windows DLL in the Symbol Server)
    问题 在我的应用程序中,每当我的应用程序崩溃时,我都会使用 MiniDumpWriteDump 函数(请参阅 dbghelp.dll)来编写崩溃转储文件。 我还使用符号服务器来存储我所有的可执行文件和 pdb 文件,这样每当客户向我发送故障转储文件时,调试器都会自动选择正确版本的可执行文件和调试信息。 我还将 Windows DLL(ntdll.dll、kernel32.dll、...)及其调试信息存储在符号服务器中(使用 SymChk)。 调试信息是从 Microsoft 的公共符号服务器获取的。 大多数情况下,这很完美,除非: 客户在其中一个 Windows DLL 中崩溃客户使用我没有放入符号服务器的 DLL 这是因为将每个 Windows DLL 的每种风格都存储在 Symbol Server 中是完全不可能的(尤其是每周补丁)。 因此,如果客户崩溃,例如 NTDLL.DLL 的 5.2.123.456 版本,而我没有将这个确切版本的 DLL 放入我的 Symbol Server,那么我就被卡住了。 甚至微软的公共符号服务器也无济于事,因为它只提供调试信息,而不是 DLL 本身。 我目前的解决方案是向客户询问他的 DLL,但这并不总是那么容易。 因此,我正在寻找更好的解决方案。 有没有办法让调试器显示正确的调用堆栈,或加载特定 DLL 的调试信息,即使您没有 DLL
  • objectWithID: 与 existingObjectWithID 之间无法解释的行为差异:(unexplained behavioural difference between objectWithID: versus existingObjectWithID:)
    问题 我了解这两个调用之间记录的差异。 但是,有没有人知道我注意到的以下观察到的行为的原因: 如果我有一个 parentContext 和一个临时 childContext,我使用 childContext 来编辑、插入和删除对象,如果使用 [childContext objectWithID:objectID]; 要检索存在于父上下文中的已知现有托管对象,它有时会给我一个错误的对象,该对象在被触发时失败并生成异常。 我理解 objectWithID: 将按照设计始终返回处于故障状态的对象,而不管给定的 objectID 是否存在实际的 managedObject。 但是,如果该对象实际上存在于父上下文中,我希望当访问任何属性时,该对象将始终从父上下文中成功检索(例如,将触发故障)而不会出现任何问题。 如果我使用 [childContext existingObjectWithID:objectID]; 我发现它确实总是成功。 作为记录,我已经关闭了子上下文的缓存,并且在调用 [childContext resetContext] 之后会发生同样的行为 - 所以这不是与父上下文不一致的旧缓存数据的人工制品。 在我看来,仅凭文档不足以解释这种行为。 我当然可以把它归结为经验,只是说“我现在知道总是使用 existingObjectWithID:当将对象 ID
  • 锁定 Windows 8.1 时 Visual Studio 2013 和 2015 崩溃(Visual Studio 2013 and 2015 Crash when locking Windows 8.1)
    问题 从此错误屏幕从锁定Win-L恢复后,Visual Studio 死机/崩溃。 这似乎仅在停靠到双显示器时才会发生。 问题详情显示: Problem signature: Problem Event Name: APPCRASH Application Name: devenv.exe Application Version: 14.0.23107.0 Fault Module Name: StackHash_f6a7 Fault Module Version: 6.3.9600.18007 Exception Code: c0000374 Exception Offset: PCH_1F_FROM_ntdll+0x0003CA2C OS Version: 6.3.9600.2.0.0.256.48 Locale ID: 1033 我有的: 视窗 8.1 Visual Studio 2013 和 2015 ReSharper 9 我尝试过的事情: 运行 DELL 命令更新。 驱动程序都是最新的。 升级显示驱动程序。 都是最新的。 使用 Visual Studio 2015。 以管理员身份运行。 根据此 MSFT 票证降级 NVIDIA 驱动程序。 我有一个 NVIDIA Quadro K1100M。 驱动程序版本从 10.18.13.5382 到 348.07 (9.18.13
  • 在 Windows 10 上打开解决方案时,Visual Studio 2013 崩溃(Visual Studio 2013 crashing when opening solution on Windows 10)
    问题 昨天我将我的 Windows 10 机器从 Insider Preview 升级到原始版本。 从那一刻起,当我尝试在 Visual Studio 2013 中打开解决方案(即使尝试创建新解决方案)时,程序崩溃并停止。 在事件查看器中,我发现崩溃是由于 ntdll.dll 中的堆损坏造成的,但这对我没有帮助。 该程序在安全模式下平稳运行,但在不处于此模式时,每次使用每种解决方案时都会崩溃。 发生这种情况时,我认为这应该是 Windows 10 和 VS2013 的常见问题,但我几乎一天都在网上找不到任何相关内容。 有没有其他人遇到过这样的问题或类似的问题? 任何建议将不胜感激。 注意:我使用 VS2013 和 Windows 10 Insider 预览版将近一个月,没有遇到任何问题。 这就是为什么我认为问题与 Windows 10 的正式发布有关。 回答1 您可能想尝试卸载 VS2013,然后在您的机器上重新安装它,这几乎适用于我在升级操作系统时遇到的所有错误。 另外,请确保您安装的是今年 7 月 20 日发布的 VS2013 Update 5,而不是旧的 VS2013 Update 4(如果您使用的是旧安装程序,则可能更早),因为这可能会解决兼容性问题,这很可能因为微软会让最新版本的软件与其最新的操作系统兼容。 更好的是,请尝试安装 Visual Studio 2015