求助,多线程,malloc死锁??!

EchoPro EchoPro 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
本人接触Linux C不久,最近在项目中遇到多线程死锁问题,求大神指点!!
好了,开始介绍问题:
主进程pthread_create4个线程,在运行过程中发现死锁问题,下面是gdb attach进去后观察到的程序堆栈信息:

#0 0x000000347d6f4e6e in __lll_lock_wait_private () from /lib64/libc.so.6
#1 0x000000347d67bae8 in _L_lock_9164 () from /lib64/libc.so.6
#2 0x000000347d679482 in malloc () from /lib64/libc.so.6
#3 0x000000347d66e158 in open_memstream () from /lib64/libc.so.6
#4 0x000000347d6e199b in __vsyslog_chk () from /lib64/libc.so.6
#5 0x000000347d66f6fe in __libc_message () from /lib64/libc.so.6
#6 0x000000347d6750c6 in malloc_printerr () from /lib64/libc.so.6
#7 0x000000347d678808 in _int_malloc () from /lib64/libc.so.6
#8 0x000000347d67948d in malloc () from /lib64/libc.so.6

查看最后调用的代码,并没有发现什么异常,只是调用了malloc分配内存:
1041 pakiet->data = malloc(datalen);

我知道malloc是线程不安全的,但是程序中并未使用信号,线程堆栈中为何多次进入malloc?恳请各位大神求解,这是什么原因导致的??
...全文

相关推荐

评论 6
收藏 已收藏
分享
返回顶部
EchoPro
Linux_Kernel 4,469 成员 17,458 内容