Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Crash when I try to open settings of Maliit virtual keyboard on Wayland session of KDE Plasma #85

Closed
glaubersm opened this issue Jan 19, 2022 · 10 comments

Comments

@glaubersm
Copy link

Hi

Originally reported on KDE bug tracker.
https://bugs.kde.org/show_bug.cgi?id=434977

To reproduce this crash, activate Mallit virtual keyboard on Wayland session of KDE Plasma and try to open its settings.

KDE developer Vlad Zahorodnii said in comment 4:

I don't see anything relevant in the wayland debug log. Anyway, based on

maliit/keyboard#1  0x00007f2c89c20fcc in KCrash::defaultCrashHandler (sig=11) at ./src/kcrash.cpp:576
maliit/keyboard#2  <signal handler called>
maliit/keyboard#3  0x00007f2c7dd16004 in QtWayland::zwp_input_panel_v1::get_input_panel_surface(wl_surface*) () from /usr/lib/x86_64-linux-gnu/qt5/plugins/wayland-shell-integration/libinputpanel-shell.so

it looks like client-side bug. Can you report this crash to maliit developers?

Complete backtrace:

Thread 6 (Thread 0x7f2c6ffff700 (LWP 19569)):
#0  futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x5631b7718f28) at ../sysdeps/nptl/futex-internal.h:183
maliit/keyboard#1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x5631b7718ed8, cond=0x5631b7718f00) at pthread_cond_wait.c:508
maliit/keyboard#2  __pthread_cond_wait (cond=0x5631b7718f00, mutex=0x5631b7718ed8) at pthread_cond_wait.c:638
maliit/keyboard#3  0x00007f2c7e276e6b in ?? () from /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
maliit/keyboard#4  0x00007f2c7e276a6b in ?? () from /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
maliit/keyboard#5  0x00007f2c89b9d609 in start_thread (arg=<optimized out>) at pthread_create.c:477
maliit/keyboard#6  0x00007f2c8a55c293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 5 (Thread 0x7f2c7cb54700 (LWP 19568)):
#0  futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x5631b7718f28) at ../sysdeps/nptl/futex-internal.h:183
maliit/keyboard#1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x5631b7718ed8, cond=0x5631b7718f00) at pthread_cond_wait.c:508
maliit/keyboard#2  __pthread_cond_wait (cond=0x5631b7718f00, mutex=0x5631b7718ed8) at pthread_cond_wait.c:638
maliit/keyboard#3  0x00007f2c7e276e6b in ?? () from /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
maliit/keyboard#4  0x00007f2c7e276a6b in ?? () from /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
maliit/keyboard#5  0x00007f2c89b9d609 in start_thread (arg=<optimized out>) at pthread_create.c:477
maliit/keyboard#6  0x00007f2c8a55c293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 4 (Thread 0x7f2c7d355700 (LWP 19567)):
#0  futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x5631b7718f28) at ../sysdeps/nptl/futex-internal.h:183
maliit/keyboard#1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x5631b7718ed8, cond=0x5631b7718f00) at pthread_cond_wait.c:508
maliit/keyboard#2  __pthread_cond_wait (cond=0x5631b7718f00, mutex=0x5631b7718ed8) at pthread_cond_wait.c:638
maliit/keyboard#3  0x00007f2c7e276e6b in ?? () from /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
maliit/keyboard#4  0x00007f2c7e276a6b in ?? () from /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
maliit/keyboard#5  0x00007f2c89b9d609 in start_thread (arg=<optimized out>) at pthread_create.c:477
maliit/keyboard#6  0x00007f2c8a55c293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 3 (Thread 0x7f2c7db56700 (LWP 19566)):
#0  futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x5631b7718f28) at ../sysdeps/nptl/futex-internal.h:183
maliit/keyboard#1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x5631b7718ed8, cond=0x5631b7718f00) at pthread_cond_wait.c:508
maliit/keyboard#2  __pthread_cond_wait (cond=0x5631b7718f00, mutex=0x5631b7718ed8) at pthread_cond_wait.c:638
maliit/keyboard#3  0x00007f2c7e276e6b in ?? () from /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
maliit/keyboard#4  0x00007f2c7e276a6b in ?? () from /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
maliit/keyboard#5  0x00007f2c89b9d609 in start_thread (arg=<optimized out>) at pthread_create.c:477
maliit/keyboard#6  0x00007f2c8a55c293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 2 (Thread 0x7f2c851cc700 (LWP 19564)):
#0  0x00007f2c8a54faff in __GI___poll (fds=0x7f2c80005240, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
maliit/keyboard#1  0x00007f2c891de36e in g_main_context_poll (priority=<optimized out>, n_fds=1, fds=0x7f2c80005240, timeout=<optimized out>, context=0x7f2c80000c20) at ../../../glib/gmain.c:4346
maliit/keyboard#2  g_main_context_iterate (context=context@entry=0x7f2c80000c20, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:4042
maliit/keyboard#3  0x00007f2c891de4a3 in g_main_context_iteration (context=0x7f2c80000c20, may_block=may_block@entry=1) at ../../../glib/gmain.c:4108
maliit/keyboard#4  0x00007f2c8ab1affb in QEventDispatcherGlib::processEvents (this=0x7f2c80000b60, flags=...) at kernel/qeventdispatcher_glib.cpp:425
maliit/keyboard#5  0x00007f2c8aabf1eb in QEventLoop::exec (this=this@entry=0x7f2c851cbcb0, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141
maliit/keyboard#6  0x00007f2c8a8d9a52 in QThread::exec (this=this@entry=0x7f2c89e59d80 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at ../../include/QtCore/../../src/corelib/global/qflags.h:121
maliit/keyboard#7  0x00007f2c89dd5f4b in QDBusConnectionManager::run (this=0x7f2c89e59d80 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at qdbusconnection.cpp:179
maliit/keyboard#8  0x00007f2c8a8dabec in QThreadPrivate::start (arg=0x7f2c89e59d80 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at thread/qthread_unix.cpp:329
maliit/keyboard#9  0x00007f2c89b9d609 in start_thread (arg=<optimized out>) at pthread_create.c:477
maliit/keyboard#10 0x00007f2c8a55c293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 1 (Thread 0x7f2c86b5a180 (LWP 19563)):
#0  __GI_raise (sig=sig@entry=11) at ../sysdeps/unix/sysv/linux/raise.c:50
maliit/keyboard#1  0x00007f2c89c20fcc in KCrash::defaultCrashHandler (sig=11) at ./src/kcrash.cpp:576
maliit/keyboard#2  <signal handler called>
maliit/keyboard#3  0x00007f2c7dd16004 in QtWayland::zwp_input_panel_v1::get_input_panel_surface(wl_surface*) () from /usr/lib/x86_64-linux-gnu/qt5/plugins/wayland-shell-integration/libinputpanel-shell.so
maliit/keyboard#4  0x00007f2c7dd14af3 in QtWaylandClient::QWaylandInputPanelShellIntegration::createShellSurface(QtWaylandClient::QWaylandWindow*) () from /usr/lib/x86_64-linux-gnu/qt5/plugins/wayland-shell-integration/libinputpanel-shell.so
maliit/keyboard#5  0x00007f2c86d48a15 in QtWaylandClient::QWaylandWindow::initWindow (this=0x5631b76352b0) at qwaylandwindow.cpp:145
maliit/keyboard#6  0x00007f2c86d48f9a in QtWaylandClient::QWaylandWindow::setVisible (visible=true, this=0x5631b76352b0) at qwaylandwindow.cpp:429
maliit/keyboard#7  QtWaylandClient::QWaylandWindow::setVisible (this=0x5631b76352b0, visible=<optimized out>) at qwaylandwindow.cpp:419
maliit/keyboard#8  0x00007f2c8af659fb in QWindowPrivate::setVisible (this=0x5631b7799e20, visible=visible@entry=true) at kernel/qwindow.cpp:408
maliit/keyboard#9  0x00007f2c8b6ac921 in QWidgetWindow::setNativeWindowVisibility (this=this@entry=0x5631b7797370, visible=visible@entry=true) at kernel/qwidgetwindow.cpp:215
maliit/keyboard#10 0x00007f2c8b685e0e in QWidgetPrivate::show_sys (this=this@entry=0x5631b76408f0) at kernel/qwidget.cpp:7892
maliit/keyboard#11 0x00007f2c8b68f5bf in QWidgetPrivate::show_helper (this=this@entry=0x5631b76408f0) at kernel/qwidget.cpp:7815
maliit/keyboard#12 0x00007f2c8b6926a3 in QWidgetPrivate::setVisible (this=0x5631b76408f0, visible=<optimized out>) at kernel/qwidget.cpp:8111
maliit/keyboard#13 0x00007f2c8b692966 in QWidget::setVisible (this=this@entry=0x5631b7642a90, visible=visible@entry=true) at kernel/qwidget.cpp:8043
maliit/keyboard#14 0x00007f2c8b85bcc8 in QDialog::setVisible (this=0x5631b7642a90, visible=<optimized out>) at dialogs/qdialog.cpp:787
maliit/keyboard#15 0x00007f2c8b85b326 in QDialog::exec (this=0x5631b7642a90) at dialogs/qdialog.cpp:593
maliit/keyboard#16 0x00007f2c89fc2511 in KMessageBox::createKMessageBox (dialog=0x5631b7642a90, buttons=0x5631b7640660, icon=..., text=..., strlist=..., ask=..., checkboxReturn=0x0, options=..., details=..., notifyType=QMessageBox::Critical) at /usr/include/c++/9/bits/atomic_base.h:413
maliit/keyboard#17 0x00007f2c89fc2ae1 in KMessageBox::createKMessageBox (dialog=dialog@entry=0x5631b7642a90, buttons=buttons@entry=0x5631b7640660, icon=icon@entry=QMessageBox::Critical, text=..., strlist=..., ask=..., checkboxReturn=0x0, options=..., details=...) at ./src/kmessagebox.cpp:182
maliit/keyboard#18 0x00007f2c89fc5727 in KMessageBox::errorListInternal (dialog=0x5631b7642a90, text=..., strlist=..., caption=..., options=options@entry=...) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qarraydata.h:257
maliit/keyboard#19 0x00007f2c89fc6dfd in KMessageBox::messageBoxInternal (dialog=0x5631b7642a90, type=<optimized out>, text=..., caption=..., buttonYes=..., buttonNo=..., buttonCancel=..., dontShow=..., options=...) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qlist.h:160
maliit/keyboard#20 0x00007f2c89fc6f06 in KMessageBox::messageBox (parent=0xc1eef48bfd248400, type=<optimized out>, text=..., caption=..., buttonYes=..., buttonNo=..., buttonCancel=..., dontShow=..., options=...) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qflags.h:120
maliit/keyboard#21 0x00007f2c8a3d134f in KDialogJobUiDelegatePrivate::next (this=0x5631b76795e0) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qarraydata.h:257
maliit/keyboard#22 0x00007f2c8aaee279 in QObject::event (this=0x5631b76795e0, e=0x5631b75e0f90) at kernel/qobject.cpp:1314
maliit/keyboard#23 0x00007f2c8b64fdc3 in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x5631b76795e0, e=0x5631b75e0f90) at kernel/qapplication.cpp:3632
maliit/keyboard#24 0x00007f2c8b658bb8 in QApplication::notify(QObject*, QEvent*) () at kernel/qapplication.cpp:3156
maliit/keyboard#25 0x00007f2c8aac06da in QCoreApplication::notifyInternal2 (receiver=0x5631b76795e0, event=0x5631b75e0f90) at ../../include/QtCore/5.15.2/QtCore/private/../../../../../src/corelib/thread/qthread_p.h:325
maliit/keyboard#26 0x00007f2c8aac2fe1 in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x5631b7579a80) at kernel/qcoreapplication.cpp:1817
maliit/keyboard#27 0x00007f2c8ab1b987 in postEventSourceDispatch (s=0x5631b75e5b50) at kernel/qeventdispatcher_glib.cpp:277
maliit/keyboard#28 0x00007f2c891de17d in g_main_dispatch (context=0x5631b75dec00) at ../../../glib/gmain.c:3309
maliit/keyboard#29 g_main_context_dispatch (context=context@entry=0x5631b75dec00) at ../../../glib/gmain.c:3974
maliit/keyboard#30 0x00007f2c891de400 in g_main_context_iterate (context=context@entry=0x5631b75dec00, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:4047
maliit/keyboard#31 0x00007f2c891de4a3 in g_main_context_iteration (context=0x5631b75dec00, may_block=may_block@entry=1) at ../../../glib/gmain.c:4108
maliit/keyboard#32 0x00007f2c8ab1afe2 in QEventDispatcherGlib::processEvents (this=0x5631b75da550, flags=...) at kernel/qeventdispatcher_glib.cpp:423
maliit/keyboard#33 0x00007f2c8aabf1eb in QEventLoop::exec (this=this@entry=0x7fff55012140, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:141
maliit/keyboard#34 0x00007f2c8aac7394 in QCoreApplication::exec () at ../../include/QtCore/../../src/corelib/global/qflags.h:121
maliit/keyboard#35 0x00005631b7492e4b in ClientApp::kde_open (this=0x7fff55012350, url=..., mimeType=..., allowExec=<optimized out>) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qcoreapplication.h:116
maliit/keyboard#36 0x00005631b74933fa in ClientApp::doIt (this=0x7fff55012350, parser=...) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qlist.h:117
maliit/keyboard#37 0x00005631b74920bd in main (argc=<optimized out>, argv=<optimized out>) at ./kioclient/kioclient.cpp:195
@dobey
Copy link
Contributor

