技术分享 万象计费环境下乾坤版不出游戏盘 [复制链接]

RECKY
三国LV12
技术中心 24359 0 2017-2-25 15:21:48
本帖最后由 RECKY 于 2017-2-25 15:24 编辑

环境:
乾坤版:2.1.6.0
计   费:万象V2016.12.17


问题描述:
      客户反应在客户机中打开资源管理器,看不到挂载的盘,只有一个C盘。只有重启explorer.exe或者关闭swacapp.exe进程,游戏盘才会显示出来。
01.png


分析:
0x1:
      对explorer.exe抓了一个dump,看一下堆栈的情况。
08.png
将近40个线程,其中并没有发现某些线程卡死的情况。我试着在本机模拟了下资源管理器在磁盘插拔的情况,了解了资源管理器其中的过程。
0x2:
02.png
在资源管理器中,各个系统组件都有自己的一套窗口,当有设备变化的时候,系统会发出相应的消息给各个窗口。比如上图的winmm.dll,在自己的消息循环中做处理。
03.png
然后在资源管理器中显示出来。
04.png
我们去看一下dump中的信息,
10.png
11.png
各个组件的消息过程都存在,那是什么原因让这些组件没有收到消息呢?

0x3:
      我们开始监听消息,然后关闭swacapp.exe进程,发现关闭后组件收到了磁盘创建的消息,于是资源管理器上就显示出来了挂载出来的游戏盘。我们把swacapp.exe给dump下来,看一下它的窗口线程。
05.png
06.png
可以看到swdcapp+0x1719的地方是一个死循环,不进行任何消息交互,当有别的人给它发消息就会堵塞住。
07.png
让我们来过一遍系统的过程:
虚拟盘开始挂载-系统开始给每个窗口通知-通知到LaunchApp的时候,由于没有回应,导致堵塞,也就不通知其它窗口了,就导致虚拟盘没有显示出来。


解决方案:
1.   重启explorer.exe[
上传的附件: explorer.rar (201 Bytes, 下载次数: 1351)
]
2.   结束swdcapp进程
3.   远程关闭导致卡死的窗口
4.   swdcapp.exe这个进程是万象的也可以联系万象处理




您需要登录后才可以回帖 立即登录
高级模式
返回
统计信息
  • 会员数: 29041 个
  • 话题数: 9632 篇
  • 巅峰数: 5500 人