maliit / framework

Core libraries of Maliit and server.
Other
52 stars 46 forks source link

Crashes frequently in Fedora 34 and 35 #86

Closed Pointedstick closed 2 years ago

Pointedstick commented 2 years ago

On Fedora 34 and 35, I commonly see crashes like this, seemingly randomly:

#0  0x00007fa7598c8f14 in QtWayland::zwp_input_method_context_v1::handle_surrounding_text(void*, zwp_input_method_context_v1*, char const*, unsigned int, unsigned int)
    (data=0x55b00aa2e820, object=0x55b00a9ab8b0, text=0x55b00ad04d6c "https://www.ecosia.org/search?q=large+surface+combatant&addon=firefox&addonversion=4.0.4", cursor=0, anchor=0)
    at /usr/src/debug/maliit-framework-2.0.0-4.fc35.x86_64/redhat-linux-build/qwayland-input-method-unstable-v1.cpp:207
maliit/keyboard#1  0x00007fa7575c7c04 in ffi_call_unix64 () at ../src/x86/unix64.S:76
maliit/keyboard#2  0x00007fa7575c7108 in ffi_call (cif=cif@entry=0x7ffc4b6d2760, fn=<optimized out>, rvalue=<optimized out>, rvalue@entry=0x0, avalue=avalue@entry=0x7ffc4b6d2830) at ../src/x86/ffi64.c:525
maliit/keyboard#3  0x00007fa7578a2d10 in wl_closure_invoke (closure=closure@entry=0x55b00ad04c90, target=<optimized out>, target@entry=0x55b00a9ab8b0, opcode=opcode@entry=0, data=<optimized out>, flags=<optimized out>)
    at ../src/connection.c:1018
maliit/keyboard#4  0x00007fa7578a341b in dispatch_event (display=display@entry=0x55b00a7514a0, queue=0x55b00a751570, queue=<optimized out>) at ../src/wayland-client.c:1452
maliit/keyboard#5  0x00007fa7578a360c in dispatch_queue (queue=0x55b00a751570, display=0x55b00a7514a0) at ../src/wayland-client.c:1598
maliit/keyboard#6  wl_display_dispatch_queue_pending (display=0x55b00a7514a0, queue=0x55b00a751570) at ../src/wayland-client.c:1840
maliit/keyboard#7  0x00007fa746c8a6a3 in QtWaylandClient::QWaylandDisplay::flushRequests() (this=0x55b00a751310) at /usr/src/debug/qt5-qtwayland-5.15.2-15.fc35.x86_64/src/client/qwaylanddisplay.cpp:222
maliit/keyboard#8  0x00007fa75815e430 in doActivate<false>(QObject*, int, void**) (sender=0x55b00a7a1590, signal_index=3, argv=0x7ffc4b6d2b00) at kernel/qobject.cpp:3898
maliit/keyboard#9  0x00007fa758159367 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
    (sender=sender@entry=0x55b00a7a1590, m=m@entry=0x7fa758403460 <QSocketNotifier::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffc4b6d2b00)
    at kernel/qobject.cpp:3946
maliit/keyboard#10 0x00007fa758160b8a in QSocketNotifier::activated(QSocketDescriptor, QSocketNotifier::Type, QSocketNotifier::QPrivateSignal) (this=this@entry=0x55b00a7a1590, _t1=..., _t2=<optimized out>, _t3=...)
    at .moc/moc_qsocketnotifier.cpp:178
maliit/keyboard#11 0x00007fa7581613a3 in QSocketNotifier::event(QEvent*) (this=0x55b00a7a1590, e=0x7ffc4b6d2bd0) at kernel/qsocketnotifier.cpp:302
maliit/keyboard#12 0x00007fa75812a7d8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x55b00a7a1590, event=0x7ffc4b6d2bd0) at kernel/qcoreapplication.cpp:1064
maliit/keyboard#13 0x00007fa75817c63f in socketNotifierSourceDispatch(GSource*, GSourceFunc, gpointer) (source=0x55b00a7a38a0) at kernel/qeventdispatcher_glib.cpp:107
maliit/keyboard#14 0x00007fa758bb0130 in g_main_dispatch (context=0x55b00a7b3630) at ../glib/gmain.c:3381
maliit/keyboard#15 g_main_context_dispatch (context=0x55b00a7b3630) at ../glib/gmain.c:4099
maliit/keyboard#16 0x00007fa758c05208 in g_main_context_iterate.constprop.0 (context=context@entry=0x55b00a7b3630, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4175
maliit/keyboard#17 0x00007fa758bad933 in g_main_context_iteration (context=0x55b00a7b3630, may_block=1) at ../glib/gmain.c:4240
maliit/keyboard#18 0x00007fa75817bbb8 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x55b00a7a7800, flags=...) at kernel/qeventdispatcher_glib.cpp:423
maliit/keyboard#19 0x00007fa7581291e2 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7ffc4b6d2e40, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69
maliit/keyboard#20 0x00007fa758131724 in QCoreApplication::exec() () at ../../include/QtCore/../../src/corelib/global/qflags.h:121
maliit/keyboard#21 0x000055b008a1669c in main(int, char**) (argc=<optimized out>, argv=0x7ffc4b6d3088) at /usr/src/debug/maliit-keyboard-2.0.0-3.fc35.x86_64/src/keyboard/keyboard.cpp:40

