调用CGPathAddArc时PyQt4 / Qt中止陷阱的原因是什么?

时间:2014-06-23 22:49:20

标签: c++ qt pyqt pyqt4 osx-mavericks

升级到Mavericks后,使用PyQt 4.10.4,Qt 4.8.5,python 2.7.5,我试图重建PyQt应用程序并遇到以下中止陷阱:

Assertion failed: (CGFloatIsValid(x) && CGFloatIsValid(y)), function void CGPathAddArc(CGMutablePathRef, const CGAffineTransform *, CGFloat, CGFloat, CGFloat, CGFloat, CGFloat, bool), file Paths/CGPath.cc, line 279.
Abort trap: 6

这是issue反映了Mavericks上的CGPathAddArc拒绝来自Qt的NaN值(在Snow Leopard上它曾经容忍/警告过)。有一个看起来不错的patch,但应用它需要重建Qt和PyQt,而我无法让它为我工作。

faultHandler没有提供任何详细信息,并且由于应用程序异常终止,runsnake不会产生任何输出。

这显然是一个UI元素,但我如何找到哪一个?

1 个答案:

答案 0 :(得分:3)

Culprit是一个没有参数声明的QGraphicsEllipseItem()。 Qt 4.8 documentation表明没有params是一个有效的构造函数,但显然在Mavericks中并非如此。

使用虚拟x和y参数声明QGraphicsEllipseItem解决了这个问题。