Что в этом случае приводит к зависанию конструкции QGuiApplication?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Что в этом случае приводит к зависанию конструкции QGuiApplication?

Сообщение Anonymous »

Вот фрагмент кода Qt:
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QGuiApplication app2(argc, argv);

Первый вызов конструктора возвращает результат, второй — нет.
Я знаю, что этого не должно быть! (Не может быть двух объектов Q*Application.)
Из любопытства мне хотелось бы узнать точную техническую причину. Вот стек вызовов на момент зависания. Возможно, вы знакомы с внутренним устройством Qt и можете легко определить эти вызовы и точку, на которой конструкция застопорилась, буду вам благодарен!
libc.so.6!futex_wait(unsigned int expected, unsigned int * futex_word) (futex-internal.h:146)
libc.so.6!futex_wait_simple(unsigned int expected, unsigned int * futex_word) (futex-internal.h:177)
libc.so.6!__GI___pthread_cond_destroy(pthread_cond_t * cond) (pthread_cond_destroy.c:53)
libQt6Core.so.6!QWaitCondition::~QWaitCondition() (Unknown Source:0)
libQt6WaylandClient.so.6![Unknown/Just-In-Time compiled code] (Unknown Source:0)
libQt6WaylandClient.so.6!QtWaylandClient::QWaylandDisplay::initEventThread() (Unknown Source:0)
libQt6WaylandClient.so.6!QtWaylandClient::QWaylandIntegration::initializePlatform() (Unknown Source:0)
libQt6WaylandClient.so.6!QtWaylandClient::QWaylandIntegration::initialize() (Unknown Source:0)
libQt6Core.so.6!QCoreApplicationPrivate::init() (Unknown Source:0)
libQt6Gui.so.6!QGuiApplicationPrivate::init() (Unknown Source:0)
libQt6Gui.so.6!QGuiApplication::QGuiApplication(int&, char**, int) (Unknown Source:0)
main(int argc, char ** argv) (/home/ivan/work/qttest/run.cpp:16)


Подробнее здесь: https://stackoverflow.com/questions/798 ... -this-case
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»