使用libpcap库的多线程问题
来源:互联网 发布:everaver renamer mac 编辑:程序博客网 时间:2024/06/01 09:41
最近在系统里遇到一个程序,总会莫名其妙的segmentation fault,而且每次出现的问题都不相同。考虑到有多线程,可能会跟这个有关系。但是一直没有找出到底哪里出的问题,这个程序使用libpcap的一些function来进行抓包分析,每个网卡对应一个线程。
function里面没有显式的全局变量。
然后就想到,通过function back trace来看看。找到
======= Backtrace: =========
/lib64/libc.so.6[0x3e4ca76166]
/lib64/libc.so.6[0x3e4ca78c93]
/lib64/libc.so.6[0x3e4ca7bb60]
/lib64/libc.so.6(realloc+0xe5)[0x3e4ca7bdd5]
./dnsaudit[0x41a413]
./dnsaudit[0x41a639]
./dnsaudit[0x41a770]
./dnsaudit[0x41a7f9]
./dnsaudit[0x41a879]
./dnsaudit[0x40b218]
./dnsaudit[0x407a58]
/lib64/libpthread.so.0[0x3e4d2079d1]
/lib64/libc.so.6(clone+0x6d)[0x3e4cae8b6d]
通过objdump -S dnsaudit >tmp
找到出事的问题点,果然是在库函数里面,pcap_ensure_buffer_stack
看了一下出事的行:if (!(yy_buffer_stack)) {
这个yy_buffer_stack
static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
静态变量啊。。。多线程的使用肯定是有问题的
解决方案下一篇再写
- 使用libpcap库的多线程问题
- libpcap库的使用
- libpcap库的使用与实例解析
- libpcap包的使用
- libpcap的使用
- libpcap的使用
- Libpcap的简单使用
- libpcap 库使用
- manio的libpcap使用总结
- libpcap的安装与使用
- Libpcap的安装及使用
- libpcap使用
- libpcap使用
- libpcap使用
- libpcap使用
- libpcap使用
- libpcap使用
- libpcap使用
- EF(EntityFramework)使用Code First连接MySQL数据库详解
- windows常用设置 远程连接访问设置
- 首篇博客
- mysql中char与varchar的区别分析
- python socket编程详细介绍
- 使用libpcap库的多线程问题
- iOS中Block代码块的使用
- android ScrollView滑动时出现的阴影如何去除
- Mac环境下使用android studio jni基础
- JAVA线程间协作:wait.notify.notifyAll
- 基于FBX SDK的FBX模型解析与加载 -(三)
- 远程删除FTP端文件
- 性能测试整体解决方案技术框架图
- 中文字符串转为long型整数。(输入保证在long的范围内)java实现