dobey commented Jan 19, 2022

What is the process that crashed here? This doesn't seem to be an issue in any Maliit code…

@dobey
Copy link
Contributor

dobey commented Jan 21, 2022

Closing as this is not a crash in maliit, but seems to be an issue with QtWayland on your system.

@dobey dobey closed this as completed Jan 21, 2022
@zzag
Copy link

zzag commented Feb 3, 2022

maliit/keyboard#3 0x00007f2c7dd16004 in QtWayland::zwp_input_panel_v1::get_input_panel_surface(wl_surface*) () from /usr/lib/x86_64-linux-gnu/qt5/plugins/wayland-shell-integration/libinputpanel-shell.so

that's maliit code

@dobey dobey reopened this Feb 3, 2022
@dobey dobey transferred this issue from maliit/keyboard Feb 3, 2022
@dobey
Copy link
Contributor

dobey commented Feb 3, 2022

maliit/keyboard#3 0x00007f2c7dd16004 in QtWayland::zwp_input_panel_v1::get_input_panel_surface(wl_surface*) () from /usr/lib/x86_64-linux-gnu/qt5/plugins/wayland-shell-integration/libinputpanel-shell.so

that's maliit code

Oh, that's a plugin from framework (where I've moved the issue now). Can you reproduce this issue? FWIW, the settings menu option on the keyboard under plasma simply calls

