постоянный sigabrt в конструкторе QApplication при предыдущем запуске нормально

Я получаю sigabrt прямо в начале main() когда я звоню:

int main(int argc, char *argv[])
{
QApplication app(argc, argv);//here
...

Это обратный след

>~"#0  0x00007ffff1293cc9 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56\n">~"#1  0x00007ffff12970d8 in __GI_abort () at abort.c:89\n">~"#2  0x00007ffff213a0be in QMessageLogger::fatal(char const*, ...) const () from /opt/Qt/5.5/gcc_64/lib/libQt5Core.so.5\n">~"#3  0x00007fffe78f7956 in QXcbConnection::QXcbConnection(QXcbNativeInterface*, bool, unsigned int, char const*) () from /opt/Qt/5.5/gcc_64/lib/libQt5XcbQpa.so.5\n">~"#4  0x00007fffe78fb066 in QXcbIntegration::QXcbIntegration(QStringList const&, int&, char**) () from /opt/Qt/5.5/gcc_64/lib/libQt5XcbQpa.so.5\n">~"#5  0x00007fffe7c0e39b in ?? () from /opt/Qt/5.5/gcc_64/plugins/platforms/libqxcb.so\n">~"#6  0x00007ffff2e5f762 in QPlatformIntegrationFactory::create(QString const&, QStringList const&, int&, char**, QString const&) () from /opt/Qt/5.5/gcc_64/lib/libQt5Gui.so.5\n">~"#7  0x00007ffff2e6a9a8 in QGuiApplicationPrivate::createPlatformIntegration() () from /opt/Qt/5.5/gcc_64/lib/libQt5Gui.so.5\n">~"#8  0x00007ffff2e6b75d in QGuiApplicationPrivate::createEventDispatcher() () from /opt/Qt/5.5/gcc_64/lib/libQt5Gui.so.5\n">~"#9  0x00007ffff233da36 in QCoreApplication::init() () from /opt/Qt/5.5/gcc_64/lib/libQt5Core.so.5\n">~"#10 0x00007ffff233da96 in QCoreApplication::QCoreApplication(QCoreApplicationPrivate&) () from /opt/Qt/5.5/gcc_64/lib/libQt5Core.so.5\n">~"#11 0x00007ffff2e6d9a9 in QGuiApplication::QGuiApplication(QGuiApplicationPrivate&) () from /opt/Qt/5.5/gcc_64/lib/libQt5Gui.so.5\n">~"#12 0x00007ffff5ca392d in QApplication::QApplication(int&, char**, int) () from /opt/Qt/5.5/gcc_64/lib/libQt5Widgets.so.5\n">~"#13 0x0000000000435889 in main (argc=1, argv=0x7fffffffec48) at ..../gui/main.cpp:14\n"

Ранее код работал нормально (несколько минут назад), я проверил md5 библиотек и сравнил его с другим ПК (с теми же библиотеками, с хорошо работающим приложением) — различий не обнаружено.

Я нашел некоторые ошибка, но не уверен, что это связано.

Я создал новый проект Qt и он работает нормально — main() выглядит одинаково (разные включает, библиотечные зависимости).

Есть идеи, что мне попробовать дальше?

ОБНОВИТЬ:

Клянусь, я ничего не менял, я проверял с помощью git diff — empty. Этот коммит я использую долгое время — он отлично работал в течение нескольких дней.

Это сообщение, которое оно отображает:

QXcbConnection: не удалось подключиться к дисплею

Также — когда я запускаю из терминала ./app работает нормально,
при запуске из GDB работает нормально ..

но не может работать из QtCreator-gdb или просто без gdb из QtCreator (Ctrl + R) ..

И теперь он делает ту же ошибку на другом компьютере — только что установленный Qt 5.5, только что собранный, и заново собирающий другие библиотеки ..
Затем я удалил весь Shadow Dir и восстановить, и ошибка исчезла .. странно.

Я сделал то же самое rm -rf shadow-dir/* и запустить qmake и собрать на моем исходном компьютере — та же ошибка.

1

Решение

Сообщение QXcbConnection: Could not connect to display означает, что приложению не удалось подключиться к X Display. В этом случае имя дисплея, к которому он пытался подключиться, пусто (имя должно следовать за сообщением).

Отображаемое имя может быть передано приложению с помощью переменной среды DISPLAY или он может быть перезаписан аргументом командной строки приложения -display ' ':

./app-binary -display ' '

Проверьте правильность DISPLAY значение в оболочке:

echo $DISPLAY

Проверьте значение этой переменной в вашем приложении во время выполнения до QApplication app(argc, argv); в Qt Creator распечатав:

qDebug() << qgetenv("DISPLAY");
// or
qDebug() << QProcessEnvironment::systemEnvironment().toStringList();

Эта печать должна содержать что-то вроде "DISPLAY=:0" (то же значение, что и во время выполнения из оболочки).

Опции проекта Qt creator могут перезаписывать системную среду.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]