Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » Python 2.7.13 + QtGUI из комплекта Qt 4.8.6/4.8.7 в любых ОС = Segmentation Fault [RSS Feed]

#1 Авг. 24, 2017 10:11:50

Vady
Зарегистрирован: 2015-05-30
Сообщения: 70
Репутация: +  0  -
Профиль   Отправить e-mail  

Python 2.7.13 + QtGUI из комплекта Qt 4.8.6/4.8.7 в любых ОС = Segmentation Fault

Доброе время суток всем!
Есть один софт, написанный на 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)

Офлайн

#2 Авг. 24, 2017 10:55:59

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2679
Репутация: +  182  -
Профиль   Отправить e-mail  

Python 2.7.13 + QtGUI из комплекта Qt 4.8.6/4.8.7 в любых ОС = Segmentation Fault

Смотри на версию самого PyQt-а.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#3 Авг. 24, 2017 11:49:43

Vady
Зарегистрирован: 2015-05-30
Сообщения: 70
Репутация: +  0  -
Профиль   Отправить e-mail  

Python 2.7.13 + QtGUI из комплекта Qt 4.8.6/4.8.7 в любых ОС = Segmentation Fault

Rodegast
Смотри на версию самого PyQt-а.
В АльтЛинуксе 6.0, если правильно понял, в файле pyqtconfig.py нашел строчку pyqt_version_str: 4.7.4
В свежем - 4.11.4
Что-то такую версию, как 4.7.4, не найти на официальном сайте Riverbank… Стоит ли гуглить и вручную пересобирать PyQt? Или не в том направлении следует искать проблему?

Офлайн

#4 Авг. 24, 2017 12:24:05

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2679
Репутация: +  182  -
Профиль   Отправить e-mail  

Python 2.7.13 + QtGUI из комплекта Qt 4.8.6/4.8.7 в любых ОС = Segmentation Fault

Надо смотреть что они там поменяли (насколько помню они избавлялись от некоторых “q-данных” но в каких это было версиях не скажу) и менять исходник соответствующим образом.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#5 Авг. 24, 2017 12:33:38

Vady
Зарегистрирован: 2015-05-30
Сообщения: 70
Репутация: +  0  -
Профиль   Отправить e-mail  

Python 2.7.13 + QtGUI из комплекта Qt 4.8.6/4.8.7 в любых ОС = Segmentation Fault

Rodegast
Надо смотреть что они там поменяли (насколько помню они избавлялись от некоторых “q-данных” но в каких это было версиях не скажу) и менять исходник соответствующим образом.
А на версию SIP тоже стоит обратить внимание?

Офлайн

#6 Авг. 24, 2017 14:40:12

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2679
Репутация: +  182  -
Профиль   Отправить e-mail  

Python 2.7.13 + QtGUI из комплекта Qt 4.8.6/4.8.7 в любых ОС = Segmentation Fault

Если не пересобирать PyQt, то это не обязательно.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#7 Авг. 25, 2017 00:08:38

Vady
Зарегистрирован: 2015-05-30
Сообщения: 70
Репутация: +  0  -
Профиль   Отправить e-mail  

Python 2.7.13 + QtGUI из комплекта Qt 4.8.6/4.8.7 в любых ОС = Segmentation Fault

Погуглил, узнал следующее: PyQt4 можно использовать вместе с Qt5, т.к. Qt5 имеет обратную совместимость с Qt4, недостаток только в том, что все новые классы, добавленные в Qt5, не будут работать с PyQt4. Но и этого мне достаточно. Интересно посмотреть что из этого выйдет.
Реально ли настроить стандартными линуксовыми средствами типа apt-get/yum/zypper связку PyQt4+Qt5? Гуглем не нашел решение такой задачи. Или это возможно только ручной сборкой?

Офлайн

#8 Авг. 25, 2017 00:22:54

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9716
Репутация: +  842  -
Профиль   Отправить e-mail  

Python 2.7.13 + QtGUI из комплекта Qt 4.8.6/4.8.7 в любых ОС = Segmentation Fault

Vady
Погуглил, узнал следующее: PyQt4 можно использовать вместе с Qt5, т.к. Qt5 имеет обратную совместимость с Qt4
Тебе надо выяснить, откуда у тебя Segfault выходит. Если это из-за ошибки в программе, то обновление библиотек тебе не поможет.

Vady
рейти на более современную линуксовую ОС.
Поставь себе 32-битную версию этой ОС. В битности может быть проблема, у меня было такое недавно, только программа на C. Программа писалась на 32-битной системе и при математических операциях использовала свойства целочисленных типов на 32-битной системе. Когда я перешёл на 64-битную, программа стала виснуть и выпадать. Оказалось (нашёл по юнит-тестам), что проблема в этих типах: они стали 64-битными и побитовые операции стали возвращать другие результаты.

Вот такой код
unsigned long n = 0xFFFFFFFF;
x = ~n;
В зависимости от битности даёт разные результаты.

И вот благодаря юнит-тестам я всё исправил за день, быстро нашёл, быстро исправил, быстро проверил. А вот не было бы юнит-тестов, то вот так искал бы целую неделю баг, как у тебя сейчас происходит.

Поэтому у тебя где-то в программе может быть какая-нибудь такая неявная фигня. Убедись, что дело не в битности.



Отредактировано py.user.next (Авг. 25, 2017 00:25:22)

Офлайн

#9 Авг. 25, 2017 08:56:38

Vady
Зарегистрирован: 2015-05-30
Сообщения: 70
Репутация: +  0  -
Профиль   Отправить e-mail  

Python 2.7.13 + QtGUI из комплекта Qt 4.8.6/4.8.7 в любых ОС = Segmentation Fault

Поставь себе 32-битную версию этой ОС. В битности может быть проблема, у меня было такое недавно, только программа на C. Программа писалась на 32-битной системе и при математических операциях использовала свойства целочисленных типов на 32-битной системе. Когда я перешёл на 64-битную, программа стала виснуть и выпадать. Оказалось (нашёл по юнит-тестам), что проблема в этих типах: они стали 64-битными и побитовые операции стали возвращать другие результаты.
Спасибо, попробую. Только вот АльтЛинукс 6.0 у меня установлен как 64-битный и нет проблем… Но на всякий случай попробую на других ОС. Ибо на них установлен питон другой версии, не исключаю, что дело в модулях питона, которые работают в 27, но не в 26 (например, QtWebKit, судя по исходнику), хотя таким функционалом никогда не пользовался… Да и сегфолтится почему-то именно на QtGui, который есть во всех версиях питона…

Офлайн

#10 Авг. 25, 2017 15:28:00

Vady
Зарегистрирован: 2015-05-30
Сообщения: 70
Репутация: +  0  -
Профиль   Отправить e-mail  

Python 2.7.13 + QtGUI из комплекта Qt 4.8.6/4.8.7 в любых ОС = Segmentation Fault

Поставил себе BaseALT 8.0 i586, результат отрицательный - тоже сегфолтит… Видимо, дело не в разрядности… Правда, дамп не анализировал…

Офлайн

  • Начало
  • » GUI
  • » Python 2.7.13 + QtGUI из комплекта Qt 4.8.6/4.8.7 в любых ОС = Segmentation Fault[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version