Details
-
Bug
-
Resolution: Done
-
P2: Important
-
5.5.0, 5.5.1, 5.6.0
-
None
Description
Seems it's a bug in QQuickWidget code (Only crash in Qt 5.5.0, work fine in Qt 5.4.x):
The call stack is:
Qt5Guid.dll!QScopedPointer<QOpenGLFramebufferObjectPrivate,QScopedPointerDeleter<QOpenGLFramebufferObjectPrivate> >::data() Line 135 C++ Qt5Guid.dll!qGetPtrHelper<QScopedPointer<QOpenGLFramebufferObjectPrivate,QScopedPointerDeleter<QOpenGLFramebufferObjectPrivate> > >(const QScopedPointer<QOpenGLFramebufferObjectPrivate,QScopedPointerDeleter<QOpenGLFramebufferObjectPrivate> > & p) Line 983 C++ Qt5Guid.dll!QOpenGLFramebufferObject::d_func() Line 54 C++ Qt5Guid.dll!QOpenGLFramebufferObject::handle() Line 1330 C++ > Qt5QuickWidgetsd.dll!QQuickWidgetPrivate::render(bool needsSync) Line 210 C++ Qt5QuickWidgetsd.dll!QQuickWidget::showEvent(QShowEvent * __formal) Line 1076 C++ Qt5Widgetsd.dll!QWidget::event(QEvent * event) Line 8881 C++ Qt5QuickWidgetsd.dll!QQuickWidget::event(QEvent * e) Line 1170 C++ Qt5Widgetsd.dll!QApplicationPrivate::notify_helper(QObject * receiver, QEvent * e) Line 3717 C++ Qt5Widgetsd.dll!QApplication::notify(QObject * receiver, QEvent * e) Line 3682 C++ Qt5Cored.dll!000000006695ab44() Unknown Qt5Cored.dll!0000000066965183() Unknown Qt5Widgetsd.dll!QWidgetPrivate::show_helper() Line 7811 C++ Qt5Widgetsd.dll!QWidgetPrivate::show_recursive() Line 7681 C++ Qt5Widgetsd.dll!QWidgetPrivate::showChildren(bool spontaneous) Line 8177 C++ Qt5Widgetsd.dll!QWidgetPrivate::show_helper() Line 7760 C++ Qt5Widgetsd.dll!QWidget::setVisible(bool visible) Line 8097 C++ Qt5Widgetsd.dll!QWidget::show() Line 7658 C++ Qt5Widgetsd.dll!QDockWidgetPrivate::setWindowState(bool floating, bool unplug, const QRect & rect) Line 1048 C++ Qt5Widgetsd.dll!QDockWidgetPrivate::plug(const QRect & rect) Line 995 C++ Qt5Widgetsd.dll!QMainWindowLayout::animationFinished(QWidget * widget) Line 1608 C++ Qt5Widgetsd.dll!QWidgetAnimator::abort(QWidget * w) Line 64 C++ Qt5Widgetsd.dll!QWidgetAnimator::animationFinished() Line 71 C++ Qt5Widgetsd.dll!QWidgetAnimator::qt_static_metacall(QObject * _o, QMetaObject::Call _c, int _id, void * * _a) Line 74 C++
fbo member is NULL in render() method:
void QQuickWidgetPrivate::render(bool needsSync) { if (!context->makeCurrent(offscreenSurface)) { qWarning("QQuickWidget: Cannot render due to failing makeCurrent()"); return; } QOpenGLContextPrivate::get(context)->defaultFboRedirect = fbo->handle(); //<<----error here fbo is NULL if (needsSync) { renderControl->polishItems(); renderControl->sync(); } renderControl->render(); if (resolvedFbo) { QRect rect(QPoint(0, 0), fbo->size()); QOpenGLFramebufferObject::blitFramebuffer(resolvedFbo, rect, fbo, rect); } static_cast<QOpenGLExtensions *>(context->functions())->flushShared(); QOpenGLContextPrivate::get(context)->defaultFboRedirect = 0; }
Seems the related code was introduced by https://codereview.qt-project.org/#/c/113475/ .
Attachments
Issue Links
- is duplicated by
-
QTBUG-48059 Crash when showing QQuickWidget if parent QWidget has no height/width set
- Closed
- relates to
-
QTBUG-47324 App crash on launch when using QQuickWidget
- Closed