kworkstation 8.2 x86_64 # apt-get install qgis $ /usr/bin/qgis %F Result: Ошибка сегментирования НЕ воспроизводится в P8
Подтверждаю!
Да, воспроизводится на сегодняшнем Сизифе. Вот backtrace падения с установленными пакетами debuginfo для Qt: #0 QByteArray::~QByteArray (this=<optimized out>, __in_chrg=<optimized out>) at ../../src/corelib/tools/qbytearray.h:469 #1 rawStringData (index=<optimized out>, mo=mo@entry=0x7ffff5c7e840 <QWidget::staticMetaObject>) at kernel/qmetaobject.cpp:161 #2 objectClassName (m=m@entry=0x7ffff5c7e840 <QWidget::staticMetaObject>) at kernel/qmetaobject.cpp:306 #3 QMetaObject::className (this=this@entry=0x7ffff5c7e840 <QWidget::staticMetaObject>) at kernel/qmetaobject.cpp:316 #4 0x00007fffeb23eab7 in QMetaTypeIdQObject<QWidget*, 8>::qt_metatype_id () at ../../src/corelib/kernel/qmetatype.h:1804 #5 0x00007fffeb1e40a7 in QMetaTypeId2<QWidget*>::qt_metatype_id () at ../../src/corelib/kernel/qmetatype.h:1634 #6 qMetaTypeId<QWidget*> () at ../../src/corelib/kernel/qmetatype.h:1770 #7 qRegisterMetaType<QWidget*> () at ../../src/corelib/kernel/qmetatype.h:1776 #8 qRegisterWidgetsVariant () at kernel/qwidgetsvariant.cpp:156 #9 (anonymous namespace)::qRegisterWidgetsVariant_ctor_class_::qRegisterWidgetsVariant_ctor_class_ (this=<optimized out>) at kernel/qwidgetsvariant.cpp:160 #10 __static_initialization_and_destruction_0 (__priority=65535, __initialize_p=1) at kernel/qwidgetsvariant.cpp:160 #11 _GLOBAL__sub_I_qwidgetsvariant.cpp(void) () at kernel/qwidgetsvariant.cpp:160 #12 0x00007ffff7fe313a in call_init (l=<optimized out>, argc=argc@entry=1, argv=argv@entry=0x7fffffffde78, env=env@entry=0x7fffffffde88) at dl-init.c:72 #13 0x00007ffff7fe3236 in call_init (env=0x7fffffffde88, argv=0x7fffffffde78, argc=1, l=<optimized out>) at dl-init.c:30 #14 _dl_init (main_map=0x7ffff7ffe130, argc=1, argv=0x7fffffffde78, env=0x7fffffffde88) at dl-init.c:119 #15 0x00007ffff7fd50ca in _dl_start_user () from /lib64/ld-linux-x86-64.so.2 #16 0x0000000000000001 in ?? () #17 0x00007fffffffe241 in ?? () #18 0x0000000000000000 in ?? () А вот без debuginfo: #0 0x00007fffea4ae877 in QMetaObject::className() const () from /usr/lib64/libQt5Core.so.5 #1 0x00007fffeb271ab7 in ?? () from /usr/lib64/libQt5Widgets.so.5 #2 0x00007fffeb2170a7 in ?? () from /usr/lib64/libQt5Widgets.so.5 #3 0x00007ffff7fe313a in call_init.part () from /lib64/ld-linux-x86-64.so.2 #4 0x00007ffff7fe3236 in _dl_init () from /lib64/ld-linux-x86-64.so.2 #5 0x00007ffff7fd50ca in _dl_start_user () from /lib64/ld-linux-x86-64.so.2 #6 0x0000000000000001 in ?? () #7 0x00007fffffffe89b in ?? () #8 0x0000000000000000 in ?? () Как видите, падает инициализация Qt5. Вопрос в том, почему Qt5 инициализируется, ведь qgis, по крайней мере второй, вроде использовал Qt4. Однако у нас в него загружаются обе версии qt: $ ldd /usr/bin/qgis | grep -i qt libQtCore.so.4 => /usr/lib64/libQtCore.so.4 (0x00007f64f2f0b000) libQtGui.so.4 => /usr/lib64/libQtGui.so.4 (0x00007f64f2387000) libQtSql.so.4 => /usr/lib64/libQtSql.so.4 (0x00007f64f1627000) libQtUiTools.so.4 => /usr/lib64/libQtUiTools.so.4 (0x00007f64f138f000) libQtWebKit.so.4 => /usr/lib64/libQtWebKit.so.4 (0x00007f64eefc2000) libqscintilla2_qt4.so.13 => /usr/lib64/libqscintilla2_qt4.so.13 (0x00007f64ed50a000) libQtXml.so.4 => /usr/lib64/libQtXml.so.4 (0x00007f64ed2cf000) libQtNetwork.so.4 => /usr/lib64/libQtNetwork.so.4 (0x00007f64ecfcb000) libQtSvg.so.4 => /usr/lib64/libQtSvg.so.4 (0x00007f64ecd80000) libQt5PrintSupport.so.5 => /usr/lib64/libQt5PrintSupport.so.5 (0x00007f64e8fc4000) libQt5Svg.so.5 => /usr/lib64/libQt5Svg.so.5 (0x00007f64e8d6e000) libQt5OpenGL.so.5 => /usr/lib64/libQt5OpenGL.so.5 (0x00007f64e8b18000) libQt5Widgets.so.5 => /usr/lib64/libQt5Widgets.so.5 (0x00007f64e82e6000) libQt5Gui.so.5 => /usr/lib64/libQt5Gui.so.5 (0x00007f64e7b56000) libQt5Core.so.5 => /usr/lib64/libQt5Core.so.5 (0x00007f64e7452000) libQtOpenGL.so.4 => /usr/lib64/libQtOpenGL.so.4 (0x00007f64e61e4000) Что-то мне подсказывает, что так нельзя делать. На первый взгляд, Qt5 приезжает вместе с libqwt.so.6. И тут внезапное: у libqwt.so.6 2 несовместимых между собой провайдера: $ apt-cache showpkg 'libqwt.so.6()(64bit)' [...] Reverse Provides: libqwt6-qt5 6.1.3-alt1 libqwt6 6.1.3-alt1 И у меня в системе, естественно, был libqwt6-qt5, а не слинкованый с qt4 libqwt6. apt-get install libqwt6 не только поставил нужный qgis-у libqwt6, но и снёс libqwt6-qt5. Это решило начальную проблему: qgis больше не падает. Резюмируя: * apt-get install libqwt6 -- и будет вам qgis. * libqwt6 собран очень странно -- две несовместимых друг с другом библиотеки в одном Сизифе с одним soname это очень плохо, надо вешать. * мейнтейнеру qgis, видимо, стоит добавить в спек явную зависимость на libqwt6, чтобы libqwt6-qt5 не приезжала. Может даже конфликт =)
Нужно поменять зависимости у qgis.
qgis-2.18.16-alt4 -> sisyphus: Thu Dec 20 2018 Andrey Cherepanov <cas@altlinux> 2.18.16-alt4 - Rebuild with grass 7.4.3. - Require libqwt6 (ALT #35131).