一个malloc的crash问题
来源:互联网 发布:响应式博客模板知乎 编辑:程序博客网 时间:2024/06/05 16:35
项目中遇到一个Crash问题,Crash时生成了core dump,调试core dump,gdb bt 后发现崩溃的线程中,调用栈深度总共有28层,下面贴的是顶部的12层,再往下就是项目代码,第13层(#11)是std::list<std::string>::push_back(...)操作,经检查,#11层往下的数据都没有错,从其他线程上也看不出异常。从 bt 结果来看,貌似Crash线程的栈并没有被写乱。
初步判断,是该线程的栈上的Memory溢出导致Crash(64bit CentOS)。经测试,在和Crash发生时相同的环境下,主线程栈上消耗Memory超过12,568,257 bytes时,进程Crash;从线程栈上消耗Memory超过10,479,656 bytes时,进程Crash。
这只是猜测,也可能其他线程中某项操作导致Crash线程访问内存越界。
#0 0xffffe410 in __kernel_vsyscall ()
#1 0xf7ad4df0 in raise () from /lib/libc.so.6
#2 0xf7ad6701 in abort () from /lib/libc.so.6
#3 0xf7b0d3ab in __libc_message () from /lib/libc.so.6
#4 0xf7b16d96 in _int_malloc () from /lib/libc.so.6
#5 0xf7b17fb7 in malloc () from /lib/libc.so.6
#6 0xf7cec517 in operator new(unsigned int) () from /usr/lib/libstdc++.so.6
#7 0x080901a2 in __gnu_cxx::new_allocator<std::_List_node<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::allocate
(this=0xf6e56e0c, __n=1) at /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/ext/new_allocator.h:88
#8 0x080901c5 in std::_List_base<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_get_node (this=0xf6e56e0c)
at /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_list.h:316
#9 0x080919ac in std::list<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_create_node (this=0xf6e56e0c, __x="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx \r\n")
at /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_list.h:448
#10 0x08091a62 in std::list<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_insert (this=0xf6e56e0c, __position=Traceback (most recent call last):
File "/usr/share/gdb/python/libstdcxx/v6/printers.py", line 469, in to_string
return self.val['_M_dataplus']['_M_p'].string (encoding, length = len)
RuntimeError: Cannot access memory at address 0xeb
, __x="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx \r\n") at /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_list.h:1139
#11 0x080aae18 in std::list<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::push_back (this=0xf6e56e0c, __x="Set-Cookie: SSLGWSVRID=%s; expires=%s \r\n")
at /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_list.h:761
- 一个malloc的crash问题
- 一个奇怪的CRASH问题
- 一个boot.oat crash问题的分析
- 遇到一个malloc报错的问题
- 使用 malloc 的一个小问题
- 关于new 与 malloc的一个问题
- win7+ie9的一个crash/hung问题的解决
- 奇怪的malloc问题!
- malloc(0)的问题
- malloc(0)的问题
- malloc函数的问题
- malloc(0)的问题
- malloc(0)的问题
- malloc(0)的问题
- malloc(0)的问题
- 关于Crash文件的问题
- removeSpriteFrames()后crash的问题
- uitableviewcell的生成crash问题
- Web Service
- 使用9妹的注意事项
- 2.11 最近点对
- vmware Dos声卡驱动安装说明
- 《学习openCV》例程解析 ex_8_2 (轮廓)
- 一个malloc的crash问题
- 在Win2003系统远程桌面设置多连接数方法(转载)
- SQL查询递归
- 找不到
- poj 楼天成的男人八题系列 A New Stone Game 博弈问题
- 转换数据库时间字段格式函数
- 程序的悟透
- 千山独行-一个人的创业路(连载三)
- Android软件开发之 自定义别样Toast