Bug 520674 - LibreOffice X11/XWayland Freeze and Severe Delays while waiting on clipboard After Screen Lock
Summary: LibreOffice X11/XWayland Freeze and Severe Delays while waiting on clipboard ...
Status: RESOLVED FIXED
Alias: None
Product: kwin
Classification: Plasma
Component: wayland-generic (other bugs)
Version First Reported In: 6.6.5
Platform: Other Linux
: NOR normal
Target Milestone: ---
Assignee: KWin default assignee
URL:
Keywords: efficiency-and-performance
Depends on:
Blocks:
 
Reported: 2026-05-26 11:13 UTC by Capacity5341
Modified: 2026-05-29 17:56 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed/Implemented In: 6.6.6
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Capacity5341 2026-05-26 11:13:54 UTC
**ENVIRONMENT**

- OS: Fedora Linux 44
- Desktop Environment: KDE Plasma 6.6.5
- Server: Wayland
- Monitor: 4K display
- Fractional Scaling: 125%
- Suspend: disabled system-wide
- Hibernate: disabled system-wide


**BACKGROUND**

LibreOffice performance is extremely poor under native Wayland when fractional scaling is enabled (known issue). To work around this, LibreOffice is forced to run through X11/XWayland using either:

SAL_USE_VCLPLUGIN=qt6
QT_QPA_PLATFORM=xcb

or

SAL_USE_VCLPLUGIN=gtk3
GDK_BACKEND=x11


**ISSUE**

LibreOffice running through X11/XWayland becomes temporarily unusable after screen lock or DPMS events on Fedora KDE Wayland with fractional scaling enabled.

Observations:
- During the freeze, LibreOffice becomes completely unresponsive and cannot be closed.
- The issue happens mostly after screen lock or monitor power-off/DPMS events.
- Logging out and back in temporarily fixes the problem.
- The issue affects both Qt6/XCB and GTK3/X11 backends.
- Qt6/XCB freezes for ~10 seconds when opening local files.
- GTK3/X11 freezes for ~10 seconds during startup before the menu bar appears
- The Flatpak version shows the same behavior.
- Has been reproduced on AMD and Nvidia GPU, Mesa can be ruled out
- Killing and restarting Xwayland does not help. It does not look like an Xwayland issue.
- Has not been reproduced on GNOME


**THINGS ALREADY TESTED**

Multiple environment and rendering workarounds were tested without success, suggesting a possible XWayland/KWin/Mesa interaction problem rather than a LibreOffice-specific issue.


# Disable XWayland GLAMOR rendering
XWAYLAND_NO_GLAMOR=1

# Disable GTK portal integration
GTK_USE_PORTAL=0

# Disable DRI3
LIBGL_DRI3_DISABLE=1

# Disable synchronous printer detection
SAL_DISABLE_SYNCHRONOUS_PRINTER_DETECTION=1

# Force local GIO/VFS backend
GIO_USE_VFS=local

# Force local X11 display
DISPLAY=:0

# Remove old X11 session references
unset SESSION_MANAGER
unset WINDOWID

# Isolate LibreOffice from D-Bus session bus
unset DBUS_SESSION_BUS_ADDRESS

# Refresh NSS/DNS lookups
getent hosts "$(hostname)" >/dev/null 2>&1


**EXPECTED BEHAVIOR**

LibreOffice running through X11/XWayland should:
- remain responsive after screen lock and DPMS events
- open local files immediately
- display the UI without long freezes

**REPRODUCIBILITY**

The issue is intermittent but reproducible over time, especially after:
- screen locking
- monitor standby/DPMS events

A logout/login cycle reliably clears the issue temporarily.


This issure has also been reported here: https://gitlab.freedesktop.org/groups/xorg/-/work_items?show=eyJpaWQiOiIxODk2IiwiZnVsbF9wYXRoIjoieG9yZy94c2VydmVyIiwiaWQiOjE1MTY5N30%3D
Comment 1 TraceyC 2026-05-26 18:48:56 UTC
Thanks for the bug report. We'll need more information about what's happening in kwin when the freeze happens in LibreOffice.
Can you check kwin's logs when the freeze occurs? This will produce ~/log.txt, which you can attach to this report.

  journalctl --boot --user-unit plasma-kwin_wayland > ~/log.txt

Also, could you retrieve kwin's backtrace when the freeze happens? You would need to ssh from another computer and attach a debugger to kwin process, e.g.

  sudo gdb -p $(pidof kwin_wayland)

then type

  bt

then press 'c' if it asks you if you want to continue paging

Then copy-and-paste the output here. Thanks!
Comment 2 Capacity5341 2026-05-26 18:59:06 UTC
Thanks for your reply! Since my initial report, we’ve gathered some very interesting additional information.

After discussion with XWayland maintainers (big thanks to Olivier Fourdan), the issue appears to be related to clipboard handling.
The issuse has been reproduced and analyzed.

As soon as any content is copied to the clipboard, LibreOffice immediately unfreezes and returns to normal operation.

This strongly suggests that clipboard synchronization or clipboard ownership handling is involved.

Additional discussion and technical details:
https://gitlab.freedesktop.org/xorg/xserver/-/work_items/1896

Im not sure if this is a KDE or LibreOffice issue.
Comment 3 Capacity5341 2026-05-26 19:06:10 UTC
The link above (https://gitlab.freedesktop.org/xorg/xserver/-/work_items/1896) also includes relevant backtraces.
Comment 4 TraceyC 2026-05-26 20:23:08 UTC
Thanks for the update, the analysis in the other bug report is really helpful. Here's the backtrace with the Qt backend from the other report

(gdb) bt
#0  __syscall_cancel_arch () at ../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S:56
#1  0x00007f8ba696406c in __internal_syscall_cancel (a1=a1@entry=94536399563820, a2=, a3=a3@entry=4169381712, a4=a4@entry=20, a5=a5@entry=0, a6=a6@entry=4294967295, nr=202)
    at cancellation.c:49
#2  0x00007f8ba69643b7 in __futex_abstimed_wait_common64 (private=0, futex_word=0x55faf883ac2c, expected=4169381712, op=137, abstime=0x14, cancel=true) at futex-internal.c:57
#3  __futex_abstimed_wait_common (futex_word=0x55faf883ac2c, expected=4169381712, clockid=1, abstime=0x14, private=0, cancel=true) at futex-internal.c:87
#4  __GI___futex_abstimed_wait_cancelable64
    (futex_word=futex_word@entry=0x55faf883ac2c, expected=expected@entry=1, clockid=clockid@entry=1, abstime=abstime@entry=0x7ffc42bd6e50, private=private@entry=0) at futex-internal.c:139
#5  0x00007f8ba6966e22 in __pthread_cond_wait_common (cond=0x55faf883ac08, mutex=0x55faf883abe0, clockid=, abstime=0x7ffc42bd6e50) at pthread_cond_wait.c:421
#6  ___pthread_cond_timedwait64 (cond=0x55faf883ac08, mutex=0x55faf883abe0, abstime=0x7ffc42bd6e50) at pthread_cond_wait.c:478
#7  0x00007f8b8ef158fe in QWaitConditionPrivate::wait_relative (this=, deadline=...)
    at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/thread/qwaitcondition_unix.cpp:58
#8  QWaitConditionPrivate::wait (this=0x55faf883abe0, deadline=...) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/thread/qwaitcondition_unix.cpp:66
#9  QWaitCondition::wait (this=this@entry=0x55faf8807a10, mutex=mutex@entry=0x55faf8807a08, deadline=...)
    at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/thread/qwaitcondition_unix.cpp:146
#10 0x00007f8b8ef15a88 in QWaitCondition::wait (this=0x55faf8807a10, mutex=0x55faf8807a08, time=)
    at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/thread/qwaitcondition_unix.cpp:134
#11 0x00007f8b8d57399e in QXcbEventQueue::waitForNewEvents
    (this=this@entry=0x55faf8807990, sinceFlushedTail=sinceFlushedTail@entry=0x7f8b8d5ff1d0 , time=) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/plugins/platforms/xcb/qxcbeventqueue.cpp:328
#12 0x00007f8b8d547b1b in QXcbClipboard::waitForClipboardEvent (this=this@entry=0x7f8b80003bb0, window=window@entry=23068730, type=type@entry=31, checkManager=checkManager@entry=false)
    at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/plugins/platforms/xcb/qxcbclipboard.cpp:776
#13 0x00007f8b8d5481e5 in QXcbClipboard::getSelection (this=0x7f8b80003bb0, selection=295, target=297, property=417, time=6273085, time@entry=0)
    at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/plugins/platforms/xcb/qxcbclipboard.cpp:866
#14 0x00007f8b8d549da7 in QXcbClipboard::getDataInFormat (this=, modeAtom=, fmtAtom=)
    at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/plugins/platforms/xcb/qxcbatom.h:225
#15 QXcbClipboardMime::formats_sys (this=0x55fafaf9b050) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/plugins/platforms/xcb/qxcbclipboard.cpp:67
#16 0x00007f8b8e11e409 in QInternalMimeData::formats (this=) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/gui/kernel/qinternalmimedata.cpp:64
#17 0x00007f8b8f4f14a6 in QtTransferable::getTransferDataFlavors (this=0x55fafaf9a070) at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/vcl/qt6/../qt5/QtTransferable.cxx:56
#18 0x00007f8b8f4f256c in operator() (__closure=0x7ffc42bd72d0) at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/vcl/qt6/../qt5/QtTransferable.cxx:213
#19 std::__invoke_impl&> (__f=...) at /usr/include/c++/16/bits/invoke.h:63
#20 std::__invoke_r&> (__fn=...) at /usr/include/c++/16/bits/invoke.h:113
#21 std::_Function_handler >::_M_invoke(const std::_Any_data &) (__functor=...)
    at /usr/include/c++/16/bits/std_function.h:295
#22 0x00007f8b8f4ef881 in QtClipboardTransferable::getTransferDataFlavors (this=0x55fafaf9a070) at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/vcl/qt6/../qt5/QtTransferable.cxx:211
#23 0x00007f8ba2f65da7 in TransferableDataHelper::InitFormats (this=0x7ffc42bd74f0) at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/vcl/source/treelist/transfer.cxx:1324
#24 0x00007f8ba2f66cd6 in TransferableDataHelper::TransferableDataHelper (this=0x7ffc42bd74f0, rxTransferable=, this=, rxTransferable=)
    at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/vcl/source/treelist/transfer.cxx:1141
#25 0x00007f8ba2f66d77 in TransferableDataHelper::CreateFromClipboard (rClipboard=uno::Reference to (QtClipboard *) 0x55faf9ec8770)
    at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/vcl/source/treelist/transfer.cxx:2151
#26 0x00007f8ba2f66e8f in TransferableDataHelper::CreateFromSystemClipboard (pWindow=)
    at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/vcl/source/treelist/transfer.cxx:2173
#27 0x00007f8b49891a90 in SwView::IsPasteAllowed (this=0x55faf9e84a90) at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/include/rtl/ref.hxx:203
#28 0x00007f8b497c8309 in SwBaseShell::StateClpbrd (this=0x55fafaf9ade0, rSet=SfxItemSet of pool 0x55fafa806a20 with parent 0x0 and Which ranges: [(5712, 5712)])
    at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/sw/source/uibase/inc/basesh.hxx:58
#29 0x00007f8ba51523ed in SfxShell::GetSlotState (this=0x55fafaf9ade0, nSlotId=, pIF=, pStateSet=0x0)
    at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/sfx2/source/control/shell.cxx:511
#30 0x00007f8ba5140d36 in SfxDispatcher::QueryState (this=, nSID=, rAny=uno::Any(void))
    at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/sfx2/source/control/dispatch.cxx:2107
#31 0x00007f8ba517a837 in SfxDispatchController_Impl::addStatusListener (this=0x55fafaf963c0, aListener=uno::Reference to (framework::MenuBarManager *) 0x55fafa93ae18, aURL=...)
    at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/include/sfx2/ctrlitem.hxx:63
#32 SfxOfficeDispatch::addStatusListener (this=, aListener=uno::Reference to (framework::MenuBarManager *) 0x55fafa93ae18, aURL=...)
    at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/sfx2/source/control/unoctitm.cxx:284
#33 0x00007f8ba59b0807 in framework::MenuBarManager::Activate (this=0x55fafa93ade0, pMenu=0x55faf9f49210)
    at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/framework/source/uielement/menubarmanager.cxx:692
--Type  for more, q to quit, c to continue without paging--
#34 0x00007f8ba2dc740a in Link::Call (this=0x55faf9f49240, data=0x55faf9f49210) at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/include/tools/link.hxx:104
#35 Menu::Activate (this=0x55faf9f49210) at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/vcl/source/window/menu.cxx:244
#36 0x00007f8ba2dcbaae in Menu::HandleMenuActivateEvent (this=this@entry=0x55fafa6a9a70, pMenu=)
    at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/vcl/source/window/menu.cxx:2621
#37 0x00007f8b8f4e4c33 in QtMenu::DoFullMenuUpdate (this=this@entry=0x55fafa626a30, pMenuBar=0x55fafa6a9a70) at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/include/rtl/ref.hxx:203
#38 0x00007f8b8f4e954e in QtMenu::SetFrame (this=0x55fafa626a30, pFrame=) at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/include/rtl/ref.hxx:203
#39 0x00007f8ba2e0a5a0 in MenuBarWindow::SetMenu (this=0x55fafac5f310, pMen=0x55fafa6a9a70) at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/vcl/source/window/menubarwindow.cxx:191
#40 MenuBar::ImplCreate (this=, pParent=, pWindow=) at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/vcl/source/window/menu.cxx:2504
#41 SystemWindow::SetMenuBar (this=this@entry=0x55fafa3bb720, pMenuBar=pMenuBar@entry=0x55fafa6a9a70) at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/vcl/source/window/syswin.cxx:881
#42 0x00007f8ba590dc4a in framework::LayoutManager::implts_createMenuBar (this=, rMenuBarName="private:resource/menubar/menubar")
    at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/framework/source/layoutmanager/layoutmanager.cxx:188
#43 framework::LayoutManager::createElement (this=, aName="private:resource/menubar/menubar")
    at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/framework/source/layoutmanager/layoutmanager.cxx:1464
#44 0x00007f8ba5131c40 in SfxDispatcher::SetMenu_Impl (this=0x55faf9ec9790) at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/sfx2/source/control/dispatch.cxx:1037
#45 SfxDispatcher::Update_Impl (this=0x55faf9ec9790, bForce=) at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/sfx2/source/control/dispatch.cxx:1102
#46 0x00007f8ba537e327 in SfxBaseController::ConnectSfxFrame_Impl (this=0x55faf9ea3650, i_eConnect=) at /usr/include/c++/16/bits/unique_ptr.h:192
#47 0x00007f8ba537341d in SfxBaseController::attachFrame (this=0x55faf9ea3650, xFrame=)
    at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/sfx2/source/view/sfxbasecontroller.cxx:531
#48 0x00007f8ba536083e in utl::ConnectFrameControllerModel
    (xFrame=uno::Reference to ((anonymous namespace)::XFrameImpl *) 0x55fafa712410, xController=uno::Reference to (SwXTextView *) 0x55faf9ea3678, xModel=uno::Reference to (SwXTextDocument *) 0x55fafacfe0a0) at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/include/unotools/fcm.hxx:57
#49 (anonymous namespace)::SfxFrameLoader_Impl::impl_createDocumentView
    (i_rModel=uno::Reference to (SwXTextDocument *) 0x55fafacfe0a0, i_rFrame=uno::Reference to ((anonymous namespace)::XFrameImpl *) 0x55fafa712410, i_rViewFactoryArgs=..., i_rViewName="Default") at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/sfx2/source/view/frmload.cxx:593
#50 (anonymous namespace)::SfxFrameLoader_Impl::load (this=0x55fafa01fec0, rArgs=, _rTargetFrame=uno::Reference to ((anonymous namespace)::XFrameImpl *) 0x55fafa712410)
    at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/sfx2/source/view/frmload.cxx:813
#51 0x00007f8ba5932cb2 in framework::LoadEnv::impl_loadContent (this=0x55faf9fdf4d8) at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/framework/source/loadenv/loadenv.cxx:1180
#52 framework::LoadEnv::start (this=0x55faf9fdf4d8) at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/framework/source/loadenv/loadenv.cxx:415
#53 framework::LoadEnv::startLoading
    (this=0x55faf9fdf4d8, sURL=, lMediaDescriptor=, xBaseFrame=, sTarget=, nSearchFlags=, eFeature=(LoadEnvFeatures::WorkWithUI | LoadEnvFeatures::AllowContentHandler)) at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/framework/source/loadenv/loadenv.cxx:311
#54 0x00007f8ba589a8ac in framework::LoadDispatcher::impl_dispatch (this=0x55faf9fdf480, rURL=..., lArguments=uno::Sequence of length 2 = {...}, xListener=empty uno::Reference)
    at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/framework/source/dispatch/loaddispatcher.cxx:107
#55 0x00007f8ba589af6b in non-virtual thunk to framework::LoadDispatcher::dispatch(com::sun::star::util::URL const&, com::sun::star::uno::Sequence const&) () at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/framework/source/inc/dispatch/loaddispatcher.hxx:99
#56 0x00007f8ba50ad5e9 in sfx2::RecentDocsView::ExecuteHdl_Impl (this=, p=0x55fafad19ff0)
    at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/sfx2/source/control/recentdocsview.cxx:350
#57 sfx2::RecentDocsView::LinkStubExecuteHdl_Impl (instance=, data=0x55fafad19ff0)
    at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/sfx2/source/control/recentdocsview.cxx:341
#58 0x00007f8ba2e480c1 in Link::Call (this=0x55fafa01e8e8, data=) at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/include/tools/link.hxx:105
#59 ImplHandleUserEvent (pSVEvent=0x55fafa01e8e0) at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/vcl/source/window/winproc.cxx:2314
#60 ImplWindowFrameProc (_pWindow=, nEvent=SalEvent::UserEvent, pEvent=0x55fafa01e8e0)
    at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/vcl/source/window/winproc.cxx:2871
#61 0x00007f8ba309103a in operator() (__closure=) at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/vcl/source/app/salusereventlist.cxx:119
#62 SalUserEventList::DispatchUserEvents (this=this@entry=0x55faf8a3f2a8, bHandleAllCurrentEvents=bHandleAllCurrentEvents@entry=false)
    at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/vcl/source/app/salusereventlist.cxx:120
#63 0x00007f8b8f475f5f in QtInstance::ImplYield (this=this@entry=0x55faf8a3f270, bWait=bWait@entry=true, bHandleAllCurrentEvents=bHandleAllCurrentEvents@entry=false)
    at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/vcl/qt6/../qt5/QtInstance.cxx:496
#64 0x00007f8b8f476130 in QtInstance::DoYield (this=0x55faf8a3f270, bWait=true, bHandleAllCurrentEvents=false)
    at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/vcl/qt6/../qt5/QtInstance.cxx:518
#65 0x00007f8ba30ebda6 in ImplYield (i_bWait=true, i_bAllEvents=false) at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/vcl/source/app/svapp.cxx:389
#66 Application::Yield () at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/vcl/source/app/svapp.cxx:502
#67 0x00007f8ba30ec008 in Application::Execute () at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/vcl/source/app/svapp.cxx:364
#68 0x00007f8ba6b4a09d in desktop::Desktop::Main (this=) at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/desktop/source/app/app.cxx:1681
--Type  for more, q to quit, c to continue without paging--
#69 0x00007f8ba30fdce2 in ImplSVMain () at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/vcl/source/app/svmain.cxx:230
#70 0x00007f8ba30fddb9 in SVMain () at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/vcl/source/app/svmain.cxx:248
#71 0x00007f8ba6b708fc in soffice_main () at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/desktop/source/app/sofficemain.cxx:122
#72 0x000055fac460c406 in sal_main () at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/desktop/source/app/main.c:51
#73 main (argc=, argv=) at /usr/src/debug/libreoffice-26.2.3.2-4.fc44.x86_64/desktop/source/app/main.c:49
(gdb) info threads
  Id   Target Id                                           Frame 
* 1    Thread 0x7f8b9d4c6f40 (LWP 41808) "soffice.bin"     __syscall_cancel_arch () at ../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S:56
  7    Thread 0x7f8b561a16c0 (LWP 41830) "gdbus"           __syscall_cancel_arch () at ../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S:56
  8    Thread 0x7f8b569a26c0 (LWP 41829) "gmain"           __syscall_cancel_arch () at ../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S:56
  9    Thread 0x7f8b5f1b86c0 (LWP 41828) "pool-spawner"    syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
  13   Thread 0x7f8b75e8b6c0 (LWP 41816) "PipeIPC"         __syscall_cancel_arch () at ../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S:56
  14   Thread 0x7f8b7668c6c0 (LWP 41815) "configmgrWriter" __syscall_cancel_arch () at ../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S:56
  15   Thread 0x7f8b77bff6c0 (LWP 41813) "soffice.bin"     __syscall_cancel_arch () at ../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S:56
  16   Thread 0x7f8b8cd346c0 (LWP 41810) "QXcbEventQueue"  __syscall_cancel_arch () at ../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S:56
  17   Thread 0x7f8b8d5356c0 (LWP 41809) "QDBusConnection" __syscall_cancel_arch () at ../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S:56
  18   Thread 0x7f8b4a7fc6c0 (LWP 41885) "Thread (pooled)" __syscall_cancel_arch () at ../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S:56
  19   Thread 0x7f8b4bfff6c0 (LWP 41886) "Thread (pooled)" __syscall_cancel_arch () at ../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S:56
  20   Thread 0x7f8b5ffff6c0 (LWP 41887) "Thread (pooled)" __syscall_cancel_arch () at ../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S:56
  21   Thread 0x7f8b74bf86c0 (LWP 41888) "Thread (pooled)" __syscall_cancel_arch () at ../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S:56
  22   Thread 0x7f8b4b7fe6c0 (LWP 41889) "Thread (pooled)" __syscall_cancel_arch () at ../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S:56
  23   Thread 0x7f8b54ae46c0 (LWP 41890) "Thread (pooled)" __syscall_cancel_arch () at ../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S:56
  24   Thread 0x7f8b4affd6c0 (LWP 41891) "Thread (pooled)" __syscall_cancel_arch () at ../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S:56
  25   Thread 0x7f8b753f96c0 (LWP 41892) "Thread (pooled)" __syscall_cancel_arch () at ../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S:56
(gdb)
Comment 5 Vlad Zahorodnii 2026-05-27 08:09:59 UTC
I can reproduce the issue, it doesn't necessarily mean that it's a Qt issue though.
Comment 6 Vlad Zahorodnii 2026-05-27 08:10:09 UTC
s/Qt/KDE/
Comment 7 Capacity5341 2026-05-27 08:27:04 UTC
(In reply to Vlad Zahorodnii from comment #5)
> I can reproduce the issue, it doesn't necessarily mean that it's a Qt issue
> though.

It also happens on the GTK3 backend
Comment 8 Vlad Zahorodnii 2026-05-27 08:28:24 UTC
Alright, it looks like the issue is caused by kwin's data bridge code. Specifically, it looks like libreoffice asks for clipboard contents provided by a wayland client, but that source doesn't exist anymore.

At the moment, kwin sends no SelectionNotify event to let libreoffice know that no data will be provided. I don't know why no SelectionNotify event is sent in that case, I'll need to do some digging. But since there is no SelectionNotify event, Qt is stuck waiting for an event that will never be sent.
Comment 9 Bug Janitor Service 2026-05-27 08:59:00 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/kwin/-/merge_requests/9280
Comment 10 Vlad Zahorodnii 2026-05-28 08:27:21 UTC
Git commit 89c388a5658fbf48fd302fea707682abf23b4c19 by Vlad Zahorodnii.
Committed on 28/05/2026 at 08:04.
Pushed by vladz into branch 'master'.

xwayland: Send a SelectionNotify if there is no wayland source

If there is no wayland data source, the Selection may not send a
corresponding SelectionNotify event to let the client know about the
failure.

If the client doesn't know that the SelectionRequest has failed, it will
continue thinking that the data will arrive, and it can go pretty bad
with blocking api in QMimeData.

This change makes kwin sends a proper SelectionNotify event in response
to a SelectionRequest when there is no wayland data to pass.

I'm not entirely sure why the else branch of "event->time < m_timestamp"
sends no SelectionNotify event, my best guess it is to handle multiple
clipboard owners in the same process (which doesn't really matter to
kwin).

M  +6    -1    src/xwayland/selection.cpp

https://invent.kde.org/plasma/kwin/-/commit/89c388a5658fbf48fd302fea707682abf23b4c19
Comment 11 Vlad Zahorodnii 2026-05-28 11:00:04 UTC
Git commit fe60767f83cd57f14f449768862be09e44a502a1 by Vlad Zahorodnii.
Committed on 28/05/2026 at 10:04.
Pushed by vladz into branch 'Plasma/6.7'.

xwayland: Send a SelectionNotify if there is no wayland source

If there is no wayland data source, the Selection may not send a
corresponding SelectionNotify event to let the client know about the
failure.

If the client doesn't know that the SelectionRequest has failed, it will
continue thinking that the data will arrive, and it can go pretty bad
with blocking api in QMimeData.

This change makes kwin sends a proper SelectionNotify event in response
to a SelectionRequest when there is no wayland data to pass.

I'm not entirely sure why the else branch of "event->time < m_timestamp"
sends no SelectionNotify event, my best guess it is to handle multiple
clipboard owners in the same process (which doesn't really matter to
kwin).
(cherry picked from commit 89c388a5658fbf48fd302fea707682abf23b4c19)

M  +6    -1    src/xwayland/selection.cpp

https://invent.kde.org/plasma/kwin/-/commit/fe60767f83cd57f14f449768862be09e44a502a1
Comment 12 Vlad Zahorodnii 2026-05-29 13:00:10 UTC
Git commit 8f001d32204d51cd4a3794cfc2f6c54e11da7874 by Vlad Zahorodnii.
Committed on 29/05/2026 at 12:20.
Pushed by vladz into branch 'Plasma/6.6'.

xwayland: Send a SelectionNotify if there is no wayland source

If there is no wayland data source, the Selection may not send a
corresponding SelectionNotify event to let the client know about the
failure.

If the client doesn't know that the SelectionRequest has failed, it will
continue thinking that the data will arrive, and it can go pretty bad
with blocking api in QMimeData.

This change makes kwin sends a proper SelectionNotify event in response
to a SelectionRequest when there is no wayland data to pass.

I'm not entirely sure why the else branch of "event->time < m_timestamp"
sends no SelectionNotify event, my best guess it is to handle multiple
clipboard owners in the same process (which doesn't really matter to
kwin).
(cherry picked from commit 89c388a5658fbf48fd302fea707682abf23b4c19)

M  +6    -1    src/xwayland/selection.cpp

https://invent.kde.org/plasma/kwin/-/commit/8f001d32204d51cd4a3794cfc2f6c54e11da7874