Форум сайта python.su
Доброе время суток всем!
Есть один софт, написанный на python 2.6/2.7 и разработанный сторонними разработчиками. Но доступ к исходнику у меня есть. Работал стабильно на АльтЛинуксе 6.0 СПТ (x64), который работает на python 2.6 и Qt 4.7.4. А также в винде 7 (x32) на python 2.7 и Qt 4.8.4.
Так как АльтЛинукс 6.0 - уже устарел, решил перейти на более современную линуксовую ОС.
Перепробовал Ubuntu 16.10, 17.04, OpenSUSE 42.3, AltLinux 7.0, BaseALT 8.0, CentOS 7, Fedora (не помню), Debian 8. У всех python 2.7, Qt либо 4.8.6, либо 4.8.7. Везде при работе с программой выпадает в Segmentation Fault, причем саму проблему смоделировать не представляется возможным - падение происходит в самых разных случаях и разных местах.
С помощью dbg в нескольких ОС выяснил, что падение происходит вроде в файле libQtGui.so.4.
Кто-нибудь сталкивался с подобной проблемой? Это возможно решить?
Отредактировано Vady (Авг. 24, 2017 10:12:30)
Офлайн
Смотри на версию самого PyQt-а.
Офлайн
RodegastВ АльтЛинуксе 6.0, если правильно понял, в файле pyqtconfig.py нашел строчку pyqt_version_str: 4.7.4
Смотри на версию самого PyQt-а.
Офлайн
Надо смотреть что они там поменяли (насколько помню они избавлялись от некоторых “q-данных” но в каких это было версиях не скажу) и менять исходник соответствующим образом.
Офлайн
RodegastА на версию SIP тоже стоит обратить внимание?
Надо смотреть что они там поменяли (насколько помню они избавлялись от некоторых “q-данных” но в каких это было версиях не скажу) и менять исходник соответствующим образом.
Офлайн
Если не пересобирать PyQt, то это не обязательно.
Офлайн
Погуглил, узнал следующее: PyQt4 можно использовать вместе с Qt5, т.к. Qt5 имеет обратную совместимость с Qt4, недостаток только в том, что все новые классы, добавленные в Qt5, не будут работать с PyQt4. Но и этого мне достаточно. Интересно посмотреть что из этого выйдет.
Реально ли настроить стандартными линуксовыми средствами типа apt-get/yum/zypper связку PyQt4+Qt5? Гуглем не нашел решение такой задачи. Или это возможно только ручной сборкой?
Офлайн
VadyТебе надо выяснить, откуда у тебя Segfault выходит. Если это из-за ошибки в программе, то обновление библиотек тебе не поможет.
Погуглил, узнал следующее: PyQt4 можно использовать вместе с Qt5, т.к. Qt5 имеет обратную совместимость с Qt4
VadyПоставь себе 32-битную версию этой ОС. В битности может быть проблема, у меня было такое недавно, только программа на C. Программа писалась на 32-битной системе и при математических операциях использовала свойства целочисленных типов на 32-битной системе. Когда я перешёл на 64-битную, программа стала виснуть и выпадать. Оказалось (нашёл по юнит-тестам), что проблема в этих типах: они стали 64-битными и побитовые операции стали возвращать другие результаты.
рейти на более современную линуксовую ОС.
unsigned long n = 0xFFFFFFFF;
x = ~n;
Отредактировано py.user.next (Авг. 25, 2017 00:25:22)
Офлайн
Поставь себе 32-битную версию этой ОС. В битности может быть проблема, у меня было такое недавно, только программа на C. Программа писалась на 32-битной системе и при математических операциях использовала свойства целочисленных типов на 32-битной системе. Когда я перешёл на 64-битную, программа стала виснуть и выпадать. Оказалось (нашёл по юнит-тестам), что проблема в этих типах: они стали 64-битными и побитовые операции стали возвращать другие результаты.Спасибо, попробую. Только вот АльтЛинукс 6.0 у меня установлен как 64-битный и нет проблем… Но на всякий случай попробую на других ОС. Ибо на них установлен питон другой версии, не исключаю, что дело в модулях питона, которые работают в 27, но не в 26 (например, QtWebKit, судя по исходнику), хотя таким функционалом никогда не пользовался… Да и сегфолтится почему-то именно на QtGui, который есть во всех версиях питона…
Офлайн
Поставил себе BaseALT 8.0 i586, результат отрицательный - тоже сегфолтит… Видимо, дело не в разрядности… Правда, дамп не анализировал…
Офлайн