[sisyphus] PyQt + стили KDE = segfault

Dmitry Vukolov kookish на bk.ru
Вс Фев 29 23:36:41 MSK 2004


Приветствую!

Продолжая недавно обсуждавшуюся тему падения скриптов, использующих 
PyQt. Совет экспортировать KDE_MALLOC=no действительно помогает, за 
исключением ещё одного случая.

При добавлении QToolButton/QPushButton к QToolBar и одновременно 
использующемся стиле KDE (Keramika, Plastik и т.д.) у меня всегда 
происходит segfault. Пример прилагается. У кого-нибудь ещё такое 
поведение наблюдается с PyQt-3.10-alt1, sip-3.10-alt1, kdelibs-3.1.4-alt12?

Valgrind показывает ошибку, возникающую на уровне стиля KDE. 
Соответственно установка стиля на встроенный в Qt в скрипте/Центре 
настроек KDE или же удаление /usr/lib/kde3/plugins из Qt Library Paths 
избавляют от segfault-ов. Однако хотелось бы понять, кто же всё-таки 
виноват?

Проверив скрипт с PyQt-3.8-3mdk и sip-3.8-3mdk оказалось, что всё 
работает идеально. Может быть это бага PyQt-3.10? Но в их рассылке за 
последние полтора месяца, прошедшие с момента выпуска 3.10, похожих 
сообщений не наблюдается. СтОит ли туда писАть?

-- 
Dmitry Vukolov
-------------- next part --------------
z'╣ЛmjшZr··э╡г+╧╤чtж╕zз(∙╤╚╣К-╖$Р╔К^фъЯ╖+a╒t╒мН8щ╪╜zюч╠иХ╣╚з┼V⌡∙Е+≈Зb╔ЙФj)╡+2╕╛Щ╚miхfz{lЪm4ЦM╤ВЧ╨С]]oOМ╒┴[j╩^╡зr
-------------- next part --------------
==4495== Invalid read of size 4
==4495==    at 0x403E5AFD: __dynamic_cast (in /usr/lib/libstdc++.so.5.0.5)
==4495==    by 0x45366B84: (within /usr/lib/kde3/plugins/styles/keramik.so)
==4495==    by 0x453671DD: KeramikStyle::drawPrimitive(QStyle::PrimitiveElement, QPainter*, QRect const&, QColorGroup const&, unsigned, QStyleOption const&) const (in /usr/lib/kde3/plugins/styles/keramik.so)
==4495==    by 0x4536AEAB: KeramikStyle::drawControl(QStyle::ControlElement, QPainter*, QWidget const*, QRect const&, QColorGroup const&, unsigned, QStyleOption const&) const (in /usr/lib/kde3/plugins/styles/keramik.so)
==4495==    Address 0x0 is not stack'd, malloc'd or free'd


Подробная информация о списке рассылки Sisyphus