首页 > 教程 > WinDbg异常分析实例:Avalonia框架崩溃问题

WinDbg异常分析实例:Avalonia框架崩溃问题

时间:2024-08-09 | 来源: | 阅读:179

话题: a T VA Net BG 崩溃 AVA 异常 v in 环境 AV

一:背景 1. 讲故事 前些天有位朋友找到我,说他们的程序崩溃了,也自己分析了下初步结果,让我帮忙再确认下,既然让我确认,那就开始dump分析之旅吧。 二:WinDbg 分析 1. 为什么会崩溃 windbg 有一个强大之处就是带有一个自动化的分析命令 !analyze -v 可以帮助我们快速的分析

前几天,一位朋友找到我,向我求助。他们的程序崩溃了,经过初步分析,他怀疑是Avalonia框架的问题。于是我决定使用WinDbg进行dump分析来确认崩溃的原因。

一:背景

这是一个关于WinDbg分析的故事。

1. 讲故事

朋友发现他们的程序崩溃了,经过初步分析,怀疑是Avalonia框架的问题,于是找到我帮忙确认。

二:WinDbg 分析

1. 为什么会崩溃

通过使用WinDbg的命令 !analyze -v 进行分析,得到异常码 ,表明是遇到用户回调时未处理的异常。但其中还隐藏了真实的异常码。

2. 真实的异常码在哪里

通过查看异常上下文,定位到RaiseException的父函数,并从异常信息全局变量 g_SavedExceptionInfo 中获得真实的异常码 ,即表示访问违例。

3. 什么逻辑导致的崩溃

根据汇编代码分析,崩溃是由Avalonia框架的 RequestCompositionBatchCommitAsync 返回null引起的。进一步搜索代码,发现这是Avalonia的一个bug。

在类中找到会设置null的方法,确认了这是Avalonia框架的问题。而该版本是非常新的11.1.0.0版本。

4. 如何解决呢

鉴于是Avalonia框架的问题,并且该版本非常新,只能向Avalonia的官方提交issue,解决该bug。

三:总结

这次的生产事故分析让我对Avalonia框架有了更深入的了解。对Avalonia是否开始替代WPF在工控行业中的应用也产生了好奇。但就目前来看,稳定性方面与WPF相比还有一定差距。期待Avalonia未来能发布更加稳定的版本。


湘ICP备2022002427号-10湘公网安备:43070202000427号
© 2013~2019 haote.com 好特网