Bug 497457 - Haruna crashes upon setting keyboard binding and does not inhibit screensaver (swayidle)
Summary: Haruna crashes upon setting keyboard binding and does not inhibit screensaver...
Status: RESOLVED FIXED
Alias: None
Product: frameworks-kguiaddons
Classification: Frameworks and Libraries
Component: general (show other bugs)
Version: 6.9.0
Platform: Arch Linux Linux
: NOR crash
Target Milestone: ---
Assignee: kdelibs bugs
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-12-14 13:00 UTC by bluemax48
Modified: 2024-12-17 09:36 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In: 6.10
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description bluemax48 2024-12-14 13:00:04 UTC
***
If you're not sure this is actually a bug, instead post about it at https://discuss.kde.org

If you're reporting a crash, attach a backtrace with debug symbols; see https://community.kde.org/Guidelines_and_HOWTOs/Debugging/How_to_create_useful_crash_reports

Please remove this comment after reading and before submitting - thanks!
***

SUMMARY

I installed this program and everything went good for playback and the options, but i found 2 problems.

Whenever i try to set a keyboarding binding using the GUI, the program crashes (coredump)
Setting the keyboard binding using `shortcuts.conf` works, i think its a GUI problem. The issue i'm having is that i am unable to set the keyboard binding of custom commands (there is no option in `custom-commands.conf` to set the keyboard binding.

In the other hand, i am unable to disable the screensaver when i am playing a video. mpv is able to do this with `swayidle`, but haruna does not seem to have this feature, or its not woking in here.

I tried adding the stop-screensaver (`set stop-screensaver yes`) in custom commands, but this didnt work either.

Is there a way to use the program with this features without using KDE? I think my issues are related to not using the KDE DE



STEPS TO REPRODUCE
1. Open haruna
2. open "shortcuts"
3. Try to change a shortcut keyboard binding clicking the corresponding option
4. the program freezes and crashes
OBSERVED RESULT


EXPECTED RESULT


SOFTWARE/OS VERSIONS
Windows: 
macOS: 
(available in the Info Center app, or by running `kinfo` in a terminal window)
Linux/KDE Plasma: 1.21.
KDE Plasma Version: - I use LXQt DE with wlroots-based compositor (labwc)
KDE Frameworks Version: 
Qt Version: 6.8.1

