После обновления до 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
Это вопрос отражает то, что CGPathAddArc на Mavericks отклоняет значения NaN из Qt (которые на Snow Leopard использовались, чтобы терпеть / предупреждать о них). Eсть пластырь это выглядит хорошо, но для его применения требуется пересборка Qt и PyQt, и я не смог заставить его работать на меня.
faultHandler не дает никаких подробностей, и runnake не выдает никаких результатов, поскольку приложение завершается ненормально.
Это, очевидно, элемент пользовательского интерфейса, но как мне найти какой?
Culprit был QGraphicsEllipseItem (), объявленным без параметров. Документация по Qt 4.8 предполагает, что никакие параметры не являются допустимым конструктором, но, очевидно, в Mavericks это не так.
Объявление QGraphicsEllipseItem с фиктивными параметрами x и y решило проблему.