ToDesk

标题: 在调试器中看ToDesk [打印本页]

作者: grand    时间: 2024-1-4 17:30
标题: 在调试器中看ToDesk
本帖最后由 grand 于 2024-1-5 13:48 编辑

0x0 背景介绍

* 在调试器中看阿里的软件兵团(转载)
  https://xnerv.wang/debugging-alibaba-softwares/

* 在调试器里看百度云管家
  https://blog.csdn.net/lispython/article/details/80123698

原作者都是 @张银奎 老师,上述引用的博客链接均非出自 @张银奎,特此说明。

0x1 问题现象

* 软件版本:Windows 版 V4.7.0.2

* 系统环境:DELL Optiplex 7050 台式机 / 32G / SSD / Windows 10 Enterprise 22H2 / Intel(R) HD Graphics 630 / Dell E2216HV 显示屏

* ToDesk.exe V4.7.0.2:SHA1 EA3E349371F0FBEFAFBAF2A21F17FF32BD7DFECF

^ 以下细节描述均基于该二进制文件 ^

* 问题 1:缺页中断高居不下

(, 下载次数: 849)

Page Fault Delta 太高,导致一段时间后总缺页数远超其他进程。

* 问题 2:偶现“内存不足”的弹窗提示,需重启 explorer.exe 进程拯救桌面。

论坛内有其他类似反馈,本人在使用过程中也是间隔若干时间后会遇到一次。表象就是 explorer.exe 假死,桌面 GUI 渲染出问题,无法点击和正常使用,需重启 explorer.exe 进程恢复。

0x2 问题分析

针对上述问题 1,给出我的一部分排查结果,供参考。

* 问题 1:缺页中断高居不下

根据「背景介绍」一节中给出的参考方法,借助 Windows Performance Toolkit 及 Page Fault Monitor 工具,可以看到同样出在 CreateToolhelp32Snapshot/Process32Next 系列函数上。

(, 下载次数: 814)

Page Fault Monitor

(, 下载次数: 846)

Windows Performance Analyzer

KERNEL32!CreateToolhelp32Snapshot 下断点,近几次命中时的栈帧/位置均为 0x7FF6ECD1CF73

  1. bp kernel32!CreateToolhelp32Snapshot ".echo ***hit***; r @rip; r @$t1=@$t1+1;  kv 3; .if (@$t1>10) {} .else {gc;}"
复制代码

(, 下载次数: 815)

对应位置处,待匹配的 lstrcmpiW 所对应的进程名是 ToDesk.exe

(, 下载次数: 863)

  1. bp kernelbase!lstrcmpiW ".echo ***hit***; r $t1=@$t1+1; du @rdx; .if (@$t1>10) {} .else {gc;}"
复制代码

(, 下载次数: 836)

至于影响,引用 @张银奎 老师文章里的几段话:

为何选择Page faults来衡量软件对功耗的影响?虽然今天的计算机都配备了比较多的物理内存,但仍离不开虚拟内存技术,把暂时不用的数据放在外存中,当CPU访问这样的数据时,会报告缺页异常,让操作系统的内存管理器将数据从外存中读到物理内存,这个操作通常被称为Page In。物理内存是以页为单位来管理的,因此每次Page In的数据至少是一个页,通常为4KB。访问外存意味着系统总线和硬盘等存储设备的运作,在时间和功耗方面都是较大的开销,因此,Page faults常成为系统调优的一个重要指标。

-- 「在调试器中看阿里的软件兵团」

至于优化:
一年多之前,我曾写过一篇《在调试器里看阿里的软件兵团》,批评了支付宝客户端软件中的性能问题,文章发表后,很高兴看到阿里的同行不断改进,今天已经不再有当时的问题了(图1中还可以看到淘宝的TBSecSvc进程,排名已经比较靠后)。不知百度的同行看过此文有何感想?作为一款客户端软件,能帮助用户管家是好想法,但是管家毕竟是仆人,有事时应该尽心给主人办事,没事时应该安安静静休息,不要肆意挥霍主人家的东西。
-- 「在调试器里看百度云管家」

期待后续版本能减少这种情况的发生。

* 问题 2:偶现“内存不足”的弹窗提示

原本以为是自己电脑环境的特例情况,没想到论坛上有类似的反馈,相比问题 1 我更关心问题 2 的成因及解决办法。这个问题由于“偶现”的缘故暂时还没找到稳定的排查方式,待后续如果有新的发现时再更新至此。

Stay tuned!






欢迎光临 ToDesk (https://bbs.todesk.com/) Powered by Discuz! X3.4