#28 Preloading a Matrix client
Opened 11 months ago by ngompa. Modified 24 days ago

There are ongoing discussions right now on transitioning real-time chat primacy from IRC to Matrix in Fedora. For reference, here are some of the discussions:

As that is being worked out, we should try to figure out what Matrix client to preload for the KDE Spin.

There are some requirements for a Matrix client to preload:

  • Packaged in the Fedora repositories
  • Integrates with the KDE Plasma desktop experience
  • Supports all expected features (including E2E encryption)

As I'm not sure when we'd be making this change, clients that don't satisfy the last point are eligible as long as there's a roadmap to actually get there in time that we'd decide to ship it. We just need to know what the deficiencies are and what timeframes we're looking at for closing those.


There is 4 Qt-based Matrix client:

  • Quatermion: Qt Widgets based and based on libQuotient. It has a more traditional interface.
  • Nheko-reborn: Probably the most advanced Qt matrix client (support call and e2ee), unfortunately, it is using custom widgets and doesn't really integrate with Plasma.
  • Spectral: QML and libQuotient based matrix client. Not maintained anymore.
  • NeoChat: New and very active Kirigami based matrix client also based on libQuotient. I'm one of the main devs and we do plan to have e2ee but I don't really have any timeframes yet and there are a few other problems we need to solve first. There is already a proof of concept in libQuotient for e2ee support.

So if both Quaternion and NeoChat use the same libQuotient library and libQuotient supports end-to-end encryption, what's holding back support for this for the client?

Sorry, libQuotient has some development around e2ee but it's for the moment just a poc and it will need more work to make it work.

Metadata Update from @ngompa:
- Issue tagged with: meeting

11 months ago

So tentatively, we're looking at nheko as the client to preload by default, because it's the most advanced one and works well (even though the Plasma Desktop integration is not the best).

However, @carlschwan, we're interested in hearing more about NeoChat in a future meeting.

Metadata Update from @ngompa:
- Issue untagged with: meeting
- Issue tagged with: meeting-request

11 months ago

@mattdm posted an update to the development mailing list indicating that we're going forward with implementing this transition imminently.

Thus, we should talk about this in tomorrow's meeting. I've also asked @carlschwan to try to join us in the meeting tomorrow.

Metadata Update from @ngompa:
- Issue untagged with: meeting-request
- Issue set to the milestone: Fedora 34 (was: Future Release)
- Issue tagged with: meeting

10 months ago

We've agreed to ship NeoChat for Fedora 34 by default. The issue with end-to-end encryption is not a major priority for the use-cases we need it preloaded for, and there's potential for this to be solved in the near term anyway.

In order to execute on this, we need to do the following:

  • Request from @xvitaly to grant @kde-sig group admin privileges on the package
  • Add neochat to comps for Fedora 34+
  • Start testing and working with @carlschwan to make things ready for it debuting on Fedora 34

I have filed relevant issues for NeoChat to target for our use-case:

Metadata Update from @ngompa:
- Issue untagged with: meeting

10 months ago

Request from @xvitaly to grant @kde-sig group admin privileges on the package

Done.

We've agreed to ship NeoChat for Fedora 34 by default.

Too buggy and unstable yet. Still has no releases. I use Git snapshots now.

Nheko-reborn

Btw, only nheko supports SSO now.

We've agreed to ship NeoChat for Fedora 34 by default.

Too buggy and unstable yet. Still has no releases. I use Git snapshots now.

In our meeting yesterday, @carlschwan indicated that the first releases will be coming in January and NeoChat will be part of the Plasma applications release cadence. I expect things will improve drastically because of that.

In our meeting yesterday, @carlschwan indicated that the first releases will be coming in January and NeoChat will be part of the Plasma applications release cadence

Great. I will build the latest Git snapshot today for testing purposes.

Also someone need to package kquickimageeditor due to the following:

org.kde.kquickimageeditor-QMLModule, QML module 'org.kde.kquickimageeditor' is a runtime dependency.

NeoChat recently switched to the non-released version of libQuotient. I can build the latest snapshots only in COPR repository.

@xvitaly we created a stable branch depending on 0.6.x in preparation of doing the first release this weekend

NeoChat 1.0 is out, but I cannot build it due to missing kquickimageeditor library in Fedora repos.

Can someone package it? I think in the future it will become part of KF5.

We are working on it @xvitaly

Packaged kquickimageeditor and built in my COPR with NeoChat 1.0.

Importantly there was some change in KQuickImageEditor so I needed to release a 0.1.2 version.

