【发布时间】:2019-04-19 07:58:03
【问题描述】:
我有一个类是我的其他非 qt 类的基础。此类使用 Signal 实例实例化 QObject 类。不幸的是,有时它会引发分段错误错误。这是我的代码:
class PublisherSignal(QObject):
notify = Signal(list)
class PublisherBase:
def __init__(self, *args, **kwargs):
super(PublisherBase, self).__init__(*args, **kwargs)
self._signal = PublisherSignal()
故障处理程序显示,分段错误发生在 PublisherSignal() 类实例化上。并非总是如此。在大多数情况下,它工作正常。不涉及线程。 PublisherBase 的子类不是 QObject 的子类。
段错误的原因可能是什么?
【问题讨论】:
-
我提供的那个有什么问题?它在实例化示例中的
PublisherBase类(实例化PublisherSignal)时崩溃。 -
你的例子不完整,你只声明了2个类但你没有使用它,你应该知道问题可能是你使用它的方式引起的。因此,如果您需要帮助,最好提供minimal reproducible example。 :-)
-
@Djent 好吧,这就是您依赖不受支持的旧版软件所得到的。像这样的问题现在将永远得到解决。如果您想正确诊断问题,则必须编译至少 qt4 和 pyside 的调试版本,以便获得完整的堆栈跟踪。这可能足以揭示问题的根本原因是什么(但我不会指望它)。
-
@Djent 我怀疑问题在于将复杂的 python 类型作为信号参数传递(与整数和字符串等基本类型相反)。如果是这样,一种可能的解决方法可能是将参数作为 json 字符串发送 - 或者只是尝试重写您的代码,这样就不需要发送像
list和dict这样的类型。
标签: python python-3.x segmentation-fault pyside