https://bugs.kde.org/show_bug.cgi?id=523039

RiverDoctor <[email protected]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |[email protected]

--- Comment #4 from RiverDoctor <[email protected]> ---
Confirming on Arch Linux: Qt 6.11.1, plasma-integration 6.7.4-1,
Plasma 6.7.4, Wayland (also reproduces on xcb, not on offscreen).
Deterministic, 10/10, with a QMessageBox dismissed via the window
manager close button.

Independent analysis, consistent with !238/!241: at the entry of
KDEPlatformMessageDialogHelper::hide() the dialog pointer is still
readable, but its vptr is already QObject's the full destructor
chain has run. hide() compiles to

    mov 0x20(%rdi),%rdi ; jmp *0x…(%rip)

i.e. m_box->hide() with no null or validity check, so QWidget::hide()
dispatches setVisible through QObject's vtable and jumps into a data
address (typeinfo for QIOVectoredWriteOperation here). The Qt-side
QPlatformDialogHelper itself is valid at both
setNativeDialogVisible(true) and (false), and info vtbl resolves
cleanly this is not a vtable/ABI mismatch.

The crash also reproduces with QT_QPA_PLATFORMTHEME=xdgdesktopportal,
but not with generic or gtk3. In the portal case /proc/PID/maps shows
both libqxdgdesktopportal.so and KDEPlasmaPlatformTheme6.so loaded, so
the portal theme delegates the message dialog to the Plasma base theme same
helper, same crash.

Application-side workaround until this ships:
QApplication::setAttribute(Qt::AA_DontUseNativeDialogs).

Confirmed fixed by plasma-integration!241, built on top of 6.7.4:
SIGSEGV before, clean exit after, on xcb, wayland and
xdgdesktopportal.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to