如何调试“glibc检测到*** python:malloc():内存损坏”
我使用 python2.5 和 scipy.weave 来嵌入 C 代码。
在我的c代码中,没有malloc()函数,但我
"glibc detected *** python: malloc(): memory corruption"
时不时地收到错误。(这是一个随机算法)
那么我该如何调试它呢?
谢谢
I'm using python2.5 with scipy.weave to embed c code.
In my c code, there is no malloc() function, but I received error like
"glibc detected *** python: malloc(): memory corruption"
from time to time.(It's a random algorithm)
So how shall I debug it out?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我大胆猜测你的代码在某处溢出了数组(或者导致 Python 这样做)。
如果您无法可靠地重现它,您会发现调试它会很困难,因此您可能需要显式地为随机数生成器提供种子,并尝试找到可以重现损坏的种子。您可能还会发现,使用像 valgrind 这样的工具有助于跟踪您何时写入超过分配的限制 - 可能当你每次都可以重现它时更是如此。
I'd hazard a guess that your code is overflowing an array somewhere (or causing Python to do so).
You're going to find debugging this to be hard if you can't reliably reproduce it, so you might want to explicitly seed your random number generator and try to find a seed with which you can reproduce the corruption. You might also find that using a tool like valgrind is helpful to track when you write over the limits of an allocation -- probably more so when you can reproduce it every time.