- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个Internet Explorer扩展程序(BHO),可以在数千台计算机上很好地工作,但是在某些情况下,似乎会导致Flash因访问冲突而使iexplore.exe崩溃。我该怎么做才能避免这种冲突?
更多细节:
在一个客户的环境中,我们遇到一种情况,当使用Flash访问网站并关闭IE选项卡后,选项卡过程崩溃。仅当同时启用Flash和我的扩展程序且该文件在该公司环境之外的工作站上无法复制时,才会发生这种情况。如果我的扩展程序被配置为在该页面上不执行任何操作,则仍然会发生这种情况-即我的某些代码仍然可以执行,但执行得很少。
如果该网站不在“受信任的站点”中,则该选项卡在“保护模式”下运行,崩溃的结果是一个窗口,提示该网页要运行dw20.exe(即Watson博士)。
如果将网站添加到“受信任的站点”,则会将错误写入Windows应用程序事件日志,并且IE重新打开该选项卡,并带有一条小的信息栏消息,指出IE从崩溃中恢复了它。无论哪种方式都令人沮丧!用户确实不关心关闭标签页时进程是否崩溃,因此我很乐意采用一种解决方法,即不向用户显示错误消息并且标签页不会重新打开。
Windows应用程序事件日志说的不多,但确实说iexplore.exe进程因模块闪存故障而崩溃:
Error / Application Error / EventID=1000
Faulting application name: iexplore.exe, version 9.0.8112.16592, time stamp 0x544e95a7
Faulting module name: Flash32_13_0_0_214.ocx, version 13.0.0.214, time stamp 0x5359c422
Exception code: 0xc0000005
Fault offset: 0x00073678
Faulting application start time: 0x01d0099db319df49
Faulting application path: C:\Program Files\Internet Explorer\iexplore.exe
Faulting module path: C:\Windows\system32\Macromed\Flash\Flash32_13_0_0_214.ocx
ReportId: 0094988b-7591-11e4-93e6-6cf0492a8610
Flash32_13_0_0_214.ocx
强烈指出它是那里的错误,但我认为从理论上讲这可能是我的代码中的问题。我的扩展程序没有正在执行的非托管代码,所以不是那样的,所以我想不到我的扩展程序可以做的任何事情都可能导致AccessViolation。这留下了Flash中似乎完全可能的bug或我与IE中的COM对象进行交互的方式的问题。但是,除非我能指出特定且可复制的内容,否则Flash团队不太可能会调查此类错误报告,并且现在我无法在任何开发机上进行复制,因此效果不佳。即使是Flash错误,从客户的角度来看,这与我产品中的错误没有什么不同:我将其修复或将其产品卸载并保留Flash。
Marshal.FinalReleaseComObject(webBrowser)
和
GC.Collect()
。删除其中的一个或多个:也许GC或COM清理会破坏Flash的内存空间。
jscript9.dll
,而不是Flash ocx。他们还报告说在
ntdll.dll
上也看到了同样的情况,尽管我自己还没有看到。
Faulting application name: iexplore.exe, version: 9.0.8112.16575, time stamp: 0x53ee1acb
Faulting module name: jscript9.dll, version: 9.0.8112.16575, time stamp: 0x53ee1c49
Exception code: 0xc0000005
Fault offset: 0x00007264
Faulting process id: 0x1bb4
Faulting application start time: 0x01cfec57f247cb53
Faulting application path: C:\Program Files\Internet Explorer\iexplore.exe
Faulting module path: C:\Windows\System32\jscript9.dll
Report Id: 50b58f63-584b-11e4-bc66-6cf0492a8610
Faulting package full name: %14
Faulting package-relative application ID: %15
最佳答案
问题是,使用.Net,您几乎无能为力地使内存混乱。因此,除非您经常玩Api调用,否则很难在代码中引起错误。
在我看来,重新定位dll是最有前途的事情。也不要搞乱GCC,这似乎是一个很好的选择(而且,不仅在这种情况下,总是这样)。
另一个问题是,发生错误的不是您的模块,这是要认真考虑的问题:尝试访问另一个dll分配的内存区域的不是您的代码,而是他们的代码试图弄乱您的dll的内存空间。
也许您最好的选择是DW;通过保存转储,您可以遍历堆栈跟踪以查找导致问题的代码。再次回溯,您可以找到某个参数变为垃圾的时刻。最后,您可以使用此https://msdn.microsoft.com/en-us/windows/hardware/hh852365实时调试崩溃。为什么所有这些?好吧,因为如果您没有在dll中做任何奇怪的事情(例如手动进行malloc'ing),那么在.Net中,您就不会以任何方式弄乱内存,从而“在另一个dll中造成了0x05。 99%的原因是特定的IE及其特定的配置是一切的原因,因此,最快的解决方案是调试,查找有问题的代码,然后压缩所有信息并将其邮寄给MS。
关于.net - 如何更改我的IE扩展名以解决另一个模块(flash.ocx)崩溃的IE中的访问冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28347371/
我最近在我的机器上安装了 cx_Oracle 模块,以便连接到远程 Oracle 数据库服务器。 (我身边没有 Oracle 客户端)。 Python:版本 2.7 x86 Oracle:版本 11.
我想从 python timeit 模块检查打印以下内容需要多少时间,如何打印, import timeit x = [x for x in range(10000)] timeit.timeit("
我盯着 vs 代码编辑器上的 java 脚本编码,当我尝试将外部模块包含到我的项目中时,代码编辑器提出了这样的建议 -->(文件是 CommonJS 模块;它可能会转换为 ES6 模块。 )..有什么
我有一个 Node 应用程序,我想在标准 ES6 模块格式中使用(即 "type": "module" in the package.json ,并始终使用 import 和 export)而不转译为
我正在学习将 BlueprintJS 合并到我的 React 网络应用程序中,并且在加载某些 CSS 模块时遇到了很多麻烦。 我已经安装了 npm install @blueprintjs/core和
我需要重构一堆具有这样的调用的文件 define(['module1','module2','module3' etc...], function(a, b, c etc...) { //bun
我是 Angular 的新手,正在学习各种教程(Codecademy、thinkster.io 等),并且已经看到了声明应用程序容器的两种方法。首先: var app = angular.module
我正在尝试将 OUnit 与 OCaml 一起使用。 单元代码源码(unit.ml)如下: open OUnit let empty_list = [] let list_a = [1;2;3] le
我在 Angular 1.x 应用程序中使用 webpack 和 ES6 模块。在我设置的 webpack.config 中: resolve: { alias: { 'angular':
internal/modules/cjs/loader.js:750 return process.dlopen(module, path.toNamespacedPath(filename));
在本教程中,您将借助示例了解 JavaScript 中的模块。 随着我们的程序变得越来越大,它可能包含许多行代码。您可以使用模块根据功能将代码分隔在单独的文件中,而不是将所有内容都放在一个文件
我想知道是否可以将此代码更改为仅调用 MyModule.RED 而不是 MyModule.COLORS.RED。我尝试将 mod 设置为变量来存储颜色,但似乎不起作用。难道是我方法不对? (funct
我有以下代码。它是一个 JavaScript 模块。 (function() { // Object var Cahootsy; Cahootsy = { hello:
关闭。这个问题是 opinion-based 。它目前不接受答案。 想要改进这个问题?更新问题,以便 editing this post 可以用事实和引文来回答它。 关闭 2 年前。 Improve
从用户的角度来看,一个模块能够通过 require 加载并返回一个 table,模块导出的接口都被定义在此 table 中(此 table 被作为一个 namespace)。所有的标准库都是模块。标
Ruby的模块非常类似类,除了: 模块不可以有实体 模块不可以有子类 模块由module...end定义. 实际上...模块的'模块类'是'类的类'这个类的父类.搞懂了吗?不懂?让我们继续看
我有一个脚本,它从 CLI 获取 3 个输入变量并将其分别插入到 3 个变量: GetOptions("old_path=s" => \$old_path, "var=s" =
我有一个简单的 python 包,其目录结构如下: wibble | |-----foo | |----ping.py | |-----bar | |----pong.py 简单的
这种语法会非常有用——这不起作用有什么原因吗?谢谢! module Foo = { let bar: string = "bar" }; let bar = Foo.bar; /* works *
我想运行一个命令: - name: install pip shell: "python {"changed": true, "cmd": "python <(curl https://boot
我是一名优秀的程序员,十分优秀!