免费注册 查看新帖 |

Chinaunix

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

多线程中调用system函数导致程序core,求解中... [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-12-06 00:52 |只看该作者 |倒序浏览
多线程程序中,某一个线程调用了system函数,导致了程序core,具体信息如下:
Trace/BPT trap in _internal_error at 0x90000000049b4f8 ($t1)
0x90000000049b4f8 (_internal_error+0x8 e8410028          ld   r2,0x28(r1)
(dbx) where
_internal_error(??, ??, ??) at 0x90000000049b4f8
_event_notify_locked_31_23(??, ??, ??, ??, ??) at 0x9000000004a643c
_event_notify(??, ??, ??) at 0x9000000004a5e88
_unlock_wakeup(??) at 0x900000000494afc
pthread_mutex_unlock(??) at 0x9000000004a1248
forkchild()(), line 15 in "test.cpp"
_atfork_child() at 0x9000000004b3e6c
__fork() at 0x9000000000a1c0c
system(??) at 0x90000000017e53c

程序中有一个static线程锁,初始化为PTHREAD_MUTEX_INITIALIZER,但程序在启动时,就设置成了PTHREAD_MUTEX_RECURSIVE属性。
程序中注册了pthread_atfork函数处理fork操作,注册的_atfork_prepare函数对线程锁进行加锁,parent和child分别对该线程锁进行解锁。
但现在程序就是在pthread_atfork的_atfork_child解锁时core。因此很不能理解具体原因,求解中...

论坛徽章:
0
2 [报告]
发表于 2010-12-06 16:45 |只看该作者
各位达人,哪位能帮帮分析一下了。一直未有思路,谢谢了!

论坛徽章:
0
3 [报告]
发表于 2010-12-06 17:09 |只看该作者
你用的这几个函数,之前都没用过,不过能不能把代码贴上来呢?尤其是你调用system的那段呢?
我初始化锁,之前都从来不用参数,你那个atfork也没用过,呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP