免费注册 查看新帖 |

Chinaunix

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

[Linux] c库的malloc [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-12-08 14:51 |只看该作者 |倒序浏览
今天早上,收到n多警报邮件。一个程序发生了死锁。几个线程都有竞争一个锁,打印锁变量,该锁被一个线程占用,而占用该锁的线程,在delete内存的时候阻塞了,后面再也没有被唤起。
Thread 22 (Thread 0x7f5df2086700 (LWP 7032)):
#0  0x00000030d38f4e6e in __lll_lock_wait_private () from /lib64/libc.so.6
#1  0x00000030d387b914 in _L_lock_5003 () from /lib64/libc.so.6
#2  0x00000030d3877762 in _int_free () from /lib64/libc.so.6
#3  0x0000000000477d91 in __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ThreadSafeHashMap<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, FpeerImp, my_null_delete<FpeerImp> >::stNodeData> > >::deallocate(std::_Rb_tree_node<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ThreadSafeHashMap<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, FpeerImp, my_null_delete<FpeerImp> >::stNodeData> >*, unsigned long) ()
#4  0x0000000000477db9 in std::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ThreadSafeHashMap<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, FpeerImp, my_null_delete<FpeerImp> >::stNodeData>, std::_Select1st<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ThreadSafeHashMap<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, FpeerImp, my_null_delete<FpeerImp> >::stNodeData> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ThreadSafeHashMap<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, FpeerImp, my_null_delete<FpeerImp> >::stNodeData> > >::_M_put_node(std::_Rb_tree_node<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ThreadSafeHashMap<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, FpeerImp, my_null_delete<FpeerImp> >::stNodeData> >*) ()
pstack看了一下,另外一个线程比较可疑:
Thread 17 (Thread 0x7f5df097a700 (LWP 7037)):
#0  0x00000030d38f4e6e in __lll_lock_wait_private () from /lib64/libc.so.6
#1  0x00000030d387bae8 in _L_lock_9164 () from /lib64/libc.so.6
#2  0x00000030d3879482 in malloc () from /lib64/libc.so.6
#3  0x00000030d300cb7b in _dl_map_object_deps () from /lib64/ld-linux-x86-64.so.2
#4  0x00000030d3012991 in dl_open_worker () from /lib64/ld-linux-x86-64.so.2
#5  0x00000030d300e106 in _dl_catch_error () from /lib64/ld-linux-x86-64.so.2
#6  0x00000030d30123ea in _dl_open () from /lib64/ld-linux-x86-64.so.2
#7  0x00000030d3922f80 in do_dlopen () from /lib64/libc.so.6
#8  0x00000030d300e106 in _dl_catch_error () from /lib64/ld-linux-x86-64.so.2
#9  0x00000030d39230d7 in __libc_dlopen_mode () from /lib64/libc.so.6
#10 0x00000030d38fb675 in init () from /lib64/libc.so.6
#11 0x00000030d400cac3 in pthread_once () from /lib64/libpthread.so.0
#12 0x00000030d38fb774 in backtrace () from /lib64/libc.so.6
#13 0x00000030d386f7bb in __libc_message () from /lib64/libc.so.6
#14 0x00000030d38750c6 in malloc_printerr () from /lib64/libc.so.6
#15 0x00000030d3878b0c in _int_malloc () from /lib64/libc.so.6
#16 0x00000030d387948d in malloc () from /lib64/libc.so.6
#17 0x00000030dfcbd0bd in operator new(unsigned long) () from /usr/lib64/libstdc++.so.6
#18 0x000000000046fee9 in google::protobuf::internal::GenericTypeHandler<msg::ResItem>::New() ()
#19 0x000000000046ffb4 in google::protobuf::RepeatedPtrField<msg::ResItem>::TypeHandler::Type* google::protobuf::internal::RepeatedPtrFieldBase::Add<google::protobuf::RepeatedPtrField<msg::ResItem>::TypeHandler>() ()
#20 0x0000000000470093 in google::protobuf::RepeatedPtrField<msg::ResItem>::Add() ()
#21 0x00000000004700af in msg::ReportResourceReq::add_resource() ()
#22 0x00000000004634b3 in msg::ReportResourceReq::MergePartialFromCodedStream(google::protobuf::io::CodedInputStream*) ()
#23 0x00000000004eafb8 in google::protobuf::MessageLite:arseFromString(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const& ()
#24 0x000000000044bc7c in TaskProcessThreads::doIt() ()
#25 0x0000000000422838 in SDThreadPool::threadProc(void*) ()
#26 0x00000030d40077f1 in start_thread () from /lib64/libpthread.so.0
#27 0x00000030d38e570d in clone () from /lib64/libc.so.6
这个线程为啥会阻塞呢,现在忘记了看当时new的size的大小了。已经重启了,没找到原因为啥死锁。

论坛徽章:
0
2 [报告]
发表于 2014-12-09 11:16 |只看该作者
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

论坛徽章:
0
3 [报告]
发表于 2014-12-09 13:55 |只看该作者
.................................

论坛徽章:
0
4 [报告]
发表于 2014-12-09 14:18 |只看该作者
回复 3# true_casey
小二,还不上菜

   

论坛徽章:
0
5 [报告]
发表于 2014-12-10 12:02 |只看该作者
贴代码。。。。。。。。。。。。。。。。。。。。。。。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP