Вот фрагмент кода 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