请帮忙分析下valgrind查内存越界的log

yoyoyang917 2010-06-12 05:32:41
红色是我觉得可疑的地方:
==3967== Syscall param socketcall.send(msg) points to uninitialised byte(s)
==3967== at 0x794C01: send (in /lib/libpthread-2.5.so)
==3967== by 0x810107D: dde_socket_send (socket.c:477)
==3967== by 0x80F8CE5: dde_proc_epoll_readfd (epoll.c:191)
==3967== by 0x80F122A: dde_tcp_poll (core.c:143)
==3967== by 0x80F13F1: dde_heartbeat (core.c:166)
==3967== by 0x80AD922: mo_world_net_loop() (mo_network.cpp:467)
==3967== by 0x804A880: (within /data/Server/bin/world_dev)
==3967== Address 0x2E5DC9AE is 2,438 bytes inside a block of size 5,120,004 alloc'd
==3967== at 0x40053C0: malloc (vg_replace_malloc.c:149)
==3967== by 0x80FFE05: new_blk_data (io_queue.c:71)
==3967== by 0x80FFD64: dde_ioq_write (io_queue.c:107)
==3967== by 0x80F26E3: protocol_unparser (parser.c:343)
==3967== by 0x80F28C7: dde_protocol_unparser_bin32 (parser.c:382)
==3967== by 0x80ADEDE: world_gmsv_sv_sender(conn_t, char*, int) (mo_network.cpp:178)
==3967== by 0x8100AF2: dde_socket_tryaccept (socket.c:343)
==3967== by 0x80F8D69: dde_proc_epoll_readfd (epoll.c:207)
==3967== by 0x80F122A: dde_tcp_poll (core.c:143)
==3967== by 0x80F13F1: dde_heartbeat (core.c:166)
==3967== by 0x80AD922: mo_world_net_loop() (mo_network.cpp:467)
==3967== by 0x804A880: (within /data/Server/bin/world_dev)
==3967==
==3967== Invalid read of size 4
==3967== at 0x804F1AC: std::less<unsigned>::operator()(unsigned const&, unsigned const&) const (stl_function.h:227)
==3967== by 0x80F1D67: dde_protocol_parser_bin32 (parser.c:145)
==3967== by 0x80FEB32: dde_proc_parser_queue (msg_que.c:546)
==3967== by 0x80F1239: dde_tcp_poll (core.c:146)
==3967== by 0x80F13F1: dde_heartbeat (core.c:166)
==3967== by 0x80AD922: mo_world_net_loop() (mo_network.cpp:467)
==3967== by 0x804A880: (within /data/Server/bin/world_dev)
==3967== Address 0xE38 is not stack'd, malloc'd or (recently) free'd
==3967==
==3967== Process terminating with default action of signal 11 (SIGSEGV): dumping core
==3967== Access not within mapped region at address 0xE38
==3967== at 0x804F1AC: std::less<unsigned>::operator()(unsigned const&, unsigned const&) const (stl_function.h:227)
==3967== by 0x80F1D67: dde_protocol_parser_bin32 (parser.c:145)
==3967== by 0x80FEB32: dde_proc_parser_queue (msg_que.c:546)
==3967== by 0x80F1239: dde_tcp_poll (core.c:146)
==3967== by 0x80F13F1: dde_heartbeat (core.c:166)
==3967== by 0x80AD922: mo_world_net_loop() (mo_network.cpp:467)
==3967== by 0x804A880: (within /data/Server/bin/world_dev)

能看出来是内存越界导致当机吗?谢谢!
...全文
146 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yoyoyang917 2010-06-18
  • 打赏
  • 举报
回复
自己解决了
yoyoyang917 2010-06-12
  • 打赏
  • 举报
回复
内存越界的话,log会是什么呢~
yoyoyang917 2010-06-12
  • 打赏
  • 举报
回复
这一阵一直被莫名其妙的问题搞得抓狂~

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