免费注册 查看新帖 |

Chinaunix

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

valgrind 的日志 帮忙看看吧 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-06 18:15 |只看该作者 |倒序浏览
==22007== Use of uninitialised value of size 4
==22007==    at 0xBBC0C5: mempcpy (in /lib/tls/libc-2.3.4.so)
==22007==    by 0xB8F1FE: vfprintf (in /lib/tls/libc-2.3.4.so)
==22007==    by 0xBAC6C5: vsnprintf (in /lib/tls/libc-2.3.4.so)
==22007==    by 0xB94491: snprintf (in /lib/tls/libc-2.3.4.so)
==22007==
==22007== Thread 5:
==22007== Mismatched free() / delete / delete []
==22007==    at 0x4005389: operator delete(void*) (vg_replace_malloc.c:244)
==22007==    by 0x80735FE: msn_command::reset() (msn_command.cpp:61)
==22007==    by 0x80A8EE0: do_msnread(void*, int, void*) (msn_proc.cpp:54)
==22007==    by 0x804C576: high_poll::wait_event(int& (high_poll.cpp:351)
==22007==  Address 0x8A520D0 is 0 bytes inside a block of size 6,602 alloc'd
==22007==    at 0x4004D49: operator new[](unsigned) (vg_replace_malloc.c:195)
==22007==    by 0x8078531: msn_command::set_followlen(unsigned) (msn_command.cpp:370)
==22007==    by 0x807B34F: msn_connect::do_flowfilelen() (msn_connect.h:96)
==22007==    by 0x807A7EF: msn_connect::do_complier() (msn_connect.cpp:174)
==22007==
==22007== Thread 6:
==22007== Conditional jump or move depends on uninitialised value(s)
==22007==    at 0xBCC6B5: __offtime (in /lib/tls/libc-2.3.4.so)
==22007==    by 0xBCE8F1: __tz_convert (in /lib/tls/libc-2.3.4.so)
==22007==    by 0xBCCA1F: localtime (in /lib/tls/libc-2.3.4.so)
==22007==    by 0xBCC8E0: ctime (in /lib/tls/libc-2.3.4.so)
==22007==
==22007== Thread 4:
==22007== Use of uninitialised value of size 4
==22007==    at 0x8527A3: BN_num_bits_word (in /lib/libcrypto.so.0.9.7a)
==22007==    by 0x85C3F0: (within /lib/libcrypto.so.0.9.7a)
==22007==    by 0x85E5AD: RSA_public_encrypt (in /lib/libcrypto.so.0.9.7a)
==22007==    by 0x9309D5: (within /lib/libssl.so.0.9.7a)
==22007==
==22007== Use of uninitialised value of size 4
==22007==    at 0x8527A3: BN_num_bits_word (in /lib/libcrypto.so.0.9.7a)
==22007==    by 0x853096: BN_bn2bin (in /lib/libcrypto.so.0.9.7a)
==22007==    by 0x85C415: (within /lib/libcrypto.so.0.9.7a)
==22007==    by 0x85E5AD: RSA_public_encrypt (in /lib/libcrypto.so.0.9.7a)
==22007==
==22007== Thread 6:
==22007== Conditional jump or move depends on uninitialised value(s)
==22007==    at 0xBCC494: __offtime (in /lib/tls/libc-2.3.4.so)
==22007==    by 0xBCE8F1: __tz_convert (in /lib/tls/libc-2.3.4.so)
==22007==    by 0xBCCA1F: localtime (in /lib/tls/libc-2.3.4.so)
==22007==    by 0xBCC8E0: ctime (in /lib/tls/libc-2.3.4.so)
==22007==
==22007== Conditional jump or move depends on uninitialised value(s)
==22007==    at 0xBCC698: __offtime (in /lib/tls/libc-2.3.4.so)
==22007==    by 0xBCE8F1: __tz_convert (in /lib/tls/libc-2.3.4.so)
==22007==    by 0xBCCA1F: localtime (in /lib/tls/libc-2.3.4.so)
==22007==    by 0xBCC8E0: ctime (in /lib/tls/libc-2.3.4.so)
==22007==
==22007== Thread 5:
==22007== Invalid write of size 1
==22007==    at 0x40065C2: memcpy (mc_replace_strmem.c:406)
==22007==    by 0x8073DFB: msn_command::to_bin(char*, unsigned& (msn_command.cpp:196)
==22007==    by 0x80833E9: msn_user::ActiveSendCommand(msn_command_links*, msn_connect*) (msn_user.cpp:262)
==22007==    by 0x80A8ED2: do_msnread(void*, int, void*) (msn_proc.cpp:51)
==22007==  Address 0x8B48491 is 0 bytes after a block of size 8,193 alloc'd
==22007==    at 0x4004D49: operator new[](unsigned) (vg_replace_malloc.c:195)
==22007==    by 0x804BE49: highpoll_block::set_buff(int) (high_poll.cpp:57)
==22007==    by 0x8060BE8: connection::connection(high_poll*, unsigned, unsigned) (connection.cpp:31)
==22007==    by 0x8079593: msn_connect::msn_connect(conncet_type, msn_user*, high_poll*) (msn_connect.cpp:10)
==22007==
==22007== Invalid write of size 1
==22007==    at 0x40065C8: memcpy (mc_replace_strmem.c:406)
==22007==    by 0x8073DFB: msn_command::to_bin(char*, unsigned& (msn_command.cpp:196)
==22007==    by 0x80833E9: msn_user::ActiveSendCommand(msn_command_links*, msn_connect*) (msn_user.cpp:262)
==22007==    by 0x80A8ED2: do_msnread(void*, int, void*) (msn_proc.cpp:51)
==22007==  Address 0x8B48492 is 1 bytes after a block of size 8,193 alloc'd
==22007==    at 0x4004D49: operator new[](unsigned) (vg_replace_malloc.c:195)
==22007==    by 0x804BE49: highpoll_block::set_buff(int) (high_poll.cpp:57)
==22007==    by 0x8060BE8: connection::connection(high_poll*, unsigned, unsigned) (connection.cpp:31)
==22007==    by 0x8079593: msn_connect::msn_connect(conncet_type, msn_user*, high_poll*) (msn_connect.cpp:10)
==22007==
==22007== Invalid write of size 1
==22007==    at 0x40065CE: memcpy (mc_replace_strmem.c:406)
==22007==    by 0x8073DFB: msn_command::to_bin(char*, unsigned& (msn_command.cpp:196)
==22007==    by 0x80833E9: msn_user::ActiveSendCommand(msn_command_links*, msn_connect*) (msn_user.cpp:262)
==22007==    by 0x80A8ED2: do_msnread(void*, int, void*) (msn_proc.cpp:51)
==22007==  Address 0x8B48493 is 2 bytes after a block of size 8,193 alloc'd
==22007==    at 0x4004D49: operator new[](unsigned) (vg_replace_malloc.c:195)
==22007==    by 0x804BE49: highpoll_block::set_buff(int) (high_poll.cpp:57)
==22007==    by 0x8060BE8: connection::connection(high_poll*, unsigned, unsigned) (connection.cpp:31)
==22007==    by 0x8079593: msn_connect::msn_connect(conncet_type, msn_user*, high_poll*) (msn_connect.cpp:10)
==22007==
==22007== Invalid write of size 1
==22007==    at 0x40065D4: memcpy (mc_replace_strmem.c:406)
==22007==    by 0x8073DFB: msn_command::to_bin(char*, unsigned& (msn_command.cpp:196)
==22007==    by 0x80833E9: msn_user::ActiveSendCommand(msn_command_links*, msn_connect*) (msn_user.cpp:262)
==22007==    by 0x80A8ED2: do_msnread(void*, int, void*) (msn_proc.cpp:51)
==22007==  Address 0x8B48494 is 3 bytes after a block of size 8,193 alloc'd
==22007==    at 0x4004D49: operator new[](unsigned) (vg_replace_malloc.c:195)
==22007==    by 0x804BE49: highpoll_block::set_buff(int) (high_poll.cpp:57)
==22007==    by 0x8060BE8: connection::connection(high_poll*, unsigned, unsigned) (connection.cpp:31)
==22007==    by 0x8079593: msn_connect::msn_connect(conncet_type, msn_user*, high_poll*) (msn_connect.cpp:10)
--22007-- VALGRIND INTERNAL ERROR: Valgrind received a signal 11 (SIGSEGV) - exiting
--22007-- si_code=1;  Faulting address: 0x6E24D2A8;  sp: 0x6416FE4C

valgrind: the 'impossible' happened:
   Killed by fatal signal
==22007==    at 0x38019D01: swizzle (m_mallocfree.c:177)
==22007==    by 0x3801AD17: unlinkBlock (m_mallocfree.c:976)
==22007==    by 0x3801B186: vgPlain_arena_malloc (m_mallocfree.c:1055)
==22007==    by 0x3802E85D: vgPlain_cli_malloc (replacemalloc_core.c:101)
==22007==    by 0x38001572: vgMemCheck___builtin_new (mc_malloc_wrappers.c:182)
==22007==    by 0x3803041B: do_client_request (scheduler.c:115
==22007==    by 0x3802FDE9: vgPlain_scheduler (scheduler.c:869)
==22007==    by 0x3803FD4E: thread_wrapper (syswrap-linux.c:87)
==22007==    by 0x3803FE14: run_a_thread_NORETURN (syswrap-linux.c:120)
==22007==    by 0x3803FF15: vgModuleLocal_start_thread_NORETURN (syswrap-linux.c:207)
==22007==    by 0x38048BB1: (within /usr/local/lib/valgrind/x86-linux/memcheck)
==22007==    by 0x38020739: vgPlain_do_syscall (m_syscall.c:25
==22007==    by 0x6416F92B: ???
==22007==    by 0x0: ???
==22007==    by 0x3: ???
==22007==    by 0x3F7: ???
==22007==    by 0x6416F95F: ???
==22007==    by 0x0: ???

sched status:
  running_tid=6

Thread 1: status = VgTs_WaitSys
==22007==    at 0xBDC5B6: (within /lib/tls/libc-2.3.4.so)
==22007==    by 0x805631A: bt_sleep(unsigned, unsigned, unsigned, unsigned) (bt_tool.cpp:70)
==22007==    by 0x80B844F: main (main.cpp:380)

Thread 2: status = VgTs_WaitSys
==22007==    at 0xD9BCFC: pthread_cond_timedwait@@GLIBC_2.3.2 (in /lib/tls/libpthread-2.3.4.so)

Thread 3: status = VgTs_WaitSys
==22007==    at 0xD9BCFC: pthread_cond_timedwait@@GLIBC_2.3.2 (in /lib/tls/libpthread-2.3.4.so)

Thread 4: status = VgTs_WaitSys
==22007==    at 0xD9BCFC: pthread_cond_timedwait@@GLIBC_2.3.2 (in /lib/tls/libpthread-2.3.4.so)

Thread 5: status = VgTs_WaitSys
==22007==    at 0xC19D7E: epoll_wait (in /lib/tls/libc-2.3.4.so)
==22007==    by 0x80B86C4: do_eventwokerThread(void*) (main.cpp:396)
==22007==    by 0xD99340: start_thread (in /lib/tls/libpthread-2.3.4.so)
==22007==    by 0xC196FD: clone (in /lib/tls/libc-2.3.4.so)

Thread 6: status = VgTs_Runnable
==22007==    at 0x40048DF: operator new(unsigned) (vg_replace_malloc.c:163)
==22007==    by 0x2ED851: std::string::_Rep::_S_create(unsigned, unsigned, std::allocator<char> const& (in /usr/lib/libstdc++.so.6.0.3)
==22007==    by 0x2EF966: (within /usr/lib/libstdc++.so.6.0.3)
==22007==    by 0x2EFB6A: std::string::string(std::string const&, unsigned, unsigned) (in /usr/lib/libstdc++.so.6.0.3)
==22007==    by 0x2EFBD6: std::string::substr(unsigned, unsigned) const (in /usr/lib/libstdc++.so.6.0.3)
==22007==    by 0x80656F6: do_httppost(int&, _http_request*) (basic_string.h:426)
==22007==    by 0x8063D4C: do_httpprocess(void*) (msnhttp.cpp:41)
==22007==    by 0xD99340: start_thread (in /lib/tls/libpthread-2.3.4.so)
==22007==    by 0xC196FD: clone (in /lib/tls/libc-2.3.4.so)

Thread 7: status = VgTs_WaitSys
==22007==    at 0xBDC5B6: (within /lib/tls/libc-2.3.4.so)
==22007==    by 0x805631A: bt_sleep(unsigned, unsigned, unsigned, unsigned) (bt_tool.cpp:70)
==22007==    by 0x8063DA5: do_httpxmlcmd(void*) (msnhttp.cpp:63)
==22007==    by 0xD99340: start_thread (in /lib/tls/libpthread-2.3.4.so)
==22007==    by 0xC196FD: clone (in /lib/tls/libc-2.3.4.so)



知道是那个函数的问题吗?  很郁闷, 大概要3天才crash,

==22007==    at 0x40048DF: operator new(unsigned) (vg_replace_malloc.c:163)
==22007==    by 0x2ED851: std::string::_Rep::_S_create(unsigned, unsigned, std::allocator<char> const& (in /usr/lib/libstdc++.so.6.0.3)
==22007==    by 0x2EF966: (within /usr/lib/libstdc++.so.6.0.3)
==22007==    by 0x2EFB6A: std::string::string(std::string const&, unsigned, unsigned) (in /usr/lib/libstdc++.so.6.0.3)
==22007==    by 0x2EFBD6: std::string::substr(unsigned, unsigned) const (in /usr/lib/libstdc++.so.6.0.3)
==22007==    by 0x80656F6: do_httppost(int&, _http_request*) (basic_string.h:426)
==22007==    by 0x8063D4C: do_httpprocess(void*) (msnhttp.cpp:41)


我认为是这里了,但是 光一个函数名  解决不了问题啊

论坛徽章:
0
2 [报告]
发表于 2009-04-06 18:23 |只看该作者
==22007==    by 0x6416F92B: ???
==22007==    by 0x0: ???
==22007==    by 0x3: ???
==22007==    by 0x3F7: ???
==22007==    by 0x6416F95F: ???
==22007==    by 0x0: ???

?? 射什么意思  每次都这样

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:53:172015亚冠之水原三星
日期:2015-06-02 16:34:202015年亚冠纪念徽章
日期:2015-10-19 18:13:37程序设计版块每日发帖之星
日期:2015-11-08 06:20:00
3 [报告]
发表于 2009-04-07 05:24 |只看该作者
你的程序都把valgrind干掉了.
先把已经提示的改掉吧,

论坛徽章:
0
4 [报告]
发表于 2009-04-16 10:11 |只看该作者
应该不至于的

论坛徽章:
0
5 [报告]
发表于 2009-04-16 11:07 |只看该作者
重新编译,加上 -g

论坛徽章:
0
6 [报告]
发表于 2009-04-16 11:08 |只看该作者
valgrind 的时候,能加上的参数全加上,越详细越好

论坛徽章:
0
7 [报告]
发表于 2009-04-16 14:44 |只看该作者
当然是已经加了的。 目前好像不出bug了。


比较郁闷。

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:53:172015亚冠之水原三星
日期:2015-06-02 16:34:202015年亚冠纪念徽章
日期:2015-10-19 18:13:37程序设计版块每日发帖之星
日期:2015-11-08 06:20:00
8 [报告]
发表于 2009-04-16 21:24 |只看该作者
原帖由 benjiam 于 2009-4-16 14:44 发表
当然是已经加了的。 目前好像不出bug了。
比较郁闷。


一个正常的程序用valgrind运行是这样的.


  1. ==932== Memcheck, a memory error detector.
  2. ==932== Copyright (C) 2002-2008, and GNU GPL'd, by Julian Seward et al.
  3. ==932== Using LibVEX rev 1884, a library for dynamic binary translation.
  4. ==932== Copyright (C) 2004-2008, and GNU GPL'd, by OpenWorks LLP.
  5. ==932== Using valgrind-3.4.1, a dynamic binary instrumentation framework.
  6. ==932== Copyright (C) 2000-2008, and GNU GPL'd, by Julian Seward et al.
  7. ==932== For more details, rerun with: -v
  8. ==932==
  9. XXXXXXXXX//这里是程序本身的输出
  10. ^C==932==
  11. ==932== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 5 from 1)
  12. ==932== malloc/free: in use at exit: 0 bytes in 0 blocks.
  13. ==932== malloc/free: 70 allocs, 70 frees, 9,262,967 bytes allocated.
  14. ==932== For counts of detected errors, rerun with: -v
  15. ==932== All heap blocks were freed -- no leaks are possible.

复制代码


你的程序中的这些地方都是需要修改的

  1. ==22007== Thread 5:
  2. ==22007== Mismatched free() / delete / delete []
  3. ==22007==    at 0x4005389: operator delete(void*) (vg_replace_malloc.c:244)
  4. ==22007==    by 0x80735FE: msn_command::reset() (msn_command.cpp:61)
  5. ==22007==    by 0x80A8EE0: do_msnread(void*, int, void*) (msn_proc.cpp:54)
  6. ==22007==    by 0x804C576: high_poll::wait_event(int& (high_poll.cpp:351)
  7. ==22007==  Address 0x8A520D0 is 0 bytes inside a block of size 6,602 alloc'd
  8. ==22007==    at 0x4004D49: operator new[](unsigned) (vg_replace_malloc.c:195)
  9. ==22007==    by 0x8078531: msn_command::set_followlen(unsigned) (msn_command.cpp:370)
  10. ==22007==    by 0x807B34F: msn_connect::do_flowfilelen() (msn_connect.h:96)
  11. ==22007==    by 0x807A7EF: msn_connect::do_complier() (msn_connect.cpp:174)
复制代码

论坛徽章:
0
9 [报告]
发表于 2009-04-17 10:10 |只看该作者
Mismatched free() / delete / delete []  

这个是一个bug 已经修复掉了。 在delete 的时候 使用delete p ; 而不是delete [] p;





==22007==    at 0xBCC698: __offtime (in /lib/tls/libc-2.3.4.so)
==22007==    by 0xBCE8F1: __tz_convert (in /lib/tls/libc-2.3.4.so)
==22007==    by 0xBCCA1F: localtime (in /lib/tls/libc-2.3.4.so)
==22007==    by 0xBCC8E0: ctime (in /lib/tls/libc-2.3.4.so)

应该远与 打日志的地方, 但是没有出现我的代码,没办法查这个bug




正常的内存测试,这个我知道。 但我这个是服务器,我希望以调试的模式运行 找到问题所在。

因为这个bug, 不是每天都会出来,  一般要5 天。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP