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

What is cause of PyQt4/Qt abort trap when calling CGPathAddArc?

本文关键字:陷阱 是什么 CGPathAddArc PyQt4 Qt 调用      更新时间:2023-10-16

升级到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

这个问题反映了Mavericks上的CGPathAddArc拒绝Qt的NaN值(在雪豹上它曾经容忍/警告)。有一个补丁看起来不错,但应用它需要重新构建Qt和PyQt,我无法让它为我工作。

faultHandler没有给出任何细节,runsnake也不会产生任何输出,因为应用程序会异常终止。

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

罪犯是一个没有参数声明的QGraphicsEllipseItem()。Qt 4.8文档建议没有参数是一个有效的构造函数,但显然在Mavericks中不是这样的。

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