linux下So覆盖导致coredump问题的分析
来源:互联网 发布:机箱推荐 知乎 编辑:程序博客网 时间:2024/04/30 03:38
转自:http://blog.sina.com.cn/s/blog_622a99700100pjv3.html 感谢这位大神,我刚好遇到这个问题
尝试解答以下问题:
我们的公共组件绝大部分都支持so形式的自定义插件,比如s++,qzhttp,ttc。在不停进程更新so的时候往往会产生coredump,并且肯定core得莫名其妙,core得让人心碎。
先看一下用cp的方式更新so的时候发生了什么事情
strace cp new.so old.so #strace是人间利器
发现老的so被trunc了,这个过程发生的具体的事情是:
所以,如果用相同的so去覆盖
所有问题的产生都是因为so被trunc了一把,所以如果不用turnc的方式就避免这个问题。Ok,该我们的install 上场了。
strace install new.so old.so
install 的方式跟cp不同,先unlink再creat,当unlink的时候,已经map的虚拟空间vma中的inode结点没有变,只有inode结点的引用计数为0是,kernel才把它干掉。
也就是新的so和旧的so用的不是同一个inode结点,所以不会相互影响。这时只有得启程序才会使用到新的so。所以采用这种方式的话就可以避免先stop进程,更新so,再重启进程这样比较耗时的操作。- linux下So覆盖导致coredump问题的分析
- linux下So覆盖导致coredump问题的分析
- linux下so覆盖导致coredump问题的分析
- linux下的coredump
- 协议文件不一致导致的coredump问题
- linux下coredump的使用
- GDB分析PHP连接Memcached 导致coredump问题
- [问题解析] 记一次__do_global_ctors_aux导致的coredump
- Linux下使用coredump时的注意事项
- Linux下coredump文件的查看
- Linux下设置生成apache的coredump
- Linux下coredump文件的查看
- Linux下coredump文件的查看
- linux下coredump的配置与调试
- Linux下coredump
- linux下cp,mv进行动态库覆盖问题分析
- Linux下TCP延迟确认(Delayed Ack)机制导致的时延问题分析
- Linux下TCP延迟确认(Delayed Ack)机制导致的时延问题分析
- IOS 汉字转拼音
- javascript不定参数&&兼容性样式设置与获取
- LR录制为空的尝试解决方法
- 浅谈Servlet的本质_图
- 做产品的那个“接触点”
- linux下So覆盖导致coredump问题的分析
- 使用spring AOP获得session的思路
- HDU-1387-Team Queue
- 浅谈servlet本质_2
- Android知识点整理(二)
- 【经典之作】做网页时经常用到的代码集合(3)
- Android 用HorizontalScrollView实现ListView的Item滑动删除
- List.HashMap.TreeMap.HashSet,TreeSet以及集合排序
- MFC颜色面板(类似Win7画图板中的颜色面板)