社区
Android
帖子详情
dlclose导致crash
nonths
2014-04-04 02:32:31
在Android的NDK中用dlopen打开一个.so的库,并将返回值作为一个全局变量保存,当用完该库以后,再调用dlclose关闭该库。但是每次关闭该库的时候都会出现crash,导致调用该NDK的App退出。在国外的论坛上看过,有人也提到过这个问题,说是析构函数和内存释放的顺序问题,但是没人给出一个解决方案,有哪位以前遇到过同样的问题,怎么解决的?如果不关闭也行,但是这样会导致每次更新这个.so库的时候都需要重启手机,不利于开发调试。
...全文
1084
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
异常log: 09-16 14:07:11.613 395 395 W ActivityThread: performDestroyActivity 09-16 14:07:11.613 395 395 D SinkActivity: SinkActivity::onDestroy 09-16 14:07:11.613 395 395 V SinkActivity: miracast thread quit 09-16 14:07:11.617 395 430 W libE...
dlopen/dlclsoe使用中的陷阱
dlopen系列API的使用场景 dlopen,dlsym,
dlclose
可以在不去link shared library的前提下,在runtime时调用shared library里面的函数.这样可以实现shared library的覆盖或是省略编译阶段的链接检查.但dlopen/
dlclose
要谨慎使用,尤其是有些写的不是很好的shared library.下面以实例来说明.
dlclose
陷...
android 规范 腾讯,[腾讯 TMQ] Android so 的热升级尝试
一、So 的热升级尝试在 Android 代码中,加载 so 库是通过调用 System.loadLibrary 函数实现的。但和 Android 的许多特性一样,只提供了加载,而没有卸载和更换等功能。为了研究能否实现卸载和升级等功能,首先要了解清楚 JNI so 加载的流程。网上有很多加载流程的解析,例如《Dalvik 虚拟机 JNI 方法的注册过程分析》(http://blog.csdn.ne...
【腾讯TMQ】Android so的热升级尝试
一、So的热升级尝试在Android代码中,加载so库是通过调用System.loadLibrary函数实现的。但和Android的许多特性一样,只提供了加载,而没有卸载和更换等功能。为了研究能否实现卸载和升级等功能,首先要了解清楚JNI so加载的流程。网上有很多加载流程的解析,例如《Dalvik虚拟机JNI方法的注册过程分析》(http://blog.csdn.net/luoshengyang/
VMA耗尽引发free()崩溃:一次max_map_count排查实录
在Linux系统中,虚拟内存区域(Virtual Memory Area, VMA)是内核管理进程地址空间的核心机制。每次mmap、mmap段、线程栈创建或动态库加载都会新增一个VMA,而max_map_count参数则限制了单个进程可拥有的VMA数量上限。当进程的VMA数量逼近这个阈值时,新的内存映射操作会返回ENOMEM,但上层代码若未充分检查返回值,就可能将非法指针传递给free(),最终引发看似莫名其妙的core dump。这种问题在glibc等内存分配器管理下尤为隐蔽——free()只是表面崩溃点
Android
80,490
社区成员
91,375
社区内容
发帖
与我相关
我的任务
Android
移动平台 Android
复制链接
扫一扫
分享
社区描述
移动平台 Android
android
android-studio
androidx
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章