Linux 动态库更新需要注意的坑

  linux VFS快速入门,请参考我的博客如何在linux添加一个最简单的自己写的文件系统。源码今日头条,视频演示https://m.toutiaoimg.com/i6753964400429761031/?gd_ext_json=%7B%22enter_from%22%3A%22click_creation_center%22%2C%22category_name%22%3A%22creation_center%22%7D&enter_from=click_creation_center&category_name=creation_center&share_token=19b860f8-843e-4c8b-adfa-b6e3aa083c2b&tt_from=copy_link&utm_source=copy_link&utm_medium=toutiao_android&utm_campaign=client_share?=

     参考上述,可快速了解vfs数据结构(比如inode和文件的关系,dentry,super_block等)及VFS API的使用。

      以cdds_service、cdds动态库、cdds_bag举例。有同事在更新cdds动态库的时候,经常没有全部杀光调用了cdds动态库API的进程。比如cdds_service在运行,这个时候更新动态库(这样操作,动态库文件的inode不会发生改变),然后再启动cdds_bag,这个时候cdds_bag还会使用内存中缓冲的cdds动态库,导致cdds_bag crash,或其他各种诡异问题。如下图所示,动态库cdds_mm的inode没有发生改变。动态库的加载流程是open→mmap。由于inode没有发生改变,而且内存中缓冲有动态库文件,这个时候将导致新启动的进程将使用内存中缓冲的就动态库。如果新动态库API发生了改变,比如参数改变,这会导致各种诡异问题。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无v邪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值