崩溃问题,地图应用,在操作地图放大、旋转、缩小过程,概率性出现应用无响应(appfreeze)
地图应用,在操作地图放大、旋转、缩小过程,概率性出现应用无响应(appfreeze)。
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
造成应用无响应(appfreeze)故障的原因主要有哪些
2331浏览 • 1回复 待解决
【Map Kit】地图无瓦片,地图显示空白,地图无法加载
849浏览 • 1回复 待解决
HarmonyOS 如何放大缩小整个应用的字体大小
433浏览 • 1回复 待解决
HarmonyOS如何打开外部地图应用
450浏览 • 1回复 待解决
概率性报错5400104、5400103怎么处理
590浏览 • 1回复 待解决
如何在HarmonyOS应用中集成地图功能?
42浏览 • 0回复 待解决
HarmonyOS 地图相关问题
529浏览 • 1回复 待解决
在HarmonyOS开发中关于地图的路径规划无划线,怎么回事?
41浏览 • 0回复 待解决
鸿蒙使用webview,加载百度地图,加了缩放权限,但不能手势放大地图是什么原因,可以双击放大
837浏览 • 0回复 待解决
HarmonyOS 地图呈现问题
290浏览 • 1回复 待解决
HarmonyOS地图使用问题
262浏览 • 1回复 待解决
如何处理应用卡死(appfreeze)问题
1965浏览 • 1回复 待解决
HarmonyOS 应用崩溃日志问题
171浏览 • 1回复 待解决
3861L,在写入NV数据时,出现概率性卡死现象,也不会重启,请问有大佬知道原因吗
7273浏览 • 3回复 待解决
HI3861芯片,执行接口hi_wifi_sta_start()概率性出现死机,请问有人遇见过类似问题吗
6707浏览 • 1回复 待解决
HarmonyOS taskpool中执行的function时,tid概率性相同
292浏览 • 1回复 待解决
HarmonyOS 如何实现放大缩小的动画?
252浏览 • 1回复 待解决
在应用开发中,如何提升应用启动和响应速度?
335浏览 • 1回复 待解决
Swiper轮播图带放大缩小动效实践
1131浏览 • 1回复 待解决
HarmonyOS 地图不展示,显示空地图,地图加载不出来
150浏览 • 1回复 待解决
socket.TCPSocketConnection on('message')有概率无法响应
1726浏览 • 1回复 待解决
多图片预览组件,请问HarmonyOS这边有没有多个图片预览组件,并且支持双指放大缩小,双击放大缩小等?
77浏览 • 1回复 待解决
onControllerAttached之后对网页进行放大缩小失败。
404浏览 • 1回复 待解决
有谁知道地图无瓦片是什么原因啊?
1803浏览 • 1回复 待解决
地图组件 MapComponent 无法显示地图内容
461浏览 • 1回复 待解决
使用工具
DevEco Studio NEXT Developer Preview2
定位过程
分析crash日志,发现11048线程发送事件后,一直没有手动响应,如下:
继续往下分析crash日志,发现该线程存在锁处理,并处于等待状态中,如下:
根据这里的调用关系,分析CVHttpClient::DetachHttpEventObserver函数处理,发现该函数会通过锁来释放CVHttpClient类的成员变量资源,释放资源使用已经封装好的自定义remove函数。
初步怀疑,应该是成员变量的remove函数里存在类的析构处理,使用到了锁,而该锁在其他调用时,没有释放,而remove里使用到的释放资源是已经稳定的公共类接口,经过了许多项目考验,不会存在问题。
进一步分析得知,该成员变量是一个模板类的数组成员,那么,这里的模板使用的类是否存在异常处理。
进入分析模板使用的类的实现,首先查看该类定义的成员变量,发现里面存在定义的成员存在CVHttpClient类,继续分析释放的处理,先看析构函数,此时,发现析构函数中,对CVHttpClient类使用了delete操作,这样就存在了锁的两次调用。
这里不应该将资源释放调,应该将资源释放到已经写好的模块中管理起来,见下(注释是修改前的,修改后的是24~27行):
修改完毕后,为验证是否是这个原因引起的问题,在CVHttpClient::DetachHttpEventObserver函数,以及上面截图的析构函数中,增加打印,验证业务是否会同时运行进来,经验证,业务会同时进入,至此,问题解决。
根因总结
代码中,存在循环成员包含情况,在资源释放过程中,发生了死锁。
解决方案
已经封装了全局管理模块,释放的成员,直接放到管理模块的数据中,不需要释放作析构处理。