|
|
5#

楼主 |
发表于 2007-10-12 23:00
|
只看该作者
Lenovo Thinkpad T61奇怪的蓝屏故障和解决办法[BugCheckID:0x00008086][转]
Lenovo Thinkpad T61奇怪的蓝屏故障和解决办法[BugCheckID:0x00008086]声明3 N, a) o+ I8 U L, ^
并不表明文中涉及的公司、产品具有任何质量问题,纯粹是一种技术上猜想,而且其中的表述并不一定正确。
! p8 h0 y7 C( j, X) |( q正文
1 j5 K- N5 t: gThinkpad向来以质量上乘而受到广大粉丝的追捧。然而哥几个在验机时,发现只要不小心碰一下,或者在膝盖上稍抖动一下,就会蓝屏。蓝屏代码是0x8086(Windows Vista系统),很显然这很不正常,为什么会这样?
# V8 ^4 n5 T X! m7 u; k: T: v蓝屏不是病
7 X- O* p% @1 c6 f很多用户对蓝屏死机深恶痛绝,颇多诟病,甚至还有歪诗曰“补丁与漏洞齐飞,死机共蓝屏一色”... 其实这是一种误解。难道Windows就不能容忍这种错误,而一定要“自杀成仁”? 从理论上来说,Windows确实可以尝试忽略并恢复这种错误。但是这会存在很大的风险,例如硬件设备不能正常工作,如果这时候允许系统继续执行,则可能会导致更加严重的系统冲突,这种错误更加难以进行判断和解决,同时可能会破坏硬盘或者其他外部设备里的数据。 所以Windows的蓝屏死机,可以看成是一种“壁虎断尾”式的自我保护机制,其主要目的是保护操作系统的核心部分不受损坏,同时也能保护存储设备里的宝贵数据,防止系统遭受进一步的破坏。 我的偶像银奎同志曾经说过,Linux也有类似的蓝屏机制,貌似叫做Panic~ 蓝屏分析
: f. m6 f" h" Q2 o3 z从朋友那里拿到Minidump文件后,赶紧“祭起”Windbg对其进行分析。顺便插一句,尽管Debug本身需要一定的专业技术,但是很多时候,几乎不需要什么Debug的背景知识就可以轻松找到根源(Root Cause)。
# j7 f9 W) e& k1 KBugCheck 8086, {0, 0, 0, 0}8 r) e" }. @% Q- T9 j
*** WARNING: Unable to verify timestamp for Apsx86.sys
3 F/ S3 A# d2 ^" q. b/ e& G; F*** ERROR: Module load completed but symbols could not be loaded for Apsx86.sys
& i+ p: s1 U0 p8 \*** WARNING: Unable to verify timestamp for snapman.sys
5 ]- Z0 s% T) _! q C*** ERROR: Module load completed but symbols could not be loaded for snapman.sys
9 j+ d9 U+ H, u8 dProbably caused by : iaStor.sys ( iaStor+a44f ) 很快就找到原因,驱动iaStor.sys才是罪魁,这是Intel的SATA磁盘驱动器的驱动程序。
7 u, i( m2 H1 m9 g/ @9 I+ b6 m : b, J' w9 }, B V9 K3 `4 `2 V
+ }! B# }! }' }0 g 无标题.bmp (423.9 KB)
2007-9-13 12:53
$ |3 D- S, \7 s% F' O. [" k4 ]仔细查看其详细信息:
) H3 u5 t( m- r/ b+ P
8 b- Q( k( o9 N/ |( i, v, ?0 okd> lmvm iaStor
/ r% v1 c4 g. w7 ~% cstart end module name$ a0 N: k& h, m. T
824c0000 8257e000 iaStor T (no symbols) 2 w0 |% o; q3 y
Loaded symbol image file: iaStor.sys
6 E) v4 h; c' b: e Image path: iaStor.sys
) c0 [5 W7 Z8 m+ j4 a Image name: iaStor.sys
' o2 U3 u( P# d/ K5 |8 P Timestamp: Tue Feb 13 04:46:47 2007 (45D0D237)
$ c; A& `) d: z& ], P5 e; Y CheckSum: 0004966D
3 B1 @0 b) P9 F4 z/ u i ImageSize: 000BE000
% m: @$ x- Z: ^% U1 U- X Translations: 0000.04b0 0000.04e0 0409.04b0 0409.04e0
/ {2 I5 W# n! z7 e可以看到,时间戳信息是2007年2月13日,而盆盆的机器是同一机型,为什么就不会蓝屏?一看,原来盆盆的iaStor.sys文件是2007年6月6日最新版本。很显然问题机器的iaStor.sys版本太老了,拿最新的iaStor.sys替换C:\WINDOWS\system32\drivers目录下的相同文件就可以解决问题。9 m6 D0 V# j# O! p) M7 T5 b
绝知此事
; p9 V* k8 v; H7 m问题到这里,似乎应该结案了。但是这一刻有点“Mark Russinovich”灵魂附体,想了解一下为什么轻轻晃动机器就会蓝屏,而平常时候却又貌似正常?
5 G, n$ R: e; x1 K# P# d于是查看Debug的堆栈信息,话说这个Dump文件真是好东西,相当于Windows系统的“黑匣子”,可以在里面找到很多有用的信息。
6 G! {: h+ `5 y( Q" J( l" v, ua0ac6898 824ca44f 00008086 87923864 85a0e0e8 nt!KeBugCheck+0x14# e O ]3 ?' Z' L' t8 ^6 R
WARNING: Stack unwind information not available. Following frames may be wrong.$ z# g- Z4 T% @& ]! |$ {7 E) N
a0ac68c0 81c27ecf 85a070e8 858f4350 ffcd3ff4 iaStor+0xa44f
8 k% N. T) r# s. ]a0ac68d8 80669330 ffcd3ff4 a0ac68f8 8066fcc8 nt!IofCallDriver+0x63# n. B# s- O! ^5 ~2 X$ \
a0ac68e4 8066fcc8 85a0f020 858f4350 858f4408 acpi!ACPIDispatchForwardIrp+0x2a8 b' c% u. c% c: b+ E
......+ [/ }$ a: w! b, n
a0ac69f8 828a7dc3 87f1d4c0 81cc13cc 00000000 nt!IofCallDriver+0x634 h; ?1 I+ ]' ~2 T# V) a8 o
a0ac6a0c 828a8051 87f1d4c0 878b6640 87f1d290 Apsx86+0x1dc3/ {! h1 O! p' x5 O" q6 z
a0ac6a48 828a7210 01f1d4c0 878b6640 a0ac6a70 Apsx86+0x2051
9 i9 p' m3 q# Z' v! }a0ac6a58 81c27ecf 87f1d4c0 878b6640 878b6810 Apsx86+0x1210) N, S7 V1 r3 _$ a5 v; g% p
a0ac6a70 81cb06f7 8260511a 00000000 00000000 nt!IofCallDriver+0x63
& F; b0 R( [( S5 j& m, J- L......5 D' W& K) Y! `, e% m
1 @* p& H8 R/ w粗体显示的Apsx86就是Lenovo磁盘防震功能(APS)的驱动(Apsx86.sys),由于微软不可能有第三方厂商驱动的Symbol,所以没法显示调用函数和参数(包括iaStor.sys)。, {; H0 g! _( i
所以只能猜测,当机器晃动时,磁盘防震功能的驱动Apsx86.sys会接到传感器发出的指示,了解到机器的震动状态,就赶紧向系统报告……Windows内核最终会通知用磁盘控制器(iaStor.sys),并停止磁盘转动,这就是Lenovo的APS功能的大概原理猜测,这是一个非常棒的功能。1 h$ s5 x7 j/ [
但是可能是老版本的iaStor.sys驱动存在Bug,导致无法正确处理内核传递过来的参数,所以导致才可能导致Windows系统蓝屏。
. j7 Z/ }* V) S注意:以上方法仅仅是盆盆的个人猜测,并不一定反映事实,大家姑妄信之。而且由于是Minidump,没有更详细的资料可供检查,尚无法确定堆栈中出现的ReadyBoost驱动,和蓝屏有没有关系。
& n/ F: P }# c$ s解决方法0 J& o& U1 h5 j \* t
可以把附件里的驱动文件解压缩,注意一定要检查其数字签名,是否是Intel Corp签发的,否则的话,请立即删除。) T, s; a' I, [
然后启动到安全模式下,替换C:\WINDOWS\system32\drivers目录下的老版本iaStor.sys。
# q. L0 O+ R3 T4 v3 }8 i* ~对于具有迅盘的机型,也可以直接到Lenovo的网站上下载最新的Intel Turbo Memory(迅盘)的驱动软件包,然后安装,会自动安装最新的iaStor.sys,这样就可以解决问 |
|