如何调试“glibc检测到*** python:malloc():内存损坏”

发布于 2024-09-17 18:17:34 字数 218 浏览 6 评论 0原文

我使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

马蹄踏│碎落叶 2024-09-24 18:17:34

我大胆猜测你的代码在某处溢出了数组(或者导致 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文