Skip to content

Random crashing in Wayland when not using keyboard #131

@nyanpasu64

Description

@nyanpasu64

I noticed Fedora KDE activates the on-screen keyboard by default. This results in random crashes in coredumpctl:

maliit/keyboard#8  0x00007ffae560dd5e in qBadAlloc () at global/qglobal.cpp:3372
maliit/keyboard#9  0x00007ffae56152e9 in QString::QString (this=this@entry=0x7fff1e6ad1b8, size=size@entry=-2140115104) at text/qstring.cpp:2168
maliit/keyboard#10 0x00007ffae5878322 in QUtf8::convertToUnicode (chars=0x55df11ae0ba8 "", len=-2140115104) at codecs/qutfcodec.cpp:485
maliit/keyboard#11 0x00007ffae56e07e9 in QString::fromUtf8_helper (str=<optimized out>, size=<optimized out>) at text/qstring.cpp:5598
maliit/keyboard#12 0x00007ffae734f756 in QString::fromUtf8 (str=<optimized out>, size=-2140115104) at /usr/include/qt5/QtCore/qstring.h:703
maliit/keyboard#13 Maliit::Wayland::InputMethodContext::zwp_input_method_context_v1_surrounding_text (this=0x55df11b79180, text=<optimized out>, cursor=0, anchor=2154852192) at /usr/src/debug/maliit-framework-2.3.0-9.fc42.x86_64/connection/waylandinputmethodconnection.cpp:601
maliit/keyboard#14 0x00007ffae734c4ba in QtWayland::zwp_input_method_context_v1::handle_surrounding_text (data=0x55df11b79180, object=<optimized out>, text=<optimized out>, cursor=0, anchor=2154852192) at /usr/src/debug/maliit-framework-2.3.0-9.fc42.x86_64/redhat-linux-build/qwayland-input-method-unstable-v1.cpp:207
maliit/keyboard#15 0x00007ffae54a8056 in ffi_call_unix64 () at ../src/x86/unix64.S:104
maliit/keyboard#16 0x00007ffae54a3d08 in ffi_call_int (cif=cif@entry=0x7fff1e6ad460, fn=fn@entry=0x7ffae734c450 <QtWayland::zwp_input_method_context_v1::handle_surrounding_text(void*, zwp_input_method_context_v1*, char const*, unsigned int, unsigned int)>, rvalue=<optimized out>, rvalue@entry=0x0, avalue=avalue@entry=0x7fff1e6ad530, closure=closure@entry=0x0) at ../src/x86/ffi64.c:673
maliit/keyboard#17 0x00007ffae54a670e in ffi_call (cif=cif@entry=0x7fff1e6ad460, fn=0x7ffae734c450 <QtWayland::zwp_input_method_context_v1::handle_surrounding_text(void*, zwp_input_method_context_v1*, char const*, unsigned int, unsigned int)>, rvalue=rvalue@entry=0x0, avalue=avalue@entry=0x7fff1e6ad530) at ../src/x86/ffi64.c:710
maliit/keyboard#18 0x00007ffae628c422 in wl_closure_invoke (closure=closure@entry=0x7ffabc006f70, target=<optimized out>, target@entry=0x7ffabc005b60, opcode=opcode@entry=0, data=<optimized out>, flags=1) at ../src/connection.c:1228
maliit/keyboard#19 0x00007ffae628cc79 in dispatch_event (display=display@entry=0x55df117d6a50, queue=queue@entry=0x55df117d6b48) at ../src/wayland-client.c:1674
maliit/keyboard#20 0x00007ffae628d063 in dispatch_queue (display=0x55df117d6a50, queue=0x55df117d6b48) at ../src/wayland-client.c:1820
maliit/keyboard#21 wl_display_dispatch_queue_pending (display=0x55df117d6a50, queue=0x55df117d6b48) at ../src/wayland-client.c:2062
maliit/keyboard#22 0x00007ffae0ea3a5e in QtWaylandClient::QWaylandDisplay::flushRequests (this=<optimized out>) at /usr/src/debug/qt5-qtwayland-5.15.17-1.fc42.x86_64/src/client/qwaylanddisplay.cpp:255
maliit/keyboard#23 0x00007ffae584c6b4 in QObject::event (this=<optimized out>, e=<optimized out>) at kernel/qobject.cpp:1347
maliit/keyboard#24 0x00007ffae581f258 in QCoreApplication::notifyInternal2 (receiver=0x55df117d68f0, event=0x7ffac4002610) at kernel/qcoreapplication.cpp:1064
maliit/keyboard#25 0x00007ffae581f472 in QCoreApplication::sendEvent (receiver=<optimized out>, event=<optimized out>) at kernel/qcoreapplication.cpp:1462
maliit/keyboard#26 0x00007ffae5822788 in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=event_type@entry=0, data=0x55df117cb210) at kernel/qcoreapplication.cpp:1821
maliit/keyboard#27 0x00007ffae5822a30 in QCoreApplication::sendPostedEvents (receiver=<optimized out>, event_type=0) at kernel/qcoreapplication.cpp:1680
maliit/keyboard#28 0x00007ffae5874dcf in postEventSourceDispatch (s=0x55df11855be0) at kernel/qeventdispatcher_glib.cpp:277
maliit/keyboard#29 0x00007ffae6aeb880 in g_main_dispatch (context=0x7ffacc000ed0) at ../glib/gmain.c:3398
maliit/keyboard#30 g_main_context_dispatch_unlocked (context=0x7ffacc000ed0) at ../glib/gmain.c:4249
maliit/keyboard#31 0x00007ffae6af47c8 in g_main_context_iterate_unlocked (context=context@entry=0x7ffacc000ed0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4314
maliit/keyboard#32 0x00007ffae6af4973 in g_main_context_iteration (context=0x7ffacc000ed0, may_block=1) at ../glib/gmain.c:4379
maliit/keyboard#33 0x00007ffae5874867 in QEventDispatcherGlib::processEvents (this=0x55df1184c680, flags=...) at kernel/qeventdispatcher_glib.cpp:423
maliit/keyboard#34 0x00007ffae581dbc2 in QEventLoop::exec (this=this@entry=0x7fff1e6adaf0, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69
maliit/keyboard#35 0x00007ffae5825fa4 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1375
maliit/keyboard#36 0x000055deeaa6bf1d in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/maliit-keyboard-2.3.1-10.fc42.x86_64/src/keyboard/keyboard.cpp:40

QtWayland::zwp_input_method_context_v1::handle_surrounding_text appears to be called with an invalid anchor, which gets passed unchecked into an invalid length to convert via QString::fromUtf8, resulting in an abort. I don't know why this happens.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions