Skip to content

Conversation

@bukinr
Copy link

@bukinr bukinr commented Jan 17, 2023

wl_display_disconnect() destroys the mutex that wl_event_queue_destroy() tries to take

destroyed. This fixes mutex use after free issue.
(Discovered on CHERI ABI).
@cla-assistant
Copy link

cla-assistant bot commented Nov 15, 2024

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

@KonstantinRitt
Copy link
Contributor

KonstantinRitt commented Mar 12, 2025

the issue has been fixed already; close PR?

qtprojectorg pushed a commit that referenced this pull request Apr 14, 2025
WARNING: ThreadSanitizer: data race
  Write of size 1 at 0x7b5000008aa0 by thread T51 (mutexes: write M1, write M2):
    #0 QtWaylandClient::QWaylandWindow::waitForFrameSync(int) qtwayland/src/client/qwaylandwindow.cpp:784 (libQt6WaylandClient.so.6+0xdd6a9)
    #1 QtWaylandClient::QWaylandGLContext::swapBuffers(QPlatformSurface*) qtwayland/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp:393 (libQt6WaylandEglClientHwIntegration.so.6+0xc706)
    #2 QOpenGLContext::swapBuffers(QSurface*) qtbase/src/gui/kernel/qopenglcontext.cpp:783 (libQt6Gui.so.6+0x80c6df)
    #3 QRhiGles2::endFrame(QRhiSwapChain*, QFlags<QRhi::EndFrameFlag>) qtbase/src/gui/rhi/qrhigles2.cpp:1984 (libQt6Gui.so.6+0x85bbda)
    #4 QRhi::endFrame(QRhiSwapChain*, QFlags<QRhi::EndFrameFlag>) qtbase/src/gui/rhi/qrhi.cpp:7689 (libQt6Gui.so.6+0x58faf0)
    #5 QSGRenderThread::syncAndRender() qtdeclarative/src/quick/scenegraph/qsgthreadedrenderloop.cpp:748 (libQt6Quick.so.6+0x7bb88a)

  Previous write of size 1 at 0x7b5000008aa0 by main thread:
    #0 QtWaylandClient::QWaylandWindow::timerEvent(QTimerEvent*) qtwayland/src/client/qwaylandwindow.cpp:1480 (libQt6WaylandClient.so.6+0xdc079)

Pick-to: 6.9 6.8 6.5
Change-Id: Ieb8819c5a273e6581975b258d4728bb6f3325da6
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
qtprojectorg pushed a commit that referenced this pull request Apr 14, 2025
WARNING: ThreadSanitizer: data race
  Write of size 1 at 0x7b5000008aa0 by thread T51 (mutexes: write M1, write M2):
    #0 QtWaylandClient::QWaylandWindow::waitForFrameSync(int) qtwayland/src/client/qwaylandwindow.cpp:784 (libQt6WaylandClient.so.6+0xdd6a9)
    #1 QtWaylandClient::QWaylandGLContext::swapBuffers(QPlatformSurface*) qtwayland/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp:393 (libQt6WaylandEglClientHwIntegration.so.6+0xc706)
    #2 QOpenGLContext::swapBuffers(QSurface*) qtbase/src/gui/kernel/qopenglcontext.cpp:783 (libQt6Gui.so.6+0x80c6df)
    #3 QRhiGles2::endFrame(QRhiSwapChain*, QFlags<QRhi::EndFrameFlag>) qtbase/src/gui/rhi/qrhigles2.cpp:1984 (libQt6Gui.so.6+0x85bbda)
    #4 QRhi::endFrame(QRhiSwapChain*, QFlags<QRhi::EndFrameFlag>) qtbase/src/gui/rhi/qrhi.cpp:7689 (libQt6Gui.so.6+0x58faf0)
    #5 QSGRenderThread::syncAndRender() qtdeclarative/src/quick/scenegraph/qsgthreadedrenderloop.cpp:748 (libQt6Quick.so.6+0x7bb88a)

  Previous write of size 1 at 0x7b5000008aa0 by main thread:
    #0 QtWaylandClient::QWaylandWindow::timerEvent(QTimerEvent*) qtwayland/src/client/qwaylandwindow.cpp:1480 (libQt6WaylandClient.so.6+0xdc079)

Pick-to: 6.8 6.5
Change-Id: Ieb8819c5a273e6581975b258d4728bb6f3325da6
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
(cherry picked from commit fda0da4)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
qtprojectorg pushed a commit that referenced this pull request Apr 15, 2025
WARNING: ThreadSanitizer: data race
  Write of size 1 at 0x7b5000008aa0 by thread T51 (mutexes: write M1, write M2):
    #0 QtWaylandClient::QWaylandWindow::waitForFrameSync(int) qtwayland/src/client/qwaylandwindow.cpp:784 (libQt6WaylandClient.so.6+0xdd6a9)
    #1 QtWaylandClient::QWaylandGLContext::swapBuffers(QPlatformSurface*) qtwayland/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp:393 (libQt6WaylandEglClientHwIntegration.so.6+0xc706)
    #2 QOpenGLContext::swapBuffers(QSurface*) qtbase/src/gui/kernel/qopenglcontext.cpp:783 (libQt6Gui.so.6+0x80c6df)
    #3 QRhiGles2::endFrame(QRhiSwapChain*, QFlags<QRhi::EndFrameFlag>) qtbase/src/gui/rhi/qrhigles2.cpp:1984 (libQt6Gui.so.6+0x85bbda)
    #4 QRhi::endFrame(QRhiSwapChain*, QFlags<QRhi::EndFrameFlag>) qtbase/src/gui/rhi/qrhi.cpp:7689 (libQt6Gui.so.6+0x58faf0)
    #5 QSGRenderThread::syncAndRender() qtdeclarative/src/quick/scenegraph/qsgthreadedrenderloop.cpp:748 (libQt6Quick.so.6+0x7bb88a)

  Previous write of size 1 at 0x7b5000008aa0 by main thread:
    #0 QtWaylandClient::QWaylandWindow::timerEvent(QTimerEvent*) qtwayland/src/client/qwaylandwindow.cpp:1480 (libQt6WaylandClient.so.6+0xdc079)

Pick-to: 6.5
Change-Id: Ieb8819c5a273e6581975b258d4728bb6f3325da6
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
(cherry picked from commit fda0da4)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit 4055b38)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants