免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2858 | 回复: 10
打印 上一主题 下一主题

[C] hash表崩溃corrdump [复制链接]

论坛徽章:
1
青铜圣斗士
日期:2015-11-20 10:13:46
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-10-10 14:50 |只看该作者 |倒序浏览
请教个问题:
          使用C语言编写Hash表(来自开源代码),存储结构用桶实现。查找,插入,删除时,都使用读写锁同步保护。经过12小时的压力测试后,出现了如下的coredump.
(gdb) bt
#0  0x00d40cd0 in __memcmp_sse4_2 () from bbc.so.6
#1  0x080f2ded in UOS_MemCmp (pcBuf1=0x43, pcBuf2=0xa84fecbc, ulLen=6)
#2  0x081b5447 in EntryHashKeyCmp (pstStaInfo1=0x33, pstStaInfo2=0xa84fecac)
#3  0x0822f24b in hash_search (hash=0xa6ed6b8, data=0xa84fecac) at hash.c:74

存储的pstStaInfo1=0x33,地址错误。不知道是什么原因导致的?为什么地址写飞了呢?

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
2 [报告]
发表于 2015-10-10 15:39 |只看该作者
0x33、0x43这种地址正常是不可访问的,估计是你包含pstStaInfo1、pcBuf1的结构指针为NULL了

论坛徽章:
6
酉鸡
日期:2013-11-04 15:30:02巳蛇
日期:2014-01-23 10:36:23双鱼座
日期:2014-01-23 13:08:332015亚冠之鹿岛鹿角
日期:2015-09-03 14:36:002015亚冠之武里南联
日期:2015-09-18 10:48:1315-16赛季CBA联赛之山西
日期:2016-05-05 00:05:33
3 [报告]
发表于 2015-10-10 15:50 |只看该作者
  1. EntryHashKeyCmp (pstStaInfo1=0x33, pstStaInfo2=0xa84fecac)
复制代码
第一个参数就有问题啊

论坛徽章:
14
水瓶座
日期:2014-06-10 09:51:0215-16赛季CBA联赛之江苏
日期:2017-11-27 11:42:3515-16赛季CBA联赛之八一
日期:2017-04-12 14:26:2815-16赛季CBA联赛之吉林
日期:2016-08-20 10:43:1215-16赛季CBA联赛之广夏
日期:2016-06-23 09:53:58程序设计版块每日发帖之星
日期:2016-02-11 06:20:00程序设计版块每日发帖之星
日期:2016-02-09 06:20:0015-16赛季CBA联赛之上海
日期:2015-12-25 16:40:3515-16赛季CBA联赛之广夏
日期:2015-12-22 09:39:36程序设计版块每日发帖之星
日期:2015-08-24 06:20:002015亚冠之德黑兰石油
日期:2015-08-07 09:57:302015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2015-10-12 09:44 |只看该作者
回复 3# Dannysd


   
#2  0x081b5447 in EntryHashKeyCmp (pstStaInfo1=0x33, pstStaInfo2=0xa84fecac)


    pstStaInfo1是谁?pstStaInfo2看起来应该就是要存入的数据了

论坛徽章:
1
15-16赛季CBA联赛之同曦
日期:2016-04-23 22:00:26
5 [报告]
发表于 2015-10-13 13:00 |只看该作者
应该是指针指向的数据free了,但是指针本身并没有设置为null吧

论坛徽章:
1
青铜圣斗士
日期:2015-11-20 10:13:46
6 [报告]
发表于 2015-10-14 16:53 |只看该作者
pstStaInfo1 是malloc的指针,插入在hash表中的。
回复 4# lxyscls


   

论坛徽章:
1
青铜圣斗士
日期:2015-11-20 10:13:46
7 [报告]
发表于 2015-10-14 16:54 |只看该作者

free后,置成NULL了。hash表经过几百万次操作后,才出现的。
回复 5# lwhjava


   

论坛徽章:
1
程序设计版块每日发帖之星
日期:2015-09-23 06:20:00
8 [报告]
发表于 2015-10-14 23:13 |只看该作者
回复 7# smartjhx


    lock是你自己设计的还是系统的?

论坛徽章:
154
2022北京冬奥会纪念版徽章
日期:2015-08-07 17:10:5720周年集字徽章-年
日期:2022-10-26 16:44:2015-16赛季CBA联赛之深圳
日期:2022-11-02 14:02:4515-16赛季CBA联赛之八一
日期:2022-11-28 12:07:4820周年集字徽章-20	
日期:2023-07-19 08:49:4515-16赛季CBA联赛之八一
日期:2023-11-04 19:23:5115-16赛季CBA联赛之广夏
日期:2023-12-13 18:09:34
9 [报告]
发表于 2015-10-15 10:14 来自手机 |只看该作者
代码逻辑设计一定要严谨,c语音就这点不好,程序跑n回了才出bug

论坛徽章:
14
水瓶座
日期:2014-06-10 09:51:0215-16赛季CBA联赛之江苏
日期:2017-11-27 11:42:3515-16赛季CBA联赛之八一
日期:2017-04-12 14:26:2815-16赛季CBA联赛之吉林
日期:2016-08-20 10:43:1215-16赛季CBA联赛之广夏
日期:2016-06-23 09:53:58程序设计版块每日发帖之星
日期:2016-02-11 06:20:00程序设计版块每日发帖之星
日期:2016-02-09 06:20:0015-16赛季CBA联赛之上海
日期:2015-12-25 16:40:3515-16赛季CBA联赛之广夏
日期:2015-12-22 09:39:36程序设计版块每日发帖之星
日期:2015-08-24 06:20:002015亚冠之德黑兰石油
日期:2015-08-07 09:57:302015年辞旧岁徽章
日期:2015-03-03 16:54:15
10 [报告]
发表于 2015-10-15 12:39 |只看该作者
回复 6# smartjhx


   
EntryHashKeyCmp


    我觉得可以把这个函数objdump出来,看一下传递的两个参数是不是在栈上传递的,如果是栈上传递的,EntryHashKeyCmp内部的处理是不是有栈溢出的?

    以上仅为个人猜测,跑太久才死,太难定位了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP