社区
Android
帖子详情
dlclose导致crash
nonths
2014-04-04 02:32:31
在Android的NDK中用dlopen打开一个.so的库,并将返回值作为一个全局变量保存,当用完该库以后,再调用dlclose关闭该库。但是每次关闭该库的时候都会出现crash,导致调用该NDK的App退出。在国外的论坛上看过,有人也提到过这个问题,说是析构函数和内存释放的顺序问题,但是没人给出一个解决方案,有哪位以前遇到过同样的问题,怎么解决的?如果不关闭也行,但是这样会导致每次更新这个.so库的时候都需要重启手机,不利于开发调试。
...全文
1064
2
打赏
收藏
dlclose导致crash
在Android的NDK中用dlopen打开一个.so的库,并将返回值作为一个全局变量保存,当用完该库以后,再调用dlclose关闭该库。但是每次关闭该库的时候都会出现crash,导致调用该NDK的App退出。在国外的论坛上看过,有人也提到过这个问题,说是析构函数和内存释放的顺序问题,但是没人给出一个解决方案,有哪位以前遇到过同样的问题,怎么解决的?如果不关闭也行,但是这样会导致每次更新这个.so库的时候都需要重启手机,不利于开发调试。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
nonths
2014-04-04
打赏
举报
回复
很奇怪,明明是dlclose关闭动态库,为什么会出现Cannot load library的错误呢,这个错误像是打开数据的时候出现的啊。
nonths
2014-04-04
打赏
举报
回复
怎么没人回复啊,贴一下用dlerror获取的详细出错信息: Cannot load library: load_segments[906]: 98 failed to map segment from 'mylib.so' @ 0x5675b000 (0x00054900). p_vaddr=0x00000000 p_offset=0x00000000
Activity销毁,关联线程回收引起
crash
博客记录了一次JNI线程中使用
dlclose
导致
应用程序崩溃的问题。问题出现在SinkActivity销毁时,通过排查发现是JNI线程中不当使用
dlclose
释放SO库
导致
。去除
dlclose
后问题解决。
dlopen/dlclsoe使用中的陷阱
本文探讨了dlopen和
dlclose
在运行时加载和卸载共享库时可能遇到的问题,特别是
dlclose
可能
导致
的陷阱——当共享库包含活动线程时,卸载库会
导致
崩溃。解决方法是在卸载前确保所有库内的线程已停止,并在共享库的destructor函数中处理这一情况。
android 规范 腾讯,[腾讯 TMQ] Android so 的热升级尝试
本文详细探讨了Android中动态加载、卸载和升级SO库的实现,包括使用dlopen和
dlclose
进行加载和卸载,以及利用JNI_Onload和RegisterNatives注册和更新JNI函数地址,以实现热升级。同时,提到了卸载后可能
导致
的JNI函数指针失效、内存泄漏等问题,以及解决这些问题的策略。
【腾讯TMQ】Android so的热升级尝试
本文探讨了Android平台上的SO库热升级技术,介绍了通过dlopen和
dlclose
实现SO库的卸载与重加载方法,讨论了如何更新JNI函数指针以确保新SO库正常工作,并提出了解决内存泄漏等问题的策略。
Android蓝牙BLE底层回调机制解析:从btm_cb.api到连接状态丢失
本文深入剖析Android Bluedroid协议栈中btm_cb结构体的核心作用,重点解析其api成员(尤其是tBTA_GATTC_CBACK)的赋值链路——从Java层BluetoothGatt.connect出发,经JNI、BTIF、BTA层,最终在bta_gattc_register中完成回调函数指针挂载。文章揭示了因Native服务重启
导致
btm_cb.api重置引发的连接状态回调丢失问题,并提供基于日志分析、反射监控与超时防御的实战调试与避坑方案。
Android
80,488
社区成员
91,379
社区内容
发帖
与我相关
我的任务
Android
移动平台 Android
复制链接
扫一扫
分享
社区描述
移动平台 Android
android
android-studio
androidx
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章