【发布时间】:2011-08-20 14:34:04
【问题描述】:
我正在编写一个通过套接字与服务器应用程序通信的客户端应用程序。我目前遇到了应用程序正常运行完成的奇怪行为,但随后我在屏幕上看到了许多类似以下内容的行。
*** glibc detected *** ./sll_client: free(): invalid next size (fast): 0x0000000000787720 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x78a8f)[0x7f9e9cbb5a8f]
/lib/x86_64-linux-gnu/libc.so.6(cfree+0x73)[0x7f9e9cbb98e3]
/usr/lib/x86_64-linux-gnu/libstdc++.so.6(_ZNSsD1Ev+0x39)[0x7f9e9d409019]
======= Memory map: ========
7f9e9d893000-7f9e9d895000 rw-p 00021000 07:00 7473 /lib/x86_64-linux- gnu/ld-2.13.so
7fff68119000-7fff6813a000 rw-p 00000000 00:00 0 [stack]
7fff68167000-7fff68168000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
Aborted
特定的“glibc”错误几乎每次都不同。
我已经通过 Valgrind 运行了应用程序,几乎没有检测到内存泄漏。那里的那些似乎不会引起任何问题。有这个问题的一般原因吗?我可以发布一些代码,但它超过三千行 C++,这是三周以来第一次出现这个问题。
【问题讨论】:
-
除了内存泄漏之外,valgrind 是否报告了任何其他问题?
-
我会说它已经正常运行了......它现在显然运行不正常。
-
@Fred:我添加了指向 Valgrind 日志的链接
-
@Ben:有效,但它仍然可以满足我的所有需求。唯一的问题是它在完成工作后会吐出这些额外的消息:)。
-
我实际上没有太多阅读 valgrind 输出的经验,但我看到了一些“无效读取”和“无效写入”消息。我会看一下 RCFour.cpp,第 71-72 行。我怀疑你那里的指针不好或其他什么。
标签: c++ memory memory-leaks glibc