Summary: | Splitting konsole in both Top/Bottom and Left/Right "hangs" it when using the Oxygen widget style | ||
---|---|---|---|
Product: | [Applications] konsole | Reporter: | firewalker <firew4lker> |
Component: | split-view | Assignee: | Konsole Developer <konsole-devel> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | firew4lker, nate, tcanabrava |
Priority: | NOR | ||
Version: | 21.04.0 | ||
Target Milestone: | --- | ||
Platform: | Arch Linux | ||
OS: | Linux | ||
Latest Commit: | https://invent.kde.org/plasma/oxygen/commit/8bd426dbcf45e09501a365d72f0ddcb839fad4fe | Version Fixed In: | 5.22 |
Sentry Crash Report: | |||
Attachments: | works for me on master. |
Description
firewalker
2021-03-29 19:20:29 UTC
Created attachment 137164 [details]
works for me on master.
I need more information, as this works for me in master and I have no hangups.
I also tested version 21.7.70 build from here: https://invent.kde.org/utilities/konsole and it has the same problem. yakuake that seems to use the same subsystem as konsole works as expected. What info could I provide you in order to help more? After some break point and stepping. It seems that it never exits _ZN10QEventLoop4execE6QFlagsINS_17ProcessEventsFlagEE function. 0x00007ffff6b9a87e in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) () from /usr/lib/libQt5Widgets.so.5 (gdb) Single stepping until exit from function _ZN19QApplicationPrivate14sendMouseEventEP7QWidgetP11QMouseEventS1_S1_PS1_R8QPointerIS0_Ebb, which has no line number information. 0x00007ffff6b94752 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5 (gdb) Single stepping until exit from function _ZN19QApplicationPrivate13notify_helperEP7QObjectP6QEvent, which has no line number information. 0x00007ffff7bf1a2a in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5 (gdb) Single stepping until exit from function _ZN16QCoreApplication15notifyInternal2EP7QObjectP6QEvent, which has no line number information. 0x00007ffff64a4594 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () from /usr/lib/libQt5Gui.so.5 (gdb) Single stepping until exit from function _ZN22QGuiApplicationPrivate17processMouseEventEPN29QWindowSystemInterfacePrivate10MouseEventE, which has no line number information. 0x00007ffff6479bb5 in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Gui.so.5 (gdb) Single stepping until exit from function _ZN22QWindowSystemInterface22sendWindowSystemEventsE6QFlagsIN10QEventLoop17ProcessEventsFlagEE, which has no line number information. 0x00007ffff57c6f9c in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0 (gdb) Single stepping until exit from function g_main_context_dispatch, which has no line number information. 0x00007ffff58149a0 in g_mutex_unlock () from /usr/lib/libglib-2.0.so.0 (gdb) Single stepping until exit from function g_mutex_unlock, which has no line number information. 0x00007ffff57c46f1 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0 (gdb) Single stepping until exit from function g_main_context_iteration, which has no line number information. 0x00007ffff7c4a691 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5 (gdb) Single stepping until exit from function _ZN20QEventDispatcherGlib13processEventsE6QFlagsIN10QEventLoop17ProcessEventsFlagEE, which has no line number information. 0x00007ffff7bf03ac in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5 (gdb) Single stepping until exit from function _ZN10QEventLoop4execE6QFlagsINS_17ProcessEventsFlagEE, which has no line number information. qt.qpa.xcb: QXcbConnection: XCB error: 8 (BadMatch), sequence: 3905, resource id: 169869344, major code: 130 (Unknown), minor code: 3 qt.qpa.xcb: QXcbConnection: XCB error: 8 (BadMatch), sequence: 3910, resource id: 169869344, major code: 130 (Unknown), minor code: 3 qt.qpa.xcb: QXcbConnection: XCB error: 8 (BadMatch), sequence: 3915, resource id: 169869344, major code: 130 (Unknown), minor code: 3 qt.qpa.xcb: QXcbConnection: XCB error: 8 (BadMatch), sequence: 3920, resource id: 169869344, major code: 130 (Unknown), minor code: 3 qt.qpa.xcb: QXcbConnection: XCB error: 8 (BadMatch), sequence: 3925, resource id: 169869344, major code: 130 (Unknown), minor code: 3 qt.qpa.xcb: QXcbConnection: XCB error: 8 (BadMatch), sequence: 3930, resource id: 169869344, major code: 130 (Unknown), minor code: 3 qt.qpa.xcb: QXcbConnection: XCB error: 8 (BadMatch), sequence: 3935, resource id: 169869344, major code: 130 (Unknown), minor code: 3 qt.qpa.xcb: QXcbConnection: XCB error: 8 (BadMatch), sequence: 4105, resource id: 169869344, major code: 130 (Unknown), minor code: 3 launching konsole with --notransparency seems to adress the issue. It has something to do with my selected theme. Removing those lines from [KDE] in ./config/kdeglobals fixes the issue. [KDE] ColorScheme=Breeze LookAndFeelPackage=org.kde.oxygen widgetStyle=oxygen When I create the second split, for some reason, konsole creates a new toplevel window. At this point, everything just breaks. If compositing is disabled, konsole doesn't create any window. Furthermore, this issue appears to be present only when using oxygen widget style. When using breeze or fusion, splits work fine. On Wayland, konsole won't create a toplevel window after splitting the window the second time, but one half of konsole will be corrupted similar as in bug report. I run konsole as `konsole -style oxygen -platform xcb` If konsole runs as a native wayland app with oxygen style, this bug can't be reproduced. The issue is in Oxygen's BlurHelper, it creates a window which then breaks everything * frame #0: 0x00007ffff4570fb0 libxcb.so.1`xcb_create_window frame #1: 0x00007ffff0b586f5 libQt5XcbQpa.so.5`QXcbWindow::create() + 1157 frame #2: 0x00007ffff0b47787 libQt5XcbQpa.so.5`QXcbIntegration::createPlatformWindow(QWindow*) const + 295 frame #3: 0x00007ffff5b69067 libQt5Gui.so.5`QWindowPrivate::create(bool, unsigned long long) + 167 frame #4: 0x00007ffff6280928 libQt5Widgets.so.5`QWidgetPrivate::create() + 632 frame #5: 0x00007ffff6280ea1 libQt5Widgets.so.5`QWidget::create(unsigned long long, bool, bool) + 241 frame #6: 0x00007ffff6283335 libQt5Widgets.so.5`QWidget::winId() const + 85 frame #7: 0x00007fffeaedae2c oxygen.so`Oxygen::BlurHelper::clear(this=0x00005555557c69d0, widget=0x0000555555e10700) const at oxygenblurhelper.cpp:274:60 frame #8: 0x00007fffeaedacaf oxygen.so`Oxygen::BlurHelper::unregisterWidget(this=0x00005555557c69d0, widget=0x0000555555e10700) at oxygenblurhelper.cpp:100:39 frame #9: 0x00007fffeaeea63c oxygen.so`Oxygen::Style::unpolish(this=0x00005555557c5720, widget=0x0000555555e10700) at oxygenstyle.cpp:520:22 A possibly relevant merge request was started @ https://invent.kde.org/plasma/oxygen/-/merge_requests/6 Git commit 8bd426dbcf45e09501a365d72f0ddcb839fad4fe by Vlad Zahorodnii. Committed on 27/04/2021 at 16:17. Pushed by ngraham into branch 'master'. Don't call BlurHelper::clear() for unregistered widgets BlurHelper::clear() will call QWidget::winId(), which may create a toplevel window. M +3 -3 kstyle/oxygenblurhelper.cpp https://invent.kde.org/plasma/oxygen/commit/8bd426dbcf45e09501a365d72f0ddcb839fad4fe Yep! That single change addressees the issue. Thanks you! |