网吧三国

标题: 万象计费环境下乾坤版不出游戏盘 [打印本页]

作者: RECKY    时间: 2017-2-25 15:21
标题: 万象计费环境下乾坤版不出游戏盘
本帖最后由 RECKY 于 2017-2-25 15:24 编辑

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


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


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

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


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









欢迎光临 网吧三国 (http://583go.com/) Powered by Discuz! X3.4