python - 调试 Python fatal error : GC Object already Tracked

标签 python crash garbage-collection

我的 Python 代码一直崩溃并出现错误“GC Object already Tracked”。试图找出调试此崩溃的最佳方法。

操作系统:Linux。

  • 是否有正确的方法来调试此问题。

下面的文章中有一些建议。 Python memory debugging with GDB

不确定哪种方法适合作者。

  • 有没有办法在这种情况下生成可以分析的内存转储。就像在 Windows 世界中一样。

找到一些关于这个的文章。但不能完全回答我的问题: http://pfigue.github.io/blog/2012/12/28/where-is-my-core-dump-archlinux/

最佳答案

在我的场景中找到了这个问题的原因(不一定是 GC 对象崩溃的唯一原因)。 我使用 GDB 和核心转储来调试这个问题。

我有 Python 和 C 扩展代码(在共享对象中)。 Python 代码使用 C 扩展代码注册一个回调例程。 在某个工作流程中,来自 C 扩展代码的线程正在调用 Python 代码中已注册的回调例程。

这通常工作得很好,但是当多个线程同时执行相同的操作时,它会导致“GC 对象已被跟踪”的崩溃。

为多线程同步对 python 对象的访问确实解决了这个问题。

感谢任何对此做出回应的人。

关于python - 调试 Python fatal error : GC Object already Tracked,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23178606/

相关文章:

ssh - 系统崩溃后恢复SSH session

Python 垃圾收集器文档

.net - 易碎队列和完成队列

python all() 迭代字符串

python - findContours 的输出是什么意思,我该如何解析它?

python - pytorch:计算向量函数的向量雅可比积

python - 如何告诉 tox 不要从依赖项收集测试?

android - TextView.setText()使我的应用程序崩溃

asp.net-core - 在程序集“Microsoft.EntityFrameworkCore.Design”中找不到入口点 - dotnet.exe 崩溃

algorithm - 如果没有垃圾收集,算法和/或数据结构的一些例子很难或不可能正确实现?