https://download.kde.org/stable/kquickimageeditor/0.1/kquickimageeditor-0.1.2.tar.xz

@xvitaly KQuickImageEditor should be considered for now as an internal dependency of NeoChat. We don't have a stable API and the release process is synchronized with NeoChat. So not yet part of KF5 but maybe in the future ;)

Importantly there was some change in KQuickImageEditor so I needed to release a 0.1.2 version.

Updated in COPR.

KQuickImageEditor should be considered for now as an internal dependency of NeoChat. We don't have a stable API and the release process is synchronized with NeoChat. So not yet part of KF5 but maybe in the future ;)

OK. Renamed to kquickimageeditor.

The package for kquickimageeditor is in the process of being included into Fedora :-)

BTW, users are reporting that version 1.0 from COPR is crashing:

Timestamp: Thu 2020-12-24 08:53:41 EET (32s ago)
  Command Line: neochat
    Executable: /usr/bin/neochat
 Control Group: /user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/vte-spawn-fa2eb407-2a3b-4d54-95ac-b65ade355803.scope
          Unit: user@1000.service
     User Unit: vte-spawn-fa2eb407-2a3b-4d54-95ac-b65ade355803.scope
         Slice: user-1000.slice
     Owner UID: 1000 (tim)
       Boot ID: 1fab074b5cc7431a9c64efa4e374e24d
    Machine ID: 00ab5c5d4e8b43598d263254a974136e
      Hostname: pc
       Storage: /var/lib/systemd/coredump/core.neochat.1000.1fab074b5cc7431a9c64efa4e374e24d.5752.1608792821000000.zst
       Message: Process 5752 (neochat) of user 1000 dumped core.

                Stack trace of thread 5752:
                #0  0x00007f6662f6c9d5 raise (libc.so.6 + 0x3d9d5)
                #1  0x00007f6662f558a4 abort (libc.so.6 + 0x268a4)
                #2  0x00007f66652ac154 _ZSt20__replacement_assertPKciS0_S0_ (libQuotient.so.0.6 + 0x77154)
                #3  0x00007f66652d2c45 _ZNKSt10unique_ptrIN8Quotient5EventESt14default_deleteIS1_EEdeEv.part.0.lto_priv.0 (libQuotient.so.0.6 + 0x9dc45)
                #4  0x00007f66652c3d80 _ZN8Quotient10Connection7Private21consumeToDeviceEventsEOSt6vectorISt10unique_ptrINS_5EventESt14default_deleteIS4_EESaIS7_EE (libQuotient.so.0.6 + 0x8ed80)
                #5  0x00007f66652c4cb6 _ZN8Quotient10Connection13onSyncSuccessEONS_8SyncDataEb (libQuotient.so.0.6 + 0x8fcb6)
                #6  0x00007f66652cd2e0 _ZN9QtPrivate18QFunctorSlotObjectIZN8Quotient10Connection4syncEiEUlvE_Li0ENS_4ListIJEEEvE4implEiPNS_15QSlotObjectBaseEP7QObjectPPvPb.lto_priv.0 (libQuotient.so.0.6 + 0x>
                #7  0x00007f6663595386 _Z10doActivateILb0EEvP7QObjectiPPv (libQt5Core.so.5 + 0x2b1386)
                #8  0x00007f66652aaaf2 _ZN8Quotient7BaseJob7successEPS0_ (libQuotient.so.0.6 + 0x75af2)
                #9  0x00007f666531b399 _ZN8Quotient7BaseJob9finishJobEv (libQuotient.so.0.6 + 0xe6399)
                #10 0x00007f6663595386 _Z10doActivateILb0EEvP7QObjectiPPv (libQt5Core.so.5 + 0x2b1386)
                #11 0x00007f66638ef3b8 _ZN28QNetworkReplyHttpImplPrivate8finishedEv (libQt5Network.so.5 + 0xb63b8)
                #12 0x00007f666358dd1e _ZN7QObject5eventEP6QEvent (libQt5Core.so.5 + 0x2a9d1e)
                #13 0x00007f6664cadec3 _ZN19QApplicationPrivate13notify_helperEP7QObjectP6QEvent (libQt5Widgets.so.5 + 0x1adec3)
                #14 0x00007f6663565bd8 _ZN16QCoreApplication15notifyInternal2EP7QObjectP6QEvent (libQt5Core.so.5 + 0x281bd8)
                #15 0x00007f66635688c7 _ZN23QCoreApplicationPrivate16sendPostedEventsEP7QObjectiP11QThreadData (libQt5Core.so.5 + 0x2848c7)
                #16 0x00007f66635b2c27 _ZL23postEventSourceDispatchP8_GSourcePFiPvES1_ (libQt5Core.so.5 + 0x2cec27)
                #17 0x00007f66629ca96f g_main_context_dispatch (libglib-2.0.so.0 + 0x5396f)
                #18 0x00007f6662a1c758 g_main_context_iterate.constprop.0 (libglib-2.0.so.0 + 0xa5758)
                #19 0x00007f66629c7d43 g_main_context_iteration (libglib-2.0.so.0 + 0x50d43)
                #20 0x00007f66635b26f3 _ZN20QEventDispatcherGlib13processEventsE6QFlagsIN10QEventLoop17ProcessEventsFlagEE (libQt5Core.so.5 + 0x2ce6f3)
                #21 0x00007f666356457b _ZN10QEventLoop4execE6QFlagsINS_17ProcessEventsFlagEE (libQt5Core.so.5 + 0x28057b)
                #22 0x00007f666356c1b4 _ZN16QCoreApplication4execEv (libQt5Core.so.5 + 0x2881b4)
                #23 0x000055578236723e main (neochat + 0x3b23e)
                #24 0x00007f6662f571e2 __libc_start_main (libc.so.6 + 0x281e2)
                #25 0x00005557823a99ee _start (neochat + 0x7d9ee)

                Stack trace of thread 5753:
                #0  0x00007f666302580f __poll (libc.so.6 + 0xf680f)
                #1  0x00007f6661aaf842 _xcb_conn_wait.part.0 (libxcb.so.1 + 0xd842)
                #2  0x00007f6661ab11cc xcb_wait_for_event (libxcb.so.1 + 0xf1cc)
                #3  0x00007f6651f9a448 _ZN14QXcbEventQueue3runEv (libQt5XcbQpa.so.5 + 0x6a448)
                #4  0x00007f66633cadf0 _ZN14QThreadPrivate5startEPv (libQt5Core.so.5 + 0xe6df0)
                #5  0x00007f6662c5e3f9 start_thread (libpthread.so.0 + 0x93f9)

But I cannot reproduce this crash on my system.

The package for kquickimageeditor is in the process of being included into Fedora :-)

If you need a reviewer, I can review it quickly.

The package for kquickimageeditor is in the process of being included into Fedora :-)

If you need a reviewer, I can review it quickly.

It's been reviewed already. Awaiting repo generation: here

It's been reviewed already. Awaiting repo generation: here

OK. Great. Please add build override for f33 after building in Koji. Later we can add them to a single Bodhi update.

Full crash backtrace:

Thread 1 "neochat" received signal SIGABRT, Aborted.
0x00007ffff5a199d5 in raise () from /lib64/libc.so.6
Missing separate debuginfos, use: dnf debuginfo-install adwaita-qt5-1.2.0-1.fc33.x86_64 gvfs-client-1.46.1-1.fc33.x86_64 kquickimageeditor-0.1.2-1.fc33.x86_64 libXi-1.7.10-4.fc33.x86_64 libXinerama-1.1.4-6.fc33.x86_64 libXrender-0.9.10-12.fc33.x86_64 libadwaita-qt5-1.2.0-1.fc33.x86_64 libdrm-2.4.102-2.fc33.x86_64 libepoxy-1.5.4-3.fc33.x86_64 libffi-3.1-26.fc33.x86_64 libgpg-error-1.39-1.fc33.x86_64 libicu-67.1-4.fc33.x86_64 libjpeg-turbo-2.0.5-5.fc33.x86_64 libogg-1.3.4-3.fc33.x86_64 libpng-1.6.37-6.fc33.x86_64 libsecret-0.20.4-1.fc33.x86_64 libsndfile-1.0.28-13.fc33.x86_64 libtdb-1.4.3-5.fc33.x86_64 libtool-ltdl-2.4.6-36.fc33.x86_64 libxcb-1.13.1-5.fc33.x86_64 libxkbcommon-1.0.1-1.fc33.x86_64 libxkbcommon-x11-1.0.1-1.fc33.x86_64 nss-mdns-0.14.1-9.fc33.x86_64 openssl-libs-1.1.1i-1.fc33.x86_64 pulseaudio-libs-14.0-2.fc33.x86_64 qgnomeplatform-0.7.0-1.fc33.x86_64 qt5-qtgraphicaleffects-5.15.2-2.fc33.x86_64 qt5-qtquickcontrols-5.15.2-2.fc33.x86_64 qt5-qtquickcontrols2-5.15.2-2.fc33.x86_64 qt5-qtx11extras-5.15.2-2.fc33.x86_64 xcb-util-0.4.0-16.fc33.x86_64 xcb-util-renderutil-0.3.9-17.fc33.x86_64 xz-libs-5.2.5-3.fc33.x86_64
(gdb) bt full
#0  0x00007ffff5a199d5 in raise () from /lib64/libc.so.6
No symbol table info available.
#1  0x00007ffff5a028a4 in abort () from /lib64/libc.so.6
No symbol table info available.
#2  0x00007ffff7d59154 in std::__replacement_assert (__file=<optimized out>, __line=<optimized out>, 
    __function=<optimized out>, __condition=<optimized out>)
    at /usr/include/c++/10/x86_64-redhat-linux/bits/c++config.h:2560
