问题标签 [fault-tolerant-heap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
12479 浏览

windows-7 - 什么是 Windows 7 的容错堆?

我想要一些关于它如何工作的技术信息,以及如何禁用或枚举与频繁崩溃的进程相关的容错堆垫片。Windows 7 是否有某种启发式方法来决定何时应用 FTH 垫片?

0 投票
5 回答
1454 浏览

c++ - 处理破坏堆的对象

在我的应用程序中,我正在创建一个非常像这样的对象:

一旦我即将关闭应用程序,我称之为:

此调用始终触发带有以下消息的断点:

Windows 已在 DesignerDynD.exe 中触发断点。

这可能是由于堆损坏,这表明 DesignerDynD.exe 或其已加载的任何 DLL 中存在错误。

这也可能是由于在 DesignerDynD.exe 具有焦点时用户按 F12。

输出窗口可能有更多诊断信息。

我无法修改 vhtGlove 类来修复堆栈的损坏,因为它是一个仅以头文件、lib 文件和 dll 的形式提供的外部库。

有没有办法以干净的方式使用这个类?


**** 编辑 ::: 我试图将事情精简到最低限度,但是我得到了相同的结果......在这里你有整个代码。

删除手套时仍然崩溃。


编辑#2 :: 如果我只是分配和删除 vhtCyber​​Glove 的一个实例,它也会崩溃。

有任何想法吗?

谢谢!

JC

0 投票
10 回答
37785 浏览

windows-7 - 如何关闭容错堆?

我最近在启动我的应用程序时开始在我的 Visual Studio 2005 输出窗口中看到这一行:
FTH: (7156): *** 容错堆 shim 应用于当前进程。这通常是由于以前的崩溃造成的。***

我尝试使用此处的说明关闭容错堆:http:
//msdn.microsoft.com/en-us/library/dd744764 (VS.85).aspx

我正在运行 Windows 7 64 位版本,因此我对 32 位和 64 位注册表进行了更改,并使用 32 位和Rundll32.exe 的 64 位版本。

但是,重新启动后,在尝试调试我的应用程序时,我仍然会得到容错堆!

这是一个真正的问题,因为它掩盖了我试图重现的错误,而且它也会降低性能。

有没有人有任何其他建议如何禁用容错堆?

0 投票
0 回答
809 浏览

windows - “容错堆”导致问题

由于 Windows 7 嵌入了“容错堆”,我的程序的性能有时会减半。关于 FTH 的信息不多,但这是我能够确定的。

  • 由于堆错误,通常会添加 FTH。我找不到一种方法来通知哪些错误导致它启用。

  • FTH 将按文件名将应用程序列入黑名单,因此即使您修复了错误,它仍然会嵌入到您的应用程序中,并且可能最终会消失(所以是的,即使是反复试验也无法告诉您是哪个错误导致它嵌入。随机甩尾似乎是唯一的答案)。如何做出这些决定是不透明的。我重命名了我的应用程序,FTH 消失了,性能恢复正常,所以它必须以某种方式跟踪文件名。

  • 有一种方法可以关闭 FTH 并防止它嵌入到我的 PC 上,但不能保证它不会嵌入到用户的 PC 上,从而将性能减半。

  • 几乎没有关于此功能的文档。我能找到的最好的是工程师在这里讨论它的一个小时长的视频:http: //channel9.msdn.com/shows/Going+Deep/Silviu-Calinoiu-Inside-Windows-7-Fault-Tolerant-Heap/

有谁知道有关此功能的更多详细信息以及如何将其从我的应用程序中删除?

0 投票
1 回答
1163 浏览

windows-8 - 如何关闭 Windows 8 上的容错堆?

这与关闭 FTH的问题相同,但在 Windows8 上,所以可能会有不同的答案。我已经尝试了那里的所有建议,但它仍然不会消失。我正在尝试在 64 位 Windows Pro 8 上调试 32 位程序。我尝试设置所有注册表项(并重新启动);这些通常只存在于 64 位部分,但我也将它们添加到 32 位部分。我尝试重命名 acxtrnal.dll 文件(32 位和 64 位版本)。我试过运行给出的 rundll32 建议。这些都没有停止 FTH 运行并破坏我的程序性能 - 一个需要 5 秒的操作现在需要几分钟。

我发现解决它的唯一方法是重命名 Visual Studio 和我的程序可执行文件 - 当它下一次开始崩溃时我将不得不再次这样做(它会 - 我正在开发!!)。

有任何想法吗?

0 投票
0 回答
310 浏览

c++ - 容错堆在开发 Qt C++ 应用程序时不好吗?

我正在编写 Qt C++ 应用程序,突然出现容错堆。一切正常,但在运行应用程序后,它会写入控制台:

FTH: (some_number): *** 容错堆 shim 应用于当前进程。这通常是由于以前的崩溃造成的。***

我读了一点关于它的信息,看起来它有助于避免崩溃。但我的应用程序不会只在我的电脑上使用。我需要在更多计算机上使用它。这个容错堆会应用在任何计算机上的应用程序上吗?在编码期间保持启用它有什么缺点吗?我应该禁用它吗?

感谢您的任何帮助。