QDesktopServices::openUrl(QUrl("systemsettings://kcm_mobile_virtualkeyboard"));

which I presume results in kioclient running, and perhaps failing to open the URL, since it's from the plasma-settings for Plasma Mobile, and popping a dialog (which maybe has some text entry focused by default and thus trying to request the input panel surface?), and for some reason causes this crash.

@dobey
Copy link
Contributor

dobey commented Feb 27, 2022

Another issue was reported with a similar crash on Fedora, which was resolved after they upgraded to maliit-framework 2.2.0. Can you please verify if rebuilding maliit-framework or upgrading to 2.2.0 has resolved this problem? Thanks.

@dobey dobey closed this as completed Feb 27, 2022
@glaubersm
Copy link
Author

As we can observe in the screenshot below, there is no button to configure maliit 2.2 on neon unstable.

maliit

@dobey
Copy link
Contributor

dobey commented Mar 5, 2022

As we can observe in the screenshot below, there is no button to configure maliit 2.2 on neon unstable.

Long press on the emoji button will still bring up the menu to open settings.

@Pointedstick
Copy link

No crash for me when I do that.

@glaubersm
Copy link
Author

Can confirm that the crash is fixed. But maliit settings does not open. The weird System Settings seen below opens instead when I tap 'Settings...'.

maliit

@dobey
Copy link
Contributor

dobey commented Mar 7, 2022

Can confirm that the crash is fixed. But maliit settings does not open. The weird System Settings seen below opens instead when I tap 'Settings...'.

Yes, this is a Plasma issue. It has two different virtual keyboard KCMs. One for "desktop" that lets you select which keyboard to use, and another in the plasma-mobile/plasma-settings repo which is actually for configuring maliit.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants