昨天(2020年7月15日)中午十一点左右,大量网友反应自己的 QQ 号被冻结,这个问题一度冲上知乎和微博热搜第一,很多人表示自己的生活受到了影响。具体的事态发展各位吃瓜群众可以自行了解,这里打算从技术角度分析一下这次故障的原因。先给结论:这应该是一次第三方依赖库升级引发的。这个第三方依赖库是恰好是我本人在 github 上开源的,一个名为 `epic` 的项目(地址在这里:https://github.com/tiann/epic);`epic` 是一个在虚拟机层面、以 Java Method 为粒度的 运行时 AOP Hook 框架。它可以拦截本进程内部几乎任意的 Java 方法调用,可用于实现 AOP 编程、运行时插桩、性能分析、安全审计等。我开发这个库的初衷是做性能分析,更具体点,是为了监控 App 内部线程的调度情况。当时我正在支付宝做 Android 端 App 的性能优化,因为研发团队很大,内部又没有一个完全统一的基础设施,代码里面很多四处散落的线程(池)、广播,Service等;可能一个线程或者广播并不消耗什么性能,但是量变产生质变,支付宝启动之后峰值会有三百多个子线程