破一桩疑案——硬件错误( 四 )


破一桩疑案——硬件错误
本文插图
破一桩疑案——硬件错误
本文插图
由图可知 , 从Ivy Bridge这个架构开始就支持ERMS特性了 , OK , 那下一步就是确认 , 当前dmp产生式 , 用户的机器型号了 , 如下:
0:030> !cpuid CPF/M/SManufacturerMHz 06,10,9GenuineIntel3201 16,10,9GenuineIntel3201 26,10,9GenuineIntel3201 36,10,9GenuineIntel3201好 , 下边就检查一下这个参数所对应的型号信息;当然 , 我这里直接用了上报上来的信息了 , 如下:
破一桩疑案——硬件错误
本文插图
那基本确定了;触发crash的用户的电脑是支持ERMS特性的;
2.4 step4:再次分析——得出结论
综上分析可知 , 程序最终走的是下边这行代码 , ecx中存放的是复制的字节数 , 那看下数据;
51212dae f3a4rep movs byte ptr es:[edi],byte ptr [esi] 0:030> db 073d4930 ld90 073d4930b6 f9 2c bf af 27 b0 b7-56 2f 7f d8 7c e6 1f f6..,..'..V/..|... 073d49407b 33 47 6e be 17 04 f3-fb 12 90 75 9a 2a d7 0e{3Gn.......u.*.. 073d49508f 85 63 b8 09 a8 31 f8-00 63 ed 72 84 91 e0 2f..c...1..c.r.../ 073d496053 c5 96 ee 14 6d ae 3c-c5 fc f5 84 59 31 6e eaS....m.<....y1n. ..pa.t.m9.dm..="" _.="" a0="" a6="" b4="" b6-c4="" ba="" be="" c0="" c8="" ce="" d8="" e4="" e5="" e8="" ef="" ht....="">.8u.?w.....s' 073d49a0c7 a5 40 30 06 59 89 8f-02 e6 26 48 39 4a 51 c4..@0.Y....&H9JQ. 073d49b076 51 1b e5 5e b6 7e 7d-31 1b 62 df 3d 82 ed a0vQ..^.~}1.b.=... 073d49c0f6 3d 2c 13 07 0a d8 8b-75 73 56 7e 7f 7c a9 1b.=,.....usV~.|.. 0:030> db 04b84934 ld90 04b84934b6 f9 2c bf af 27 b0 b7-56 2f 7f d8 7c e6 1f f6..,..'..V/..|... 04b849447b 33 47 6e be 17 04 f3-fb 12 90 75 9a 2a d7 0e{3Gn.......u.*.. 04b849548f 85 63 b8 09 a8 31 f8-00 63 ed 72 84 91 e0 2f..c...1..c.r.../ 04b8496453 c5 96 ee 14 6d ae 3c-c5 fc f5 84 59 31 6e eaS....m.<....y1n. ..pa.t.m9.dm..="" _.="" a0="" a6="" b4="" b6-c4="" ba="" be="" c0="" c8="" ce="" d8="" e4="" e5="" e8="" ef="" ht....="">.8u.?w.....s' 04b849a4c7 a5 40 30 06 59 89 8f-02 e6 26 48 39 4a 51 c4..@0.Y....&H9JQ. 04b849b476 51 1b e5 5e b6 7e 7d-31 1b 62 df 3d 82 ed a0vQ..^.~}1.b.=... 04b849c4f6 3d 2c 13 07 0a d8 8b-75 73 56 7e 7f 7c a9 1b.=,.....usV~.|..数据都是一样的 , 说明拷贝的没什么问题 , 再来看看拷贝的长度:
0:030> r Last set context: eax=073d56c0 ebx=00000d90 ecx=ffeff6c4 edx=00000d90 esi=074d5ffc edi=04c86000 eip=51212dae esp=09edfbb8 ebp=09edfbdc iopl=0nv up ei pl nz na po cy cs=0023ss=002bds=002bes=002bfs=0053gs=002befl=00010203 VCRUNTIME140!memmove+0x4e: 51212dae f3a4rep movs byte ptr es:[edi],byte ptr [esi] 0:030> ?esi-073d4930 Evaluate expression: 1054412 = 001016cc 0:030> ?04c86000-04b84934 Evaluate expression: 1054412 = 001016cc 0:030> ?00000d90+100000000-ffeff6c4 Evaluate expression: 1054412 = 001016cc数据都是对的上的 , 基本确定是rep重复执行过程中 , ecx为0了 , 但CPU却没有停止这个循环过程 , 而是继续执行 , 导致ecx变为了-1即0xFFFFFFFF , 然后就一发不可收拾了;但不能100%保证这是个硬件问题 , 很可能是受到外部什么东西的干扰了 , 或者其他未知的情况 , 至此这桩议案总算有点眉目了;


推荐阅读