No locals.
#3  0x00007ffff7d7fc45 in std::unique_ptr<Quotient::Event, std::default_delete<Quotient::Event> >::operator*() const [clone .part.0] [clone .lto_priv.0] (this=<optimized out>)
    at /usr/include/c++/10/bits/unique_ptr.h:407
        __PRETTY_FUNCTION__ = {<optimized out> <repeats 230 times>}
#4  0x00007ffff7d70d80 in std::unique_ptr<Quotient::Event, std::default_delete<Quotient::Event> >::operator* (this=0x7fffffffd540) at /usr/include/c++/10/bits/unique_ptr.h:173
        __PRETTY_FUNCTION__ = {<optimized out> <repeats 230 times>}
#5  operator() (ee=..., __closure=<optimized out>) at ../lib/connection.cpp:724
        this = <optimized out>
        this = <optimized out>
        qt_category_enabled = <optimized out>
        qt_category_enabled = <optimized out>
#6  Quotient::visit<Quotient::Event, Quotient::Connection::Private::consumeToDeviceEvents(Quotient::Events&&)::<lambda(const Quotient::EncryptedEvent&)> > (visitor=..., event=...)
    at ../lib/events/event.h:353
No locals.
#7  Quotient::visitEach<std::vector<std::unique_ptr<Quotient::Event, std::default_delete<Quotient::Event> >, std::allocator<std::unique_ptr<Quotient::Event, std::default_delete<Quotient::Event> > > >&, Quotient::Connection::Private::consumeToDeviceEvents(Quotient::Events&&)::<lambda(const Quotient::EncryptedEvent&)> > (events=...) at ../lib/events/event.h:389
        evtPtr = std::unique_ptr<Quotient::Event> = {get() = 0x55555c76f650}
        __for_range = <optimized out>
Python Exception <class 'gdb.error'> value has been optimized out: 
        __for_begin = 
Python Exception <class 'gdb.error'> value has been optimized out: 
        __for_end = 
#8  Quotient::Connection::Private::consumeToDeviceEvents (this=0x55555618bac0, toDeviceEvents=...)
    at ../lib/connection.cpp:711
No locals.
#9  0x00007ffff7d71cb6 in Quotient::Connection::onSyncSuccess (this=0x5555561f86d0, data=..., 
    fromCache=<optimized out>) at ../lib/connection.cpp:569
No locals.
#10 0x00007ffff7d7a2e0 in operator() (__closure=0x55555a12e190) at ../lib/connection.cpp:501
        job = 0x55555669ecb0
        this = 0x5555561f86d0
        job = <optimized out>
        this = <optimized out>
#11 QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, Quotient::Connection::sync(int)::<lambda()> >::call (arg=<optimized out>, f=...)
    at /usr/include/qt5/QtCore/qobjectdefs_impl.h:146
No locals.
#12 QtPrivate::Functor<Quotient::Connection::sync(int)::<lambda()>, 0>::call<QtPrivate::List<>, void>
    (arg=<optimized out>, f=...) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:256
No locals.
#13 QtPrivate::QFunctorSlotObject<Quotient::Connection::sync(int)::<lambda()>, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=<optimized out>, 
    this_=0x55555a12e180, r=<optimized out>, a=<optimized out>, ret=<optimized out>)
    at /usr/include/qt5/QtCore/qobjectdefs_impl.h:443
No locals.
#14 0x00007ffff6042386 in QtPrivate::QSlotObjectBase::call (a=0x7fffffffd770, r=0x5555561f86d0, 
    this=0x55555a12e180) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