(And yes, I'm aware of the irony of using a treehugger search engine to look up information about naval warships)

bhush9 commented 2 years ago

Can you tell me steps to reproduce this?

Pointedstick commented 2 years ago

I have not found anything consistent. :( It's literally just "select some text and sometimes maliit-keyboard crashes with this backtrace"

dobey commented 2 years ago

Can you verify if latest git build still does this for you? If so, I'd like to find it and get a fix in for it, to make a release. Of particular note is that we switched to text-input-v2, though i'm not sure if that would be related to whatever the actual problem is here.

Pointedstick commented 2 years ago

I have not been successful at compiling from source. maliit-plugins fails for me with this error:

/home/nate/Documents/FOSS/3rdParty/maliit-plugins/maliit-keyboard/lib/logic/spellchecker.cpp:206:46: error: cannot convert ‘QByteArray’ to ‘const string&’ {aka ‘const std::__cxx11::basic_string<char>&’}
  206 |     if (d->hunspell.add(d->codec->fromUnicode(word))) {
      |                         ~~~~~~~~~~~~~~~~~~~~~^~~~~~
      |                                              |
      |                                              QByteArray
dobey commented 2 years ago

I have not been successful at compiling from source. maliit-plugins fails for me with this error:

That is dead and you don't need to compile it. Can you not compile just the keyboard (this repo)? If you have the maliit-framework-devel (I presume that's what Fedora calls it) package installed, it should satisfy the maliit-plugins library requirement (which I presume is what led you to trying to build maliit-plugins). You'll also need hunspell and presage for spell checking and text prediction, qtfeedback (though maybe useless on a PC), qtmultimedia and qtdeclarative of course, and anthy, libpinyin, and libchewing if you want to build CJK methods.

Pointedstick commented 2 years ago

Ah ok. Unfortunately the Fedora repos don't seem to have presage.

dobey commented 2 years ago

Ah ok. Unfortunately the Fedora repos don't seem to have presage.

OK, you can build without it using -Denagle-presage=OFF argument to cmake.

Pointedstick commented 2 years ago

OK I got it built. I'll live with it for a while and see if it stops crashing.

Pointedstick commented 2 years ago

I installed it to /usr/local/ and rebooted, but I'm afraid it's still crashing. Here's a newer and more complete backtrace:

#0  QList<QtWaylandClient::QWaylandDisplay::RegistryGlobal>::Node::t() (this=0x9633c50)
    at /usr/include/qt5/QtCore/qlist.h:151
maliit/keyboard#1  QList<QtWaylandClient::QWaylandDisplay::RegistryGlobal>::const_iterator::operator*() const
    (this=<synthetic pointer>) at /usr/include/qt5/QtCore/qlist.h:313
maliit/keyboard#2  QtWaylandClient::QWaylandInputPanelShellIntegration::initialize(QtWaylandClient::QWaylandDisplay*) (this=0x1647030, display=0x1013250)
    at /usr/src/debug/maliit-framework-2.0.0-4.fc35.x86_64/src/qt/plugins/shellintegration/qwaylandinputpanelshellintegration.cpp:35
maliit/keyboard#3  0x00007f077c00d397 in QtWaylandClient::QWaylandShellIntegrationFactory::create(QString const&, QtWaylandClient::QWaylandDisplay*, QStringList const&, QString const&)
    (name=..., display=0x1013250, args=..., pluginPath=<optimized out>)
    at shellintegration/qwaylandshellintegrationfactory.cpp:95
maliit/keyboard#4  0x00007f077bfe9ea1 in QtWaylandClient::QWaylandIntegration::createShellIntegration(QString const&) (this=this@entry=0x100c230, integrationName=...) at /usr/include/qt5/QtCore/qscopedpointer.h:138
maliit/keyboard#5  0x00007f077bfea0cb in QtWaylandClient::QWaylandIntegration::initializeShellIntegration()
    (this=0x100c230)
    at /usr/src/debug/qt5-qtwayland-5.15.2-17.fc35.x86_64/src/client/qwaylandintegration.cpp:422
maliit/keyboard#6  0x00007f077bff5508 in QtWaylandClient::QWaylandIntegration::shellIntegration() const
    (this=0x100c230)
    at /usr/src/debug/qt5-qtwayland-5.15.2-17.fc35.x86_64/src/client/qwaylandintegration.cpp:323
maliit/keyboard#7  QtWaylandClient::QWaylandDisplay::shellIntegration() const (this=<optimized out>)
    at /usr/src/debug/qt5-qtwayland-5.15.2-17.fc35.x86_64/src/client/qwaylanddisplay.cpp:320
maliit/keyboard#8  0x00007f077bff5531 in QtWaylandClient::QWaylandWindow::shouldCreateShellSurface() const
    (this=this@entry=0x159c6e0)
    at /usr/src/debug/qt5-qtwayland-5.15.2-17.fc35.x86_64/src/client/qwaylandwindow.cpp:220
maliit/keyboard#9  0x00007f077bff9e1a in QtWaylandClient::QWaylandWindow::initWindow() (this=0x159c6e0)
    at /usr/src/debug/qt5-qtwayland-5.15.2-17.fc35.x86_64/src/client/qwaylandwindow.cpp:137
maliit/keyboard#10 0x00007f077bffa426 in QtWaylandClient::QWaylandWindow::setVisible(bool)
    (visible=<optimized out>, this=0x159c6e0)
    at /usr/src/debug/qt5-qtwayland-5.15.2-17.fc35.x86_64/src/client/qwaylandwindow.cpp:435
maliit/keyboard#11 QtWaylandClient::QWaylandWindow::setVisible(bool) (this=0x159c6e0, visible=<optimized out>)
    at /usr/src/debug/qt5-qtwayland-5.15.2-17.fc35.x86_64/src/client/qwaylandwindow.cpp:425
maliit/keyboard#12 0x00007f078d836feb in QWindowPrivate::setVisible(bool) (this=0xfff590, visible=<optimized out>)
    at kernel/qwindow.cpp:408
maliit/keyboard#13 0x000000000041a387 in InputMethod::show() ()
maliit/keyboard#14 0x00007f078d2423e9 in QtPrivate::QSlotObjectBase::call(QObject*, void**)
    (a=0x7ffc43fe2220, r=<optimized out>, this=0x15c5350)
    at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
maliit/keyboard#15 doActivate<false>(QObject*, int, void**)
    (sender=0x10bd1c0, signal_index=8, argv=0x7ffc43fe2220) at kernel/qobject.cpp:3886
maliit/keyboard#16 0x00007f078ebf0321 in Maliit::Wayland::InputMethodContext::InputMethodContext(MInputContextConnection*, zwp_input_method_context_v1*)
    (this=0x161c0c0, connection=0x10bd1c0, object=<optimized out>, this=<optimized out>, connection=<optimized out>, object=<optimized out>)
    at /usr/src/debug/maliit-framework-2.0.0-4.fc35.x86_64/connection/waylandinputmethodconnection.cpp:514
maliit/keyboard#17 0x00007f078ebf0b82 in Maliit::Wayland::InputMethod::zwp_input_method_v1_activate(zwp_input_method_context_v1*) (this=0x15c6060, id=0x7f076c005d00)
    at /usr/src/debug/maliit-framework-2.0.0-4.fc35.x86_64/connection/waylandinputmethodconnection.cpp:488
maliit/keyboard#18 0x00007f078c8eac04 in ffi_call_unix64 () at ../src/x86/unix64.S:76
maliit/keyboard#19 0x00007f078c8ea108 in ffi_call
    (cif=cif@entry=0x7ffc43fe2490, fn=<optimized out>, rvalue=<optimized out>, 
    rvalue@entry=0x0, avalue=avalue@entry=0x7ffc43fe2560) at ../src/x86/ffi64.c:525
maliit/keyboard#20 0x00007f078c988d10 in wl_closure_invoke
    (closure=closure@entry=0x7f076c00efc0, target=<optimized out>, 
    target@entry=0x1627d00, opcode=opcode@entry=0, data=<optimized out>, flags=<optimized out>)
    at ../src/connection.c:1018
maliit/keyboard#21 0x00007f078c98941b in dispatch_event
    (display=display@entry=0x1013440, queue=0x1013510, queue=<optimized out>)
    at ../src/wayland-client.c:1452
maliit/keyboard#22 0x00007f078c98960c in dispatch_queue (queue=0x1013510, display=0x1013440)
    at ../src/wayland-client.c:1598
maliit/keyboard#23 wl_display_dispatch_queue_pending (display=0x1013440, queue=0x1013510)
    at ../src/wayland-client.c:1840
maliit/keyboard#24 0x00007f077bff4025 in QtWaylandClient::QWaylandDisplay::flushRequests() (this=<optimized out>)
    at /usr/src/debug/qt5-qtwayland-5.15.2-17.fc35.x86_64/src/client/qwaylanddisplay.cpp:253
maliit/keyboard#25 0x00007f078d238f49 in QObject::event(QEvent*) (this=0x1013250, e=0x7f0774004780)
    at kernel/qobject.cpp:1314
maliit/keyboard#26 0x00007f078d20e7d8 in QCoreApplication::notifyInternal2(QObject*, QEvent*)
    (receiver=0x1013250, event=0x7f0774004780) at kernel/qcoreapplication.cpp:1064
maliit/keyboard#27 0x00007f078d211d46 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*)
    (receiver=0x0, event_type=0, data=0x1006ff0) at kernel/qcoreapplication.cpp:1821
maliit/keyboard#28 0x00007f078d260117 in postEventSourceDispatch(GSource*, GSourceFunc, gpointer) (s=0x105dab0)
    at kernel/qeventdispatcher_glib.cpp:277
maliit/keyboard#29 0x00007f078de4f05f in g_main_dispatch (context=0x10717b0) at ../glib/gmain.c:3381
maliit/keyboard#30 g_main_context_dispatch (context=0x10717b0) at ../glib/gmain.c:4099
maliit/keyboard#31 0x00007f078dea42a8 in g_main_context_iterate.constprop.0
    (context=context@entry=0x10717b0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4175
maliit/keyboard#32 0x00007f078de4c853 in g_main_context_iteration (context=0x10717b0, may_block=1)
    at ../glib/gmain.c:4240
maliit/keyboard#33 0x00007f078d25fbb8 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x10658f0, flags=...) at kernel/qeventdispatcher_glib.cpp:423
maliit/keyboard#34 0x00007f078d20d1e2 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>)
    (this=this@entry=0x7ffc43fe2af0, flags=..., flags@entry=...)
    at ../../include/QtCore/../../src/corelib/global/qflags.h:69
maliit/keyboard#35 0x00007f078d215724 in QCoreApplication::exec() ()
    at ../../include/QtCore/../../src/corelib/global/qflags.h:121
maliit/keyboard#36 0x000000000040f9a3 in main ()
dobey commented 2 years ago

maliit/keyboard#2 QtWaylandClient::QWaylandInputPanelShellIntegration::initialize(QtWaylandClient::QWaylandDisplay*) (this=0x1647030, display=0x1013250)

Hrmm, are you using a qtwayland built from kde/5.15 and have maliit-framework built against fedora qtwayland or something?

Pointedstick commented 2 years ago

I don't have qtwayland built from source anywhere; I use the qt5-qtwayland-devel Fedora package for it.

dobey commented 2 years ago

OK. Can you try to build the wayland-crash branch of https://github.com/maliit/framework too? It's where this last crash occurred, and while the looks like it should be ok,it could have been simplified, and it might fix this crash. This is in the wayland shell integration plugin, which needs to be in the qt5/plugins/ path of your Qt installation.

dobey commented 2 years ago

Oops. I just realized that the issue was reported against keyboard, but both of the stack traces are in framework, and I've moved it there. Please try to build framework from git, and with the above branch, to see if it resolves the issues for you. Thanks.

Pointedstick commented 2 years ago

OK, I build maliit-frameworks from source and then build maliit-keyboard again for good measure and then rebooted, and I am still getting crashes:

(gdb) bt
#0  QList<QtWaylandClient::QWaylandDisplay::RegistryGlobal>::Node::t() (this=0xa910d90)
    at /usr/include/qt5/QtCore/qlist.h:151
#1  QList<QtWaylandClient::QWaylandDisplay::RegistryGlobal>::const_iterator::operator*() const
    (this=<synthetic pointer>) at /usr/include/qt5/QtCore/qlist.h:313
#2  QtWaylandClient::QWaylandInputPanelShellIntegration::initialize(QtWaylandClient::QWaylandDisplay*) (this=0x1842580, display=0x1221580)
    at /usr/src/debug/maliit-framework-2.0.0-4.fc35.x86_64/src/qt/plugins/shellintegration/qwaylandinputpanelshellintegration.cpp:35
#3  0x00007fe8d85c5397 in QtWaylandClient::QWaylandShellIntegrationFactory::create(QString const&, QtWaylandClient::QWaylandDisplay*, QStringList const&, QString const&)
    (name=..., display=0x1221580, args=..., pluginPath=<optimized out>)
    at shellintegration/qwaylandshellintegrationfactory.cpp:95
#4  0x00007fe8d85a1ea1 in QtWaylandClient::QWaylandIntegration::createShellIntegration(QString const&) (this=this@entry=0x121a560, integrationName=...) at /usr/include/qt5/QtCore/qscopedpointer.h:138
#5  0x00007fe8d85a20cb in QtWaylandClient::QWaylandIntegration::initializeShellIntegration()
    (this=0x121a560)
    at /usr/src/debug/qt5-qtwayland-5.15.2-17.fc35.x86_64/src/client/qwaylandintegration.cpp:422
#6  0x00007fe8d85ad508 in QtWaylandClient::QWaylandIntegration::shellIntegration() const
    (this=0x121a560)
    at /usr/src/debug/qt5-qtwayland-5.15.2-17.fc35.x86_64/src/client/qwaylandintegration.cpp:323
#7  QtWaylandClient::QWaylandDisplay::shellIntegration() const (this=<optimized out>)
    at /usr/src/debug/qt5-qtwayland-5.15.2-17.fc35.x86_64/src/client/qwaylanddisplay.cpp:320
#8  0x00007fe8d85ad531 in QtWaylandClient::QWaylandWindow::shouldCreateShellSurface() const
    (this=this@entry=0x17a7610)
    at /usr/src/debug/qt5-qtwayland-5.15.2-17.fc35.x86_64/src/client/qwaylandwindow.cpp:220
#9  0x00007fe8d85b1e1a in QtWaylandClient::QWaylandWindow::initWindow() (this=0x17a7610)
    at /usr/src/debug/qt5-qtwayland-5.15.2-17.fc35.x86_64/src/client/qwaylandwindow.cpp:137
#10 0x00007fe8d85b2426 in QtWaylandClient::QWaylandWindow::setVisible(bool)
    (visible=<optimized out>, this=0x17a7610)
    at /usr/src/debug/qt5-qtwayland-5.15.2-17.fc35.x86_64/src/client/qwaylandwindow.cpp:435
#11 QtWaylandClient::QWaylandWindow::setVisible(bool) (this=0x17a7610, visible=<optimized out>)
    at /usr/src/debug/qt5-qtwayland-5.15.2-17.fc35.x86_64/src/client/qwaylandwindow.cpp:425
#12 0x00007fe8e9deefeb in QWindowPrivate::setVisible(bool)
    (this=0x12ef4c0, visible=<optimized out>) at kernel/qwindow.cpp:408
#13 0x000000000041a387 in InputMethod::show() ()
#14 0x00007fe8e97fa3e9 in QtPrivate::QSlotObjectBase::call(QObject*, void**)
    (a=0x7ffd75aec7b0, r=<optimized out>, this=0x17cf6c0)
    at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
#15 doActivate<false>(QObject*, int, void**)
    (sender=0x12cad70, signal_index=8, argv=0x7ffd75aec7b0) at kernel/qobject.cpp:3886
#16 0x00007fe8eb1a8321 in Maliit::Wayland::InputMethodContext::InputMethodContext(MInputContextConnection*, zwp_input_method_context_v1*)
    (this=0x180dbd0, connection=0x12cad70, object=<optimized out>, this=<optimized out>, connection=<optimized out>, object=<optimized out>)
    at /usr/src/debug/maliit-framework-2.0.0-4.fc35.x86_64/connection/waylandinputmethodconnection.cpp:514
#17 0x00007fe8eb1a8b82 in Maliit::Wayland::InputMethod::zwp_input_method_v1_activate(zwp_input_method_context_v1*) (this=0x17d0850, id=0x7fe8c8005f70)
    at /usr/src/debug/maliit-framework-2.0.0-4.fc35.x86_64/connection/waylandinputmethodconnection.cpp:488
#18 0x00007fe8e8ea2c04 in ffi_call_unix64 () at ../src/x86/unix64.S:76
#19 0x00007fe8e8ea2108 in ffi_call
    (cif=cif@entry=0x7ffd75aeca20, fn=<optimized out>, rvalue=<optimized out>, 
    rvalue@entry=0x0, avalue=avalue@entry=0x7ffd75aecaf0) at ../src/x86/ffi64.c:525
#20 0x00007fe8e8f40d10 in wl_closure_invoke
    (closure=closure@entry=0x7fe8c800fb70, target=<optimized out>, 
    target@entry=0x1835bd0, opcode=opcode@entry=0, data=<optimized out>, flags=<optimized out>)
    at ../src/connection.c:1018
#21 0x00007fe8e8f4141b in dispatch_event
    (display=display@entry=0x1221770, queue=0x1221840, queue=<optimized out>)
    at ../src/wayland-client.c:1452
#22 0x00007fe8e8f4160c in dispatch_queue (queue=0x1221840, display=0x1221770)
    at ../src/wayland-client.c:1598
#23 wl_display_dispatch_queue_pending (display=0x1221770, queue=0x1221840)
    at ../src/wayland-client.c:1840
#24 0x00007fe8d85ac025 in QtWaylandClient::QWaylandDisplay::flushRequests() (this=<optimized out>)
    at /usr/src/debug/qt5-qtwayland-5.15.2-17.fc35.x86_64/src/client/qwaylanddisplay.cpp:253
#25 0x00007fe8e97fa430 in doActivate<false>(QObject*, int, void**)
    (sender=0x12739b0, signal_index=4, argv=0x7ffd75aecd40) at kernel/qobject.cpp:3898
#26 0x00007fe8e97f5367 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
    (sender=sender@entry=0x12739b0, m=m@entry=0x7fe8e9a9eae0 <QAbstractEventDispatcher::staticMetaObject>, local_signal_index=local_signal_index@entry=1, argv=argv@entry=0x0)
    at kernel/qobject.cpp:3946
#27 0x00007fe8e97c32b7 in QAbstractEventDispatcher::awake() (this=this@entry=0x12739b0)
    at .moc/moc_qabstracteventdispatcher.cpp:149
#28 0x00007fe8e9817c4b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x12739b0, flags=...) at kernel/qeventdispatcher_glib.cpp:430
#29 0x00007fe8e97c51e2 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>)
    (this=this@entry=0x7ffd75aece60, flags=..., flags@entry=...)
    at ../../include/QtCore/../../src/corelib/global/qflags.h:69
#30 0x00007fe8e97cd724 in QCoreApplication::exec() ()
    at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#31 0x000000000040f9a3 in main ()
dobey commented 2 years ago

I build maliit-frameworks from source

Did you build the wayland-crash branch, or master?

Pointedstick commented 2 years ago

Oops, my bad.

Unfortunately when I try to build that branch, it doesn't compile for me:

/home/nate/Documents/FOSS/3rdParty/maliit-framework/src/qt/plugins/shellintegration/qwaylandinputpanelshellintegration.cpp: In member function ‘virtual bool QtWaylandClient::QWaylandInputPanelShellIntegration::initialize(QtWaylandClient::QWaylandDisplay*)’:
/home/nate/Documents/FOSS/3rdParty/maliit-framework/src/qt/plugins/shellintegration/qwaylandinputpanelshellintegration.cpp:34:27: error: expected ‘;’ before ‘&’ token
   34 |     for (const auto global&: display->globals()) {
      |                           ^
      |                           ;
/home/nate/Documents/FOSS/3rdParty/maliit-framework/src/qt/plugins/shellintegration/qwaylandinputpanelshellintegration.cpp:34:28: error: expected primary-expression before ‘:’ token
   34 |     for (const auto global&: display->globals()) {
      |                            ^
/home/nate/Documents/FOSS/3rdParty/maliit-framework/src/qt/plugins/shellintegration/qwaylandinputpanelshellintegration.cpp:34:28: error: expected ‘;’ before ‘:’ token
   34 |     for (const auto global&: display->globals()) {
      |                            ^
      |                            ;
/home/nate/Documents/FOSS/3rdParty/maliit-framework/src/qt/plugins/shellintegration/qwaylandinputpanelshellintegration.cpp:34:28: error: expected primary-expression before ‘:’ token
/home/nate/Documents/FOSS/3rdParty/maliit-framework/src/qt/plugins/shellintegration/qwaylandinputpanelshellintegration.cpp:34:28: error: expected ‘)’ before ‘:’ token
   34 |     for (const auto global&: display->globals()) {
      |         ~                  ^
      |                            )
/home/nate/Documents/FOSS/3rdParty/maliit-framework/src/qt/plugins/shellintegration/qwaylandinputpanelshellintegration.cpp:34:28: error: expected primary-expression before ‘:’ token
Pointedstick commented 2 years ago

Seems like a typo with a trivial fix; fixing it and trying again...

Pointedstick commented 2 years ago

And unfortunately it is still crashing.

#0  QList<QtWaylandClient::QWaylandDisplay::RegistryGlobal>::Node::t() (this=0x11f0b7f0)
    at /usr/include/qt5/QtCore/qlist.h:151
#1  QList<QtWaylandClient::QWaylandDisplay::RegistryGlobal>::const_iterator::operator*() const
    (this=<synthetic pointer>) at /usr/include/qt5/QtCore/qlist.h:313
#2  QtWaylandClient::QWaylandInputPanelShellIntegration::initialize(QtWaylandClient::QWaylandDisplay*) (this=0x2570580, display=0x1f47580)
    at /usr/src/debug/maliit-framework-2.0.0-4.fc35.x86_64/src/qt/plugins/shellintegration/qwaylandinputpanelshellintegration.cpp:35
#3  0x00007f2882399397 in QtWaylandClient::QWaylandShellIntegrationFactory::create(QString const&, QtWaylandClient::QWaylandDisplay*, QStringList const&, QString const&)
    (name=..., display=0x1f47580, args=..., pluginPath=<optimized out>)
    at shellintegration/qwaylandshellintegrationfactory.cpp:95
#4  0x00007f2882375ea1 in QtWaylandClient::QWaylandIntegration::createShellIntegration(QString const&) (this=this@entry=0x1f40560, integrationName=...) at /usr/include/qt5/QtCore/qscopedpointer.h:138
#5  0x00007f28823760cb in QtWaylandClient::QWaylandIntegration::initializeShellIntegration()
    (this=0x1f40560)
    at /usr/src/debug/qt5-qtwayland-5.15.2-17.fc35.x86_64/src/client/qwaylandintegration.cpp:422
#6  0x00007f2882381508 in QtWaylandClient::QWaylandIntegration::shellIntegration() const
    (this=0x1f40560)
    at /usr/src/debug/qt5-qtwayland-5.15.2-17.fc35.x86_64/src/client/qwaylandintegration.cpp:323
#7  QtWaylandClient::QWaylandDisplay::shellIntegration() const (this=<optimized out>)
    at /usr/src/debug/qt5-qtwayland-5.15.2-17.fc35.x86_64/src/client/qwaylanddisplay.cpp:320
#8  0x00007f2882381531 in QtWaylandClient::QWaylandWindow::shouldCreateShellSurface() const
    (this=this@entry=0x24e9a20)
    at /usr/src/debug/qt5-qtwayland-5.15.2-17.fc35.x86_64/src/client/qwaylandwindow.cpp:220
#9  0x00007f2882385e1a in QtWaylandClient::QWaylandWindow::initWindow() (this=0x24e9a20)
    at /usr/src/debug/qt5-qtwayland-5.15.2-17.fc35.x86_64/src/client/qwaylandwindow.cpp:137
#10 0x00007f2882386426 in QtWaylandClient::QWaylandWindow::setVisible(bool)
    (visible=<optimized out>, this=0x24e9a20)
    at /usr/src/debug/qt5-qtwayland-5.15.2-17.fc35.x86_64/src/client/qwaylandwindow.cpp:435
#11 QtWaylandClient::QWaylandWindow::setVisible(bool) (this=0x24e9a20, visible=<optimized out>)
    at /usr/src/debug/qt5-qtwayland-5.15.2-17.fc35.x86_64/src/client/qwaylandwindow.cpp:425
#12 0x00007f2893bc2feb in QWindowPrivate::setVisible(bool)
    (this=0x1f32590, visible=<optimized out>) at kernel/qwindow.cpp:408
#13 0x000000000041a387 in InputMethod::show() ()
#14 0x00007f28935ce3e9 in QtPrivate::QSlotObjectBase::call(QObject*, void**)
    (a=0x7ffffa4b63c0, r=<optimized out>, this=0x24f9a00)
    at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
#15 doActivate<false>(QObject*, int, void**)
    (sender=0x1fcd180, signal_index=8, argv=0x7ffffa4b63c0) at kernel/qobject.cpp:3886
#16 0x00007f2894f7c321 in Maliit::Wayland::InputMethodContext::InputMethodContext(MInputContextConnection*, zwp_input_method_context_v1*)
    (this=0x7f282416d800, connection=0x1fcd180, object=<optimized out>, this=<optimized out>, connection=<optimized out>, object=<optimized out>)
    at /usr/src/debug/maliit-framework-2.0.0-4.fc35.x86_64/connection/waylandinputmethodconnection.cpp:514
#17 0x00007f2894f7cb82 in Maliit::Wayland::InputMethod::zwp_input_method_v1_activate(zwp_input_method_context_v1*) (this=0x24f5a20, id=0x7f2878005b70)
    at /usr/src/debug/maliit-framework-2.0.0-4.fc35.x86_64/connection/waylandinputmethodconnection.cpp:488
#18 0x00007f2892c76c04 in ffi_call_unix64 () at ../src/x86/unix64.S:76
#19 0x00007f2892c76108 in ffi_call
    (cif=cif@entry=0x7ffffa4b6630, fn=<optimized out>, rvalue=<optimized out>, 
    rvalue@entry=0x0, avalue=avalue@entry=0x7ffffa4b6700) at ../src/x86/ffi64.c:525
#20 0x00007f2892d14d10 in wl_closure_invoke
    (closure=closure@entry=0x7f2878001c00, target=<optimized out>, 
    target@entry=0x255ba10, opcode=opcode@entry=0, data=<optimized out>, flags=<optimized out>)
    at ../src/connection.c:1018
#21 0x00007f2892d1541b in dispatch_event
    (display=display@entry=0x1f47770, queue=0x1f47840, queue=<optimized out>)
    at ../src/wayland-client.c:1452
#22 0x00007f2892d1560c in dispatch_queue (queue=0x1f47840, display=0x1f47770)
    at ../src/wayland-client.c:1598
#23 wl_display_dispatch_queue_pending (display=0x1f47770, queue=0x1f47840)
    at ../src/wayland-client.c:1840
#24 0x00007f2882380025 in QtWaylandClient::QWaylandDisplay::flushRequests() (this=<optimized out>)
    at /usr/src/debug/qt5-qtwayland-5.15.2-17.fc35.x86_64/src/client/qwaylanddisplay.cpp:253
#25 0x00007f28935c4f49 in QObject::event(QEvent*) (this=0x1f47580, e=0x7f2870004780)
    at kernel/qobject.cpp:1314
#26 0x00007f289359a7d8 in QCoreApplication::notifyInternal2(QObject*, QEvent*)
    (receiver=0x1f47580, event=0x7f2870004780) at kernel/qcoreapplication.cpp:1064
#27 0x00007f289359dd46 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*)
    (receiver=0x0, event_type=0, data=0x1f39ff0) at kernel/qcoreapplication.cpp:1821
#28 0x00007f28935ec117 in postEventSourceDispatch(GSource*, GSourceFunc, gpointer) (s=0x1f91b70)
    at kernel/qeventdispatcher_glib.cpp:277
#29 0x00007f28941db05f in g_main_dispatch (context=0x1fa5870) at ../glib/gmain.c:3381
#30 g_main_context_dispatch (context=0x1fa5870) at ../glib/gmain.c:4099
#31 0x00007f28942302a8 in g_main_context_iterate.constprop.0
    (context=context@entry=0x1fa5870, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4175
#32 0x00007f28941d8853 in g_main_context_iteration (context=0x1fa5870, may_block=1)
    at ../glib/gmain.c:4240
#33 0x00007f28935ebbb8 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x1f999b0, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#34 0x00007f28935991e2 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>)
    (this=this@entry=0x7ffffa4b6c90, flags=..., flags@entry=...)
    at ../../include/QtCore/../../src/corelib/global/qflags.h:69
#35 0x00007f28935a1724 in QCoreApplication::exec() ()
    at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#36 0x000000000040f9a3 in main ()
dobey commented 2 years ago

Hrmm. Is there a specific thing you can do which triggers this? Or it just always happens? Does it just always happen when maliit-keyboard starts? Or randomly?

Pointedstick commented 2 years ago

After I reboot, there are always 4 or 5 identical crashes. That's 100% reproducible for me. Thereafter, it happens seemingly randomly, when I focus all manner of text fields. I haven't found a pattern there yet.

dobey commented 2 years ago

Could you perhaps try running maliit-keyboard under valgrind while reproducing the issue?

aleixpol commented 2 years ago

Can you ask fedora to rebuild the packages? For me, rebuilding locally fixed it. It seems maliit-framework uses private headers from QtWayland.

onuralpszr commented 2 years ago

Can you ask fedora to rebuild the packages? For me, rebuilding locally fixed it. It seems maliit-framework uses private headers from QtWayland.

I sent PRs

https://src.fedoraproject.org/rpms/maliit-framework/pull-request/3 https://src.fedoraproject.org/rpms/maliit-keyboard/pull-request/3

onuralpszr commented 2 years ago

I pushed for F37/F36/F35

F36 and F37 are in stable repo

F35 testing : https://bodhi.fedoraproject.org/updates/FEDORA-2022-3c82059415

Once you people test it, Please let me know so we can either close or do further action If we needed it.

Thank you.

Pointedstick commented 2 years ago

No more crashes after upgrading to 2.2.0. Thanks everyone!