崩溃问题,地图应用,在操作地图放大、旋转、缩小过程,概率性出现应用无响应(appfreeze)
地图应用,在操作地图放大、旋转、缩小过程,概率性出现应用无响应(appfreeze)。
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
【Map Kit】地图无瓦片,地图显示空白,地图无法加载
436浏览 • 1回复 待解决
造成应用无响应(appfreeze)故障的原因主要有哪些
1903浏览 • 1回复 待解决
HarmonyOS如何打开外部地图应用
87浏览 • 1回复 待解决
HarmonyOS 如何放大缩小整个应用的字体大小
120浏览 • 1回复 待解决
HarmonyOS 地图相关问题
158浏览 • 1回复 待解决
鸿蒙使用webview,加载百度地图,加了缩放权限,但不能手势放大地图是什么原因,可以双击放大
407浏览 • 0回复 待解决
概率性报错5400104、5400103怎么处理
346浏览 • 1回复 待解决
如何处理应用卡死(appfreeze)问题
1606浏览 • 1回复 待解决
HarmonyOS 地图呈现问题
58浏览 • 1回复 待解决
HarmonyOS地图使用问题
18浏览 • 0回复 待解决
Swiper轮播图带放大缩小动效实践
783浏览 • 1回复 待解决
在应用开发中,如何提升应用启动和响应速度?
98浏览 • 1回复 待解决
HI3861芯片,执行接口hi_wifi_sta_start()概率性出现死机,请问有人遇见过类似问题吗
6501浏览 • 1回复 待解决
3861L,在写入NV数据时,出现概率性卡死现象,也不会重启,请问有大佬知道原因吗
6982浏览 • 3回复 待解决
针对IPv6地址的TLSSocket bind操作无响应
57浏览 • 1回复 待解决
onControllerAttached之后对网页进行放大缩小失败。
116浏览 • 1回复 待解决
HarmonyOS taskpool中执行的function时,tid概率性相同
99浏览 • 1回复 待解决
socket.TCPSocketConnection on('message')有概率无法响应
1417浏览 • 1回复 待解决
HarmonyOS开发过程应用内存问题咨询
94浏览 • 1回复 待解决
在弹窗中显示高德地图,发现为什么地图里面的内容跑到上面去了?
5184浏览 • 2回复 待解决
偶尔移动地图失败,执行了移动地图的代码,偶尔它不会移动地图,还是显示在北京。大多数是会移动的。
78浏览 • 1回复 待解决
地图选点Button的实现
104浏览 • 1回复 待解决
HarmonyOS 怎么跳转手机自带的地图应用,去到目的地导航页面
109浏览 • 1回复 待解决
有谁知道地图无瓦片是什么原因啊?
1473浏览 • 1回复 待解决
地图组件 MapComponent 无法显示地图内容
148浏览 • 1回复 待解决
使用工具
DevEco Studio NEXT Developer Preview2
定位过程
分析crash日志,发现11048线程发送事件后,一直没有手动响应,如下:
继续往下分析crash日志,发现该线程存在锁处理,并处于等待状态中,如下:
根据这里的调用关系,分析CVHttpClient::DetachHttpEventObserver函数处理,发现该函数会通过锁来释放CVHttpClient类的成员变量资源,释放资源使用已经封装好的自定义remove函数。
初步怀疑,应该是成员变量的remove函数里存在类的析构处理,使用到了锁,而该锁在其他调用时,没有释放,而remove里使用到的释放资源是已经稳定的公共类接口,经过了许多项目考验,不会存在问题。
进一步分析得知,该成员变量是一个模板类的数组成员,那么,这里的模板使用的类是否存在异常处理。
进入分析模板使用的类的实现,首先查看该类定义的成员变量,发现里面存在定义的成员存在CVHttpClient类,继续分析释放的处理,先看析构函数,此时,发现析构函数中,对CVHttpClient类使用了delete操作,这样就存在了锁的两次调用。
这里不应该将资源释放调,应该将资源释放到已经写好的模块中管理起来,见下(注释是修改前的,修改后的是24~27行):
修改完毕后,为验证是否是这个原因引起的问题,在CVHttpClient::DetachHttpEventObserver函数,以及上面截图的析构函数中,增加打印,验证业务是否会同时运行进来,经验证,业务会同时进入,至此,问题解决。
根因总结
代码中,存在循环成员包含情况,在资源释放过程中,发生了死锁。
解决方案
已经封装了全局管理模块,释放的成员,直接放到管理模块的数据中,不需要释放作析构处理。