ADDITIONAL INFORMATION
i use `swayidle` to disable the screensaver
If required, i can share a coredump of this.
Comment 1 george fb 2024-12-16 18:19:52 UTC
(In reply to bluemax48 from comment #0)
> Whenever i try to set a keyboarding binding using the GUI, the program
> crashes (coredump)

Does it happen with the flatpak version?
Comment 2 bluemax48 2024-12-16 21:13:31 UTC
Hi, unfortunately it does:

 flatpak run org.kde.haruna 


unknown() : qrc:/qt/qml/org/kde/haruna/qml/Settings/GeneralSettings.qml:15:1: QML GeneralSettings: Created graphical object was not placed in the graphics scene.

unknown() : qrc:/qt/qml/org/kde/haruna/qml/Settings/CustomCommandsSettings.qml:15:1: QML CustomCommandsSettings: Created graphical object was not placed in the graphics scene.

unknown() : qrc:/qt/qml/org/kde/haruna/qml/Settings/ShortcutsSettings.qml:17:1: QML ShortcutsSettings: Created graphical object was not placed in the graphics scene.
Comment 3 george fb 2024-12-16 21:49:11 UTC
Please try with the latest version too.
Either compile it yourself or install the latest version through flatpak

```
flatpak uninstall org.kde.haruna
flatpak install --user --or-update https://cdn.kde.org/flatpak/kde-runtime-nightly/org.kde.Platform.flatpakref
flatpak install --user --or-update https://cdn.kde.org/flatpak/haruna-nightly/org.kde.haruna.flatpakref
```
https://userbase.kde.org/Tutorials/Flatpak#Nightly_KDE_apps
Comment 4 bluemax48 2024-12-16 22:29:45 UTC
Same error.

I ran the commands you have mentioned (that installs haruna kde nightly flatpak) and it has the same error when reproducing the issue.

I also installed the lastest haruna from git master branch (https://aur.archlinux.org/packages/haruna-git) and unfortunately it also triggers the issue.

I will try to run:

coredumpctl gdb haruna

to see if i can find something useful
Comment 5 bluemax48 2024-12-17 00:07:50 UTC
Ok, here is the log. I think the issue may be related to Wayland(i'm using labwc which is a wayland composer).

I hope it helps.

coredumpctl gdb haruna

(gdb) where


#0  wl_proxy_get_version (proxy=0x0) at ../wayland-1.23.1/src/wayland-client.c:2317
#1  0x00007228891127f4 in zwp_keyboard_shortcuts_inhibit_manager_v1_inhibit_shortcuts
    (zwp_keyboard_shortcuts_inhibit_manager_v1=0x0, surface=0x577917211d20, seat=0x577915b1f880)
    at /usr/src/debug/kguiaddons/build/src/wayland-keyboard-shortcuts-inhibit-unstable-v1-client-protocol.h:236
#2  QtWayland::zwp_keyboard_shortcuts_inhibit_manager_v1::inhibit_shortcuts (this=<optimized out>, surface=0x577917211d20, seat=0x577915b1f880)
    at /usr/src/debug/kguiaddons/build/src/qwayland-keyboard-shortcuts-inhibit-unstable-v1.cpp:78
#3  ShortcutsInhibitManager::startInhibition (this=<optimized out>, window=<optimized out>)
    at /usr/src/debug/kguiaddons/kguiaddons-6.9.0/src/recorder/waylandinhibition.cpp:81
#4  WaylandInhibition::enableInhibition (this=<optimized out>) at /usr/src/debug/kguiaddons/kguiaddons-6.9.0/src/recorder/waylandinhibition.cpp:124
#5  0x000072288910e23d in KKeySequenceRecorder::startRecording (this=0x577917313620)
    at /usr/src/debug/kguiaddons/kguiaddons-6.9.0/src/recorder/kkeysequencerecorder.cpp:542
#6  0x000072288910fb27 in KKeySequenceRecorder::qt_metacall
    (this=this@entry=0x577917313620, _c=_c@entry=QMetaObject::InvokeMetaMethod, _id=8, _a=_a@entry=0x7ffe90b39370)
    at /usr/src/debug/kguiaddons/build/src/KF6GuiAddons_autogen/include/moc_kkeysequencerecorder.cpp:284
#7  0x000072284639ed0f in KeySequenceHelper::qt_metacall
    (this=0x577917313620, _c=QMetaObject::InvokeMetaMethod, _id=<optimized out>, _a=0x7ffe90b39370)
    at /usr/src/debug/kdeclarative/build/src/qmlcontrols/kquickcontrols/private/kquickcontrolsprivateplugin_autogen/include/moc_keysequencehelper.cpp:240
#8  0x0000722889714a8b in QQmlObjectOrGadget::metacall
    (this=0x7ffe90b39610, type=QMetaObject::InvokeMetaMethod, index=<optimized out>, argv=<optimized out>)
    at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/qml/qqmlobjectorgadget.cpp:14
#9  0x00007228895dda1f in QV4::CallMethod
    (object=..., index=12, returnType=..., argCount=0, argTypes=0x0, engine=0x577915c34f60, callArgs=<optimized out>, callType=QMetaObject::InvokeMetaMethod) at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:1697
#10 QV4::QObjectMethod::callPrecise (object=..., data=..., engine=<optimized out>, callArgs=<optimized out>, callType=QMetaObject::InvokeMetaMethod)
    at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:1994
#11 0x00007228895e89dd in operator() (__closure=<optimized out>)
    at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:2984
#12 operator()<QV4::QObjectMethod::callInternal(const QV4::Value*, const QV4::Value*, int) const::<lambda()> >
    (__closure=<synthetic pointer>, call=<optimized out>)
    at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:2961
#13 QV4::QObjectMethod::callInternal (this=0x7ffe90b39710, thisObject=<optimized out>, argv=0x72286807e500, argc=0)
    at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:2984
#14 0x000072288964d70f in QV4::Moth::VME::interpret (frame=0x7ffe90b39af0, engine=0x577915c34f60, code=0x5779173189b0 "Є[\211(r")
    at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/jsruntime/qv4vme_moth.cpp:798
#15 0x00007228896564bf in QV4::Moth::VME::exec (frame=<optimized out>, engine=<optimized out>)
    at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/jsruntime/qv4vme_moth.cpp:487
--Type <RET> for more, q to quit, c to continue without paging--c
#16 0x000072288958f2a4 in QV4::doCall
    (self=<optimized out>, thisObject=<optimized out>, argv=<optimized out>, argc=<optimized out>, context=<optimized out>)
    at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/jsruntime/qv4function.cpp:52
#17 0x0000722889598cf8 in QV4::Function::call
    (this=this@entry=0x57791731a0f0, thisObject=<optimized out>, argv=argv@entry=0x72286807e4f8, argc=argc@entry=0, context=context@entry=0x722846e9b0f8) at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/jsruntime/qv4function.cpp:77
#18 0x0000722889598fe9 in operator() (__closure=<synthetic pointer>, thisObject=<optimized out>, argv=0x72286807e4f8, argc=0)
    at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/jsruntime/qv4function.cpp:28
#19 QV4::convertAndCall<QV4::Function::call(QObject*, void**, const QMetaType*, int, QV4::ExecutionContext*)::<lambda(const QV4::Value*, const QV4::Value*, int)> > (engine=<optimized out>, thisObject=0x57791731bbe0, a=0x7ffe90b39dd0, types=0x7ffe90b39dc0, argc=0, call=...)                         
    at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/jsruntime/qv4jscall_p.h:199
#20 QV4::Function::call (this=0x57791731a0f0, thisObject=0x57791731bbe0, a=0x7ffe90b39dd0, types=0x7ffe90b39dc0, argc=0, context=0x722846e9b0f8)
    at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/jsruntime/qv4function.cpp:25
#21 0x00007228896e5a64 in QQmlJavaScriptExpression::evaluate (this=<optimized out>, a=<optimized out>, types=<optimized out>, argc=<optimized out>)
    at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/qml/qqmljavascriptexpression_p.h:248
#22 0x0000722889687423 in QQmlBoundSignalExpression::evaluate (this=0x577917326370, a=a@entry=0x0)
    at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/qml/qqmlboundsignal.cpp:200
#23 0x000072288968c65f in QQmlBoundSignal_callback (e=0x5779173263e0, a=0x0)
    at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/qml/ftw/qqmlrefcount_p.h:73
#24 QQmlBoundSignal_callback (e=0x5779173263e0, a=0x0) at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/qml/qqmlboundsignal.cpp:294
#25 0x000072288970781c in QQmlNotifier::emitNotify (endpoint=<optimized out>, a=0x0)
    at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/qml/qqmlnotifier.cpp:70
#26 0x00007228883b182a in doActivate<false> (sender=0x57791731bbe0, signal_index=71, argv=0x0)
    at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:4014
#27 0x00007228792b3beb in QQuickAbstractButtonPrivate::toggle (this=0x57791731d2c0, value=255)
    at /usr/src/debug/qt6-declarative/qtdeclarative/src/quicktemplates/qquickabstractbutton.cpp:389
#28 QQuickAbstractButton::nextCheckState (this=<optimized out>)
    at /usr/src/debug/qt6-declarative/qtdeclarative/src/quicktemplates/qquickabstractbutton.cpp:1313
#29 0x00007228792b3512 in QQuickAbstractButtonPrivate::handleRelease (this=this@entry=0x57791731d2c0, point=..., timestamp=timestamp@entry=8303824)
    at /usr/src/debug/qt6-declarative/qtdeclarative/src/quicktemplates/qquickabstractbutton.cpp:183
#30 0x00007228792d0610 in QQuickControl::mouseReleaseEvent (this=<optimized out>, event=0x7ffe90b3c5a0)
    at /usr/src/debug/qt6-declarative/qtdeclarative/src/quicktemplates/qquickcontrol.cpp:2029
#31 0x0000722889ba3675 in QQuickItemPrivate::deliverPointerEvent (this=this@entry=0x57791731d2c0, event=event@entry=0x7ffe90b3c5a0)
    at /usr/src/debug/qt6-declarative/qtdeclarative/src/quick/items/qquickitem.cpp:5629
#32 0x0000722889ba38cb in QQuickItem::event (this=0x57791731bbe0, ev=0x7ffe90b3c5a0)
    at /usr/src/debug/qt6-declarative/qtdeclarative/src/quick/items/qquickitem.cpp:9076
#33 0x000072288a2fe78a in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x57791731bbe0, e=0x7ffe90b3c5a0)
    at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qapplication.cpp:3296
#34 0x0000722888357ac8 in QCoreApplication::notifyInternal2 (receiver=0x57791731bbe0, event=0x7ffe90b3c5a0)
    at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1168
#35 0x0000722888357b0d in QCoreApplication::sendEvent (receiver=<optimized out>, event=<optimized out>)
    at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1612
#36 0x0000722889d66460 in QQuickDeliveryAgentPrivate::deliverMatchingPointsToItem
    (this=this@entry=0x577917335130, item=item@entry=0x57791731bbe0, isGrabber=isGrabber@entry=true, pointerEvent=pointerEvent@entry=0x7ffe90b3c5a0, handlersOnly=handlersOnly@entry=false) at /usr/src/debug/qt6-declarative/qtdeclarative/src/quick/util/qquickdeliveryagent.cpp:2408
#37 0x0000722889d66b12 in QQuickDeliveryAgentPrivate::deliverUpdatedPoints (this=this@entry=0x577917335130, event=event@entry=0x7ffe90b3c5a0)
    at /usr/src/debug/qt6-declarative/qtdeclarative/src/quick/util/qquickdeliveryagent.cpp:2186
#38 0x0000722889d68ab3 in QQuickDeliveryAgentPrivate::deliverPointerEvent (this=this@entry=0x577917335130, event=event@entry=0x7ffe90b3c5a0)
    at /usr/src/debug/qt6-declarative/qtdeclarative/src/quick/util/qquickdeliveryagent.cpp:2026
#39 0x0000722889d69bad in QQuickDeliveryAgentPrivate::handleMouseEvent (this=this@entry=0x577917335130, event=event@entry=0x7ffe90b3c5a0)
    at /usr/src/debug/qt6-declarative/qtdeclarative/src/quick/util/qquickdeliveryagent.cpp:1783
#40 0x0000722889d6a353 in QQuickDeliveryAgent::event (this=<optimized out>, ev=0x7ffe90b3c5a0)
    at /usr/src/debug/qt6-declarative/qtdeclarative/src/quick/util/qquickdeliveryagent.cpp:823
#41 0x0000722889c5e9dc in QQuickWindow::event (this=<optimized out>, event=<optimized out>)
    at /usr/src/debug/qt6-declarative/qtdeclarative/src/quick/items/qquickwindow.cpp:1550
#42 0x000072288a2fe78a in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x57791748f820, e=0x7ffe90b3c5a0)
    at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qapplication.cpp:3296
#43 0x0000722888357ac8 in QCoreApplication::notifyInternal2 (receiver=0x57791748f820, event=0x7ffe90b3c5a0)
    at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1168
#44 0x0000722888357b1d in QCoreApplication::sendSpontaneousEvent (receiver=<optimized out>, event=<optimized out>)
    at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1626
#45 0x000072288898752b in QGuiApplicationPrivate::processMouseEvent (e=0x72285c003bc0)
    at /usr/src/debug/qt6-base/qtbase/src/gui/kernel/qguiapplication.cpp:2461
#46 0x0000722888a02b44 in QWindowSystemInterface::sendWindowSystemEvents (flags=...)
    at /usr/src/debug/qt6-base/qtbase/src/gui/kernel/qwindowsysteminterface.cpp:1114
#47 0x0000722888e4ea14 in userEventSourceDispatch (source=<optimized out>)
    at /usr/src/debug/qt6-base/qtbase/src/gui/platform/unix/qeventdispatcher_glib.cpp:38
#48 0x0000722884d0d559 in g_main_dispatch (context=0x72286c000f30) at ../glib/glib/gmain.c:3357
#49 0x0000722884d70257 in g_main_context_dispatch_unlocked (context=0x72286c000f30) at ../glib/glib/gmain.c:4208
#50 g_main_context_iterate_unlocked.isra.0
    (context=context@entry=0x72286c000f30, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4273
#51 0x0000722884d0ca55 in g_main_context_iteration (context=0x72286c000f30, may_block=1) at ../glib/glib/gmain.c:4338
#52 0x00007228885c22fd in QEventDispatcherGlib::processEvents (this=0x577915aef8b0, flags=...)
    at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:399
#53 0x0000722888361ee6 in QEventLoop::processEvents (this=0x7ffe90b3ca60, flags=...)
    at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventloop.cpp:103
#54 QEventLoop::exec (this=0x7ffe90b3ca60, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventloop.cpp:194
#55 0x0000722888358f4f in QCoreApplication::exec () at /usr/src/debug/qt6-base/qtbase/src/corelib/global/qflags.h:74
#56 0x000057790ba53efb in ??? ()
#57 0x0000722887c34e08 in __libc_start_call_main (main=main@entry=0x57790ba539d0, argc=argc@entry=1, argv=argv@entry=0x7ffe90b3ccd8)
    at ../sysdeps/nptl/libc_start_call_main.h:58
#58 0x0000722887c34ecc in __libc_start_main_impl
    (main=0x57790ba539d0, argc=1, argv=0x7ffe90b3ccd8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffe90b3ccc8) at ../csu/libc-start.c:360
#59 0x000057790ba54575 in ??? ()
(gdb)
Comment 6 george fb 2024-12-17 01:10:37 UTC
(In reply to bluemax48 from comment #0)
> Linux/KDE Plasma: 1.21.
What does this mean?
Comment 7 bluemax48 2024-12-17 01:16:29 UTC
It seems to be the Haruna version, it seems to be wrongly displayed. 1.2.1 is the haruna version, not any Linux version.(Check the info box in the top of this report).

uname -r

6.12.4-arch1-1
Comment 8 Bug Janitor Service 2024-12-17 08:05:51 UTC
A possibly relevant merge request was started @ https://invent.kde.org/frameworks/kguiaddons/-/merge_requests/152
Comment 9 David Redondo 2024-12-17 09:21:37 UTC
Git commit ad7f80857647cef7408d81bb1270312cf6acc20d by David Redondo.
Committed on 17/12/2024 at 08:18.
Pushed by davidre into branch 'master'.

Dont crash if the compostior doesnt support the shortcut inhibit protocol
FIXED-IN:6.10

M  +9    -0    src/recorder/waylandinhibition.cpp

https://invent.kde.org/frameworks/kguiaddons/-/commit/ad7f80857647cef7408d81bb1270312cf6acc20d
Comment 10 bluemax48 2024-12-17 09:36:31 UTC
I just compiled kguiaddons from git(using the AUR) and i can confirm the crashing does not occur anymore.

Thanks for the fix.

I understand that implementing another option into the idle inhibitor is a bigger task so that could be done in the future. For the moment this could be marked as fixed.