No locals.
#15 doActivate<false> (sender=0x55555669ecb0, signal_index=10, argv=0x7fffffffd770)
    at kernel/qobject.cpp:3886
        obj = std::unique_ptr<QtPrivate::QSlotObjectBase> = {get() = 0x55555a12e180}
        receiver = 0x5555561f86d0
        td = <optimized out>
        receiverInSameThread = <optimized out>
        senderData = {previous = 0x0, receiver = 0x5555561f86d0, sender = 0x55555669ecb0, signal = 10}
        c = 0x555555fbe780
        connections = {d = 0x55555a1732e0}
        list = <optimized out>
        inSenderThread = true
        highestConnectionId = 4
        signalVector = 0x555559692560
        currentThreadId = 0x7ffff2060980
        sp = <optimized out>
        signal_spy_set = 0x0
        empty_argv = {0x0}
        senderDeleted = false
#16 0x00007ffff7d57af2 in Quotient::BaseJob::success (this=<optimized out>, _t1=<optimized out>)
    at Quotient_autogen/3INUWTIJ2C/moc_basejob.cpp:542
        _a = {0x0, 0x7fffffffd768}
#17 0x00007ffff7dc8399 in Quotient::BaseJob::finishJob (this=0x55555669ecb0)
    at ../lib/jobs/basejob.cpp:634
No locals.
#18 0x00007ffff6042386 in QtPrivate::QSlotObjectBase::call (a=0x7fffffffd8c0, r=0x55555669ecb0, 
    this=0x55555aab2d60) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
No locals.
#19 doActivate<false> (sender=0x555559dbb7a0, signal_index=10, argv=0x7fffffffd8c0)
    at kernel/qobject.cpp:3886
        obj = std::unique_ptr<QtPrivate::QSlotObjectBase> = {get() = 0x55555aab2d60}
        receiver = 0x55555669ecb0
        td = <optimized out>
        receiverInSameThread = <optimized out>
        senderData = {previous = 0x0, receiver = 0x55555669ecb0, sender = 0x555559dbb7a0, signal = 10}
        c = 0x55555b02dab0
        connections = {d = 0x55555b02c690}
        list = <optimized out>
        inSenderThread = true
        highestConnectionId = 14
        signalVector = 0x55555b02d6c0
        currentThreadId = 0x7ffff2060980
        sp = <optimized out>
        signal_spy_set = 0x0
        empty_argv = {0x0}
        senderDeleted = false
#20 0x00007ffff639c3b8 in QNetworkReplyHttpImplPrivate::finished (this=0x55555af406b0)
    at access/qnetworkreplyhttpimpl.cpp:2270
        q = 0x555559dbb7a0
        totalSize = {d = {data = {c = 0 '\000', uc = 0 '\000', s = 0, sc = 0 '\000', us = 0, i = 0, 
              u = 0, l = 0, ul = 0, b = false, d = 0, f = 0, real = 0, ll = 0, ull = 0, o = 0x0, 
              ptr = 0x0, shared = 0x0}, type = 0, is_shared = 0, is_null = 1}}
        session = {value = 0x0, d = 0x0}
#21 0x00007ffff603ad1e in QObject::event (this=0x555559dbb7a0, e=0x7fffb03b8fe0)
    at kernel/qobject.cpp:1314
        mce = 0x7fffb03b8fe0
        sender = {previous = 0x0, receiver = 0x555559dbb7a0, sender = 0x55555b02c880, signal = 13}
#22 0x00007ffff775aec3 in QApplicationPrivate::notify_helper (this=<optimized out>, 
    receiver=0x555559dbb7a0, e=0x7fffb03b8fe0) at kernel/qapplication.cpp:3632
        consumed = false
        filtered = false
#23 0x00007ffff6012bd8 in QCoreApplication::notifyInternal2 (receiver=0x555559dbb7a0, 
    event=0x7fffb03b8fe0) at kernel/qcoreapplication.cpp:1063
        selfRequired = true
        result = false
        cbdata = {0x555559dbb7a0, 0x7fffb03b8fe0, 0x7fffffffda4f}
        d = <optimized out>
        threadData = 0x55555565c000
        scopeLevelCounter = {threadData = 0x55555565c000}
#24 0x00007ffff60158c7 in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, 
    data=0x55555565c000) at kernel/qcoreapplication.cpp:1817
        e = 0x7fffb03b8fe0
        pe = <optimized out>
        r = 0x555559dbb7a0
        relocker = {m_func = {__locker = @0x7fffffffdac0}, m_invoke = true}
        event_deleter = {d = 0x7fffb03b8fe0}
        locker = {_M_device = 0x55555565c030, _M_owns = false}
        startOffset = 0
        i = @0x55555565c024: 0
        cleanup = {receiver = 0x0, event_type = 0, data = 0x55555565c000, exceptionCaught = true}
#25 0x00007ffff605fc27 in postEventSourceDispatch (s=s@entry=0x555555862f80)
    at kernel/qeventdispatcher_glib.cpp:277
        source = 0x555555862f80
#26 0x00007ffff547796f in g_main_dispatch (context=0x7fffdc005000) at ../glib/gmain.c:3325
        dispatch = <optimized out>
        prev_source = 0x0
        begin_time_nsec = 0
        was_in_call = <optimized out>
        user_data = 0x0
        callback = 0x0
        cb_funcs = 0x0
        cb_data = 0x0
        need_destroy = <optimized out>
        source = 0x555555862f80
        current = 0x5555558099a0
        i = 0
        current = <optimized out>
        i = <optimized out>
        __func__ = {<optimized out> <repeats 16 times>}
        source = <optimized out>
        _g_boolean_var_ = <optimized out>
        was_in_call = <optimized out>
        user_data = <optimized out>
        callback = <optimized out>
        cb_funcs = <optimized out>
        cb_data = <optimized out>
        need_destroy = <optimized out>
        dispatch = <optimized out>
        prev_source = <optimized out>
        begin_time_nsec = <optimized out>
        _g_boolean_var_ = <optimized out>
#27 g_main_context_dispatch (context=0x7fffdc005000) at ../glib/gmain.c:4043
No locals.
#28 0x00007ffff54c9758 in g_main_context_iterate.constprop.0 (context=context@entry=0x7fffdc005000, 
    block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4119
        max_priority = 2147483647
        timeout = 1532
        some_ready = 1
        nfds = <optimized out>
        allocated_nfds = <optimized out>
        fds = 0x5555561f7fc0
        begin_time_nsec = 0
#29 0x00007ffff5474d43 in g_main_context_iteration (context=0x7fffdc005000, may_block=1)
    at ../glib/gmain.c:4184
        retval = <optimized out>
#30 0x00007ffff605f6f3 in QEventDispatcherGlib::processEvents (this=0x555555783110, flags=...)
    at kernel/qeventdispatcher_glib.cpp:423
        d = 0x555555824d60
        canWait = true
        savedFlags = {i = 0}
        result = <optimized out>
#31 0x00007ffff601157b in QEventLoop::exec (this=0x7fffffffdd20, flags=...)
    at ../../include/QtCore/../../src/corelib/global/qflags.h:69
        d = 0x5555561f85f0
        threadData = <optimized out>
        locker = {val = 93824993364744}
        ref = {d = <optimized out>, locker = <optimized out>, exceptionCaught = <optimized out>}
        app = <optimized out>
#32 0x00007ffff60191b4 in QCoreApplication::exec ()
    at ../../include/QtCore/../../src/corelib/global/qflags.h:121
        threadData = 0x55555565c000
        eventLoop = {<QObject> = {_vptr.QObject = 0x7ffff62d7b48 <vtable for QEventLoop+16>, 
            static staticMetaObject = {d = {superdata = {direct = 0x0}, 
                stringdata = 0x7ffff61baac0 <qt_meta_stringdata_QObject>, 
                data = 0x7ffff61ba9a0 <qt_meta_data_QObject>, 
                static_metacall = 0x7ffff60408b0 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x5555561f85f0}, 
            static staticQtMetaObject = {d = {superdata = {direct = 0x0}, 
                stringdata = 0x7ffff61bda60 <qt_meta_stringdata_Qt>, 
                data = 0x7ffff61babe0 <qt_meta_data_Qt>, static_metacall = 0x0, 
                relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {
              superdata = {direct = 0x7ffff62cf3c0 <QObject::staticMetaObject>}, 
              stringdata = 0x7ffff61b4bc0 <qt_meta_stringdata_QEventLoop>, 
              data = 0x7ffff61b4b60 <qt_meta_data_QEventLoop>, 
              static_metacall = 0x7ffff6011290 <QEventLoop::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}}
        returnCode = <optimized out>
#33 0x000055555558f23e in main (argc=<optimized out>, argv=0x7fffffffde70) at ../src/main.cpp:151
        app = {<QGuiApplication> = {<QCoreApplication> = {<QObject> = {
                _vptr.QObject = 0x7ffff7c61448 <vtable for QApplication+16>, 
                static staticMetaObject = {d = {superdata = {direct = 0x0}, 
                    stringdata = 0x7ffff61baac0 <qt_meta_stringdata_QObject>, 
                    data = 0x7ffff61ba9a0 <qt_meta_data_QObject>, 
                    static_metacall = 0x7ffff60408b0 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x5555556b4700}, 
                static staticQtMetaObject = {d = {superdata = {direct = 0x0}, 
                    stringdata = 0x7ffff61bda60 <qt_meta_stringdata_Qt>, 
                    data = 0x7ffff61babe0 <qt_meta_data_Qt>, static_metacall = 0x0, 
                    relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {
                  superdata = {direct = 0x7ffff62cf3c0 <QObject::staticMetaObject>}, 
                  stringdata = 0x7ffff61b5260 <qt_meta_stringdata_QCoreApplication>, 
                  data = 0x7ffff61b5140 <qt_meta_data_QCoreApplication>, 
                  static_metacall = 0x7ffff60143f0 <QCoreApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, 
              static self = 0x7fffffffde20}, static staticMetaObject = {d = {superdata = {
                  direct = 0x7ffff62d7ce0 <QCoreApplication::staticMetaObject>}, 
                stringdata = 0x7ffff696c7e0 <qt_meta_stringdata_QGuiApplication>, 
                data = 0x7ffff696c560 <qt_meta_data_QGuiApplication>, 
                static_metacall = 0x7ffff65dacd0 <QGuiApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {
            d = {superdata = {direct = 0x7ffff6a6ec60 <QGuiApplication::staticMetaObject>}, 
              stringdata = 0x7ffff7afab40 <qt_meta_stringdata_QApplication>, 
              data = 0x7ffff7afa9c0 <qt_meta_data_QApplication>, 
              static_metacall = 0x7ffff775e3e0 <QApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}}
        about = {static staticMetaObject = {d = {superdata = {direct = 0x0}, 
              stringdata = 0x7ffff7eb6b40 <qt_meta_stringdata_KAboutData>, 
              data = 0x7ffff7eb6a40 <qt_meta_data_KAboutData>, 
              static_metacall = 0x7ffff7e76ac0 <KAboutData::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d = 0x555555781740}
        service = {<QObject> = {_vptr.QObject = 0x7ffff75ab510 <vtable for KDBusService+16>, 
            static staticMetaObject = {d = {superdata = {direct = 0x0}, 
                stringdata = 0x7ffff61baac0 <qt_meta_stringdata_QObject>, 
                data = 0x7ffff61ba9a0 <qt_meta_data_QObject>, 
                static_metacall = 0x7ffff60408b0 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x5555558cf6f0}, 
            static staticQtMetaObject = {d = {superdata = {direct = 0x0}, 
                stringdata = 0x7ffff61bda60 <qt_meta_stringdata_Qt>, 
                data = 0x7ffff61babe0 <qt_meta_data_Qt>, static_metacall = 0x0, 
                relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {
              superdata = {direct = 0x7ffff62cf3c0 <QObject::staticMetaObject>}, 
              stringdata = 0x7ffff75a7ec0 <qt_meta_stringdata_KDBusService>, 
              data = 0x7ffff75a68a0 <qt_meta_data_KDBusService>, 
              static_metacall = 0x7ffff759fb50 <KDBusService::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d = 0x555555899e00}
        clipboard = {<QObject> = {_vptr.QObject = 0x555555643728 <vtable for Clipboard+16>, 
            static staticMetaObject = {d = {superdata = {direct = 0x0}, 
                stringdata = 0x7ffff61baac0 <qt_meta_stringdata_QObject>, 
                data = 0x7ffff61ba9a0 <qt_meta_data_QObject>, 
                static_metacall = 0x7ffff60408b0 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x5555558aae50}, 
            static staticQtMetaObject = {d = {superdata = {direct = 0x0}, 
                stringdata = 0x7ffff61bda60 <qt_meta_stringdata_Qt>, 
                data = 0x7ffff61babe0 <qt_meta_data_Qt>, static_metacall = 0x0, 
                relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {
              superdata = {direct = 0x7ffff62cf3c0 <QObject::staticMetaObject>}, 
              stringdata = 0x555555616000 <_ZL28qt_meta_stringdata_Clipboard.lto_priv.0>, 
              data = 0x555555613120 <_ZL22qt_meta_data_Clipboard.lto_priv.0>, 
              static_metacall = 0x5555555d7280
     <Clipboard::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, 
              relatedMetaObjects = 0x0, extradata = 0x0}}, m_clipboard = 0x5555558aae00}
        config = <optimized out>
        engine = {<QQmlEngine> = {<QJSEngine> = {<QObject> = {
                _vptr.QObject = 0x7ffff6fed8a0 <vtable for QQmlApplicationEngine+16>, 
                static staticMetaObject = {d = {superdata = {direct = 0x0}, 
                    stringdata = 0x7ffff61baac0 <qt_meta_stringdata_QObject>, 
                    data = 0x7ffff61ba9a0 <qt_meta_data_QObject>, 
                    static_metacall = 0x7ffff60408b0 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x55555581cb30}, 
                static staticQtMetaObject = {d = {superdata = {direct = 0x0}, 
                    stringdata = 0x7ffff61bda60 <qt_meta_stringdata_Qt>, 
                    data = 0x7ffff61babe0 <qt_meta_data_Qt>, static_metacall = 0x0, 
                    relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {
                  superdata = {direct = 0x7ffff62cf3c0 <QObject::staticMetaObject>}, 
                  stringdata = 0x7ffff6f268c0 <_ZL28qt_meta_stringdata_QJSEngine.lto_priv.0>, 
                  data = 0x7ffff6f265c0 <_ZL22qt_meta_data_QJSEngine.lto_priv.0>, 
                  static_metacall = 0x7ffff6d00900
     <QJSEngine::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, 
                  relatedMetaObjects = 0x0, extradata = 0x0}}, m_v4Engine = 0x5555557d1a20}, 
            static staticMetaObject = {d = {superdata = {
                  direct = 0x7ffff6fedae0 <QJSEngine::staticMetaObject>}, 
                stringdata = 0x7ffff6f26480 <_ZL29qt_meta_stringdata_QQmlEngine.lto_priv.0>, 
                data = 0x7ffff6f263c0 <_ZL23qt_meta_data_QQmlEngine.lto_priv.0>, 
                static_metacall = 0x7ffff6e36c20
     <QQmlEngine::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, 
                relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {
              superdata = {direct = 0x7ffff6fed840 <QQmlEngine::staticMetaObject>}, 
              stringdata = 0x7ffff6f26200 <_ZL40qt_meta_stringdata_QQmlApplicationEngine.lto_priv.0>, 
              data = 0x7ffff6f260c0 <_ZL34qt_meta_data_QQmlApplicationEngine.lto_priv.0>, 
              static_metacall = 0x7ffff6e9a610
     <QQmlApplicationEngine::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, 
              relatedMetaObjects = 0x0, extradata = 0x0}}}
        parser = {d = 0x5555558f0120}

I've also filed an issue with KAccounts to ask for FAS integration: kdebugs#430793.

@marcdeop Please create build override for kquickimageeditor-0.1.2-1.fc33.

NeoChat 1.0 builds for F33 and F34.

@xvitaly
The crash seems to be caused by End-to-end encryption being enabled in the libQuotient build. At the moment, no client actually uses E2EE and it is very experimental, to the point where the maintainer advises strongly against using it. It also brings instability and memory leaks even when encryption is not used. With that in mind, would it be an option to disable E2EE for now?

@tobiasfella No longer crashes after removing the following files/directories:
- ~/.local/share/KDE/neochat
- ~/.cache/KDE/neochat
- ~/.config/neochatrc
- ~/.config/KDE/neochat.conf

With that in mind, would it be an option to disable E2EE for now?

Done.

Metadata Update from @ngompa:
- Issue set to the milestone: Fedora 35 (was: Fedora 34)

7 months ago

Unfortunately, since we don't yet have the Fedora Matrix server yet and we're so close to Beta release, this is going to be deferred for Fedora 35. We'll be shipping the latest version of Neochat in the repositories, but it won't be on the ISO just yet.

Metadata Update from @ngompa:
- Issue set to the milestone: Fedora 36 (was: Fedora 35)

2 months ago

Moving to Fedora 36, since we still don't have the Matrix server...

Fedora Matrix server is up.

NeoChat still has no E2EE support, that's why I suggest preloading nheko for Fedora 35.

If it will get E2EE support, we can change the default from nheko to neochat.

It's too late for Fedora Linux 35, we're well into Beta Freeze.

It's too late for Fedora Linux 35, we're well into Beta Freeze.

We need to add only one weak dependency. It can be done when the Beta Freeze is lifted.

Fedora Matrix server is up.

Any pointers for that news? Thanks!

Metadata Update from @ngompa:
- Issue set to the milestone: Fedora Linux 36 (was: Fedora 36)

24 days ago

Login to comment on this ticket.

Metadata