Details
-
Bug
-
Resolution: Unresolved
-
P3: Somewhat important
-
None
-
6.7.2
Description
When setting QT_WIDGETS_RHI=1 and QT_WIDGETS_RHI_BACKEND=opengl (a workaround for QTBUG-126303), opening or repainting a QDialog causes a crash when running with VirtualGL. Note: We use VirtualGL to redirect OpenGL rendering to a headless EGL rendering context.
VirtualGL aborts with signal SIGABRT and logs the error:
The EGL back end requires a 2D X server with a GLX extension.
Stack trace for opening a dialog:
File "<unknown>", in __pthread_kill_implementation File "<unknown>", in raise File "<unknown>", in abort File "VirtualGL-3.1/server/faker.cpp", line 99, in faker::safeExit File "VirtualGL-3.1/server/faker.cpp", line 81, in faker::safeExit File "VirtualGL-3.1/server/faker-glx.cpp", line 1758, in glXMakeCurrent File "<unknown>", in QGLXContext::QGLXContext File "<unknown>", in QXcbGlxIntegration::createPlatformOpenGLContext File "<unknown>", in QOpenGLContext::create File "<unknown>", in QRhiGles2InitParams::newFallbackSurface File "<unknown>", in QBackingStoreRhiSupport::create File "<unknown>", in QWidgetPrivate::create File "<unknown>", in QWidget::create File "<unknown>", in QWidgetPrivate::setVisible File "<unknown>", in QDialogPrivate::setVisible (...)
Stack trace for repainting a dialog:
File "<unknown>", in __pthread_kill_implementation File "<unknown>", in raise File "<unknown>", in abort File "VirtualGL-3.1/server/faker.cpp", line 99, in faker::safeExit File "VirtualGL-3.1/server/faker.cpp", line 81, in faker::safeExit File "VirtualGL-3.1/server/faker-glx.cpp", line 2250, in glXSwapBuffers File "<unknown>", in QGLXContext::swapBuffers File "<unknown>", in QRhiGles2::endFrame File "<unknown>", in QRhi::endFrame File "<unknown>", in QBackingStoreDefaultCompositor::flush File "<unknown>", in QPlatformBackingStore::rhiFlush File "<unknown>", in QXcbBackingStore::rhiFlush File "<unknown>", in QWidgetRepaintManager::flush File "<unknown>", in QWidgetRepaintManager::flush File "<unknown>", in QWidgetRepaintManager::paintAndFlush File "<unknown>", in QWidgetRepaintManager::sync File "<unknown>", in QWidgetWindow::event (...)