IE6 Hotfix MS-042将导致其Crash!
昨天我和同事在为这个Menu继续添加新功能时,发现这个Popup菜单导致IE Crash的问题变得十分频繁,几乎每做8,9步显示菜单的操作就能导致IE 6 Crash。
// 这样的问题真是让人无法忍受啊!!!
能搞出: The instruction at "0x4a5b19d6" referenced memory at "0x00000020". The memory could not be "red". 这样的问题,显然已经完全操出了脚本的能力。
原来引起这个问题的始作俑者居然是IE最近release的一个hotfix,该Hotfix 923762本来使用来解决IE非法退出的问题。可是没想到去鬼使神差的影响到了脚本生成Popup窗口的功能。
虽然没有固定的复现这个问题的步骤,但是下面这个页面还是很容易的在安装了该hotfix的IE上引发Crash:
<head>
<script language="javascript">
var g_popup = null;
function ShowPopup(elmt)
{
g_popup = window.createPopup();
var popBody = g_popup.document.body;
popBody.innerHTML = '<table style="text-align: center; height: 100%; border: dotted 1px blue">'
+ '<tr><td><button onclick="ShowPopup(this)">Show Popup Window</button><br><br>'
+ '蓝色虚线框中是一个Popup Window。</td></tr></table>';
g_popup.show(100, 100, 400, 200, elmt );
}
</script>
</head>
<body>
<button onclick="ShowPopup(this)">Show Popup Window</button>
</body>
</html>
// 保存为*.htm文件就可以了,打开后反复点击第一个"Show Popup Window",大概10次左右就会Crash。
进一步分析这个问题,再看看下面这两个改进的示例:
var g_popup = null;
function ShowPopup(elmt)
{
if ( !g_popup ) g_popup = window.createPopup();
var popBody = g_popup.document.body;
popBody.innerHTML = '<table style="text-align: center; height: 100%; border: dotted 1px blue">'
+ '<tr><td><button onclick="ShowPopup(this)">Show Popup Window</button><br><br>'
+ '蓝色虚线框中是一个Popup Window。</td></tr></table>';
g_popup.show(100, 100, 400, 200, elmt );
}
</script>
var g_popup = null;
function ShowPopup(elmt)
{
g_popup = window.createPopup();
var popBody = g_popup.document.body;
popBody.innerHTML = '<table style="text-align: center; height: 100%; border: dotted 1px blue">'
+ '<tr><td>蓝色虚线框中是一个Popup Window。</td></tr></table>';
g_popup.show(100, 100, 400, 200, elmt );
}
</script>
新的版本在反复点击"Show Popup Window"后不会Crash(至少我点了很久很久没有Crash...)。
仔细分析,我们可以发现,这个问题应该是IE内存泄露造成的。在第一个改进中,我们缓存了g_popup,反复点击其实只使用了一个popup窗口;而在第二个改进中,我们把从popup窗口内部元素对parent页面函数的引用去掉了。这样一来我们可以很容易的发现出错页面的原因:反复的生成并丢弃了对parent页面脚本元素有引用关系的popup窗口,就会使IE Crash掉。
那么大概知道了Crash的原因后,可以完全有效的避免这个Crash吗?我认为答案是否定的,因为使用Popup窗口来构成的菜单,不太可能绝对的不去引用Parent页面中的脚本方法,同时也很难有绝对安全的办法来避免产生野popup实例(没有被页面引用的popup,类似野指针概念)。退一万步,就算都避免了,那么这种cut过的popup还有什么实用意义呢?
除了自己小心,那么最有只能祈祷M$赶快推出新的补丁的补丁的补丁。。。
Reference: IE6 crashes after installing MS06-042
IE6 Hotfix MS-042将导致其Crash!相关推荐
- 解决JDBC-ODBC驱动桥导致JVM crash.
最近帮一个朋友做了一个网站,开始因考虑到访问量不算太高,采用了ACCESS作为数据库,采用了JDBC-ODBC驱动桥接方式.写到配置文件中加载到内存,供系统运行时使用. <dbconfig> ...
- 反汇编程序导致程序crash的解决思路
曾经发现win7下程序基地址不停地变动,又发现下移代码会导致程序crash,一度怀疑win7系统或者vs编译器是不是做了什么校验机制,专门针对数据逆向者,限制反汇编修改代码,打断了我学习外挂编写的信心 ...
- 关于CALayer导致的crash问题
push到一个页面进行绘图时,设置如下: CALayer * layer = [CALayer layer]; layer.frame = CGRectMake(0, 0, 300, 300); la ...
- IE6下载文件名过长导致乱码问题的解决方案
String fileName = "IE6下载文件名过长导致乱码问题的解决方案.doc"; Encoding code = Encoding.GetEncoding(" ...
- 【Android】【问题分析】G-sensor因数据交互问题导致手机crash
G-sensor因数据交互问题导致手机crash 问题现象: 测试同事发现,手机在使用和待机时,低概率发现手机会crash 问题原因: G-sensor在driver和HAL层因交互的参数不匹配,导致 ...
- C++的异常机制导致的crash问题
问题背景 最近工作中遇到了一个非常奇怪的crash问题,反反复复分析了好久.由于保密原因,这里只记录一下分析思路,不会涉及到代码. 初步log分析 tombstone显示这是一个abort:Cmdli ...
- mysql批量insert bug_MySQL Bug insert into on duplicate key update 语法更新 text blob 大字段导致 MySQL crash...
1. 背景 业务执行 SQL 导致 MySQL 进程 Crash,做故障切换后,新的主库又 Crash 了.查看 MySQL 错误日志,发现多次 Crash 时的堆栈相同,如下: Thread poi ...
- mysqldump死住(实际是导致mysqld crash)
在MySQL 5.0.16上,用mysqldump导出数据,mysqldump半天没反应. 操作系统是RHEL4.0. 看日志 *** glibc detected *** free(): inval ...
- ios开发遇到的memory持续上涨导致页面crash解决思路总结
我在IOS遇到过的闪退主要分为程序启动完Lanch page在初始化页面就崩溃,和在程序运行中crash两种: 后者我遇到的情况是memory占用过多,被系统kill掉了一部分正在占用的内存,导致程序 ...
最新文章
- Windows下Redis中RedisQFork位置调整
- 《面向模式的软件体系结构2-用于并发和网络化对象模式》读书笔记(3)--- 服务访问和配置模式...
- Java知识点总结(JDBC-封装JDBC)
- Python 获 Mozilla 和扎克伯格夫妇 40 余万美金资助
- 16位汇编 call调用函数 通过栈来传递参数
- Mac的最小化和隐藏的区别
- SpringBoot入门_搭建及配置环境(eclipse || Spring ToolS)
- python第二十八课——编码小常识
- 【iVX 初级工程师培训教程 10篇文拿证】04 画布及我和 iVX 合照
- PDF文件如何转成markdown格式 1
- 怎样从外网访问自己的HTTP服务器
- android assets目录在哪,Android Studio 中 assets目录的使用
- 《精益数据分析》:网易创始人丁磊力荐
- 轻松一下:python(turtle模块)绘制分形图
- win10安装Mingw,看这里!
- 子元素自动撑开父元素空间
- python成语接龙到为所欲为_python成语接龙
- 倾斜摄影顶点XYZ转世界坐标系再转BLH
- 4.1 用学会学习破解迷茫——《逆袭大学》连载
- 数据类型整理(笼统)