https://bugs.kde.org/show_bug.cgi?id=467434

            Bug ID: 467434
           Summary: NeoChat crashes and accounts are deleted from config
                    when server is unreachable on startup
    Classification: Applications
           Product: NeoChat
           Version: unspecified
          Platform: Compiled Sources
                OS: Linux
            Status: REPORTED
          Keywords: drkonqi
          Severity: crash
          Priority: NOR
         Component: General
          Assignee: fe...@posteo.de
          Reporter: kw...@redhat.com
                CC: c...@carlschwan.eu
  Target Milestone: ---

Application: neochat (23.03.70)
 (Compiled from sources)
Qt Version: 5.15.8
Frameworks Version: 5.103.0
Operating System: Linux 6.1.15-200.fc37.x86_64 x86_64
Windowing System: X11
Distribution: Fedora Linux 37 (Thirty Seven)
DrKonqi: 5.27.2 [KCrashBackend]

-- Information about the crash:
I have two accounts configured in NeoChat: My public matrix.org account, and an
account on a company internal home server that is only reachable through VPN.
When I first encountered a probably related problem yesterday, KDE session
restore started NeoChat before I had connected to the VPN, and today I
reproduced this scenario intentionally manually (a few times to be sure). The
result is that the server name doesn't resolve, and apparently NeoChat doesn't
handle this error condition well at all.

After displaying "Loading..." for a while, it doesn't only crash, but
afterwards both accounts are deleted from ~/.config/KDE/neochat.conf!

Note that at this point, it had already successfully connected to the
matrix.org account. However, the unreachable server is stored as
ActiveConnection in  ~/.config/neochatrc. These are the last few log messages:

quotient.jobs: Sent GET
https://matrix-client.matrix.org/_matrix/client/v3/notifications
quotient.jobs.sync: Sent GET
https://matrix-client.matrix.org/_matrix/client/r0/sync
quotient.jobs.sync: "SyncJob-2" destroyed
quotient.jobs: 200 <- GET
https://matrix-client.matrix.org/_matrix/client/v3/notifications
quotient.jobs: "GetNotificationsJob" destroyed
quotient.jobs: Retrying "GetTokenOwnerJob"
quotient.jobs: Sent GET https://<redacted>/_matrix/client/v3/account/whoami
quotient.jobs: No valid HTTP headers from GET
https://<redacted>/_matrix/client/v3/account/whoami
quotient.jobs: Error body (truncated if long): 
quotient.jobs: "GetTokenOwnerJob" status NetworkError: Host <redacted> not
found
Qt Quick Layouts: Detected recursive rearrange. Aborting after two iterations.
Qt Quick Layouts: Detected recursive rearrange. Aborting after two iterations.
ASSERT: "Controller::instance().activeConnection()" in file
/home/kwolf/source/kde/neochat/src/roommanager.cpp, line 87
KCrash: Application 'neochat' crashing...

The behaviour looks different when the reachable server is the
ActiveConnection. Then I already get to the normal view for the matrix.org
account and can read rooms etc. while it's still trying to connect to the
unreachable server. Once it finally fails, the room list goes away and the
"Join some rooms to get started" message is displayed instead. Scrolling a bit
in the still active room crashes in LinkPreviewer::setUrl() because
Controller::instance().activeConnection() returns a nullptr now. I can submit a
separate bug report for this if necessary.

The crash can be reproduced every time.

-- Backtrace:
Application: NeoChat (neochat), signal: Aborted

[KCrash Handler]
#4  0x00007fa4c6aafe5c in __pthread_kill_implementation () at /lib64/libc.so.6
#5  0x00007fa4c6a5fa76 in raise () at /lib64/libc.so.6
#6  0x00007fa4c6a497fc in abort () at /lib64/libc.so.6
#7  0x00007fa4c70b14e5 in qt_message_output(QtMsgType, QMessageLogContext
const&, QString const&) [clone .cold] () at /lib64/libQt5Core.so.5
#8  0x00007fa4c70b0828 in qt_assert_x(char const*, char const*, char const*,
int) () at /lib64/libQt5Core.so.5
#9  0x0000000000615432 in RoomManager::loadInitialRoom() (this=0x8966a0
<RoomManager::instance()::_instance>) at
/home/kwolf/source/kde/neochat/src/roommanager.cpp:87
#10 0x000000000046802e in RoomManager::qt_static_metacall(QObject*,
QMetaObject::Call, int, void**) (_o=0x8966a0
<RoomManager::instance()::_instance>, _c=QMetaObject::InvokeMetaMethod, _id=10,
_a=0x7fff8bee7ad0) at
/home/kwolf/source/kde/neochat/build/src/neochat_autogen/EWIEGA46WW/moc_roommanager.cpp:177
#11 0x0000000000468a89 in RoomManager::qt_metacall(QMetaObject::Call, int,
void**) (this=0x8966a0 <RoomManager::instance()::_instance>,
_c=QMetaObject::InvokeMetaMethod, _id=10, _a=0x7fff8bee7ad0) at
/home/kwolf/source/kde/neochat/build/src/neochat_autogen/EWIEGA46WW/moc_roommanager.cpp:380
#12 0x00007fa4c9ce96e3 in QQmlObjectOrGadget::metacall(QMetaObject::Call, int,
void**) const () at /lib64/libQt5Qml.so.5
#13 0x00007fa4c9bc06ad in CallPrecise(QQmlObjectOrGadget const&,
QQmlPropertyData const&, QV4::ExecutionEngine*, QV4::CallData*,
QMetaObject::Call) () at /lib64/libQt5Qml.so.5
#14 0x00007fa4c9bc3a60 in QV4::QObjectMethod::callInternal(QV4::Value const*,
QV4::Value const*, int) const () at /lib64/libQt5Qml.so.5
#15 0x00007fa4c9be0a5d in QV4::Moth::VME::interpret(QV4::CppStackFrame*,
QV4::ExecutionEngine*, char const*) () at /lib64/libQt5Qml.so.5
#16 0x00007fa4c9be41c7 in QV4::Moth::VME::exec(QV4::CppStackFrame*,
QV4::ExecutionEngine*) () at /lib64/libQt5Qml.so.5
#17 0x00007fa4c9b75636 in QV4::Function::call(QV4::Value const*, QV4::Value
const*, int, QV4::ExecutionContext const*) () at /lib64/libQt5Qml.so.5
#18 0x00007fa4c9d04161 in QQmlJavaScriptExpression::evaluate(QV4::CallData*,
bool*) () at /lib64/libQt5Qml.so.5
#19 0x00007fa4c9cb4aff in QQmlBoundSignalExpression::evaluate(void**) () at
/lib64/libQt5Qml.so.5
#20 0x00007fa4c9cb6288 in QQmlBoundSignal_callback(QQmlNotifierEndpoint*,
void**) () at /lib64/libQt5Qml.so.5
#21 0x00007fa4c9ce91af in QQmlNotifier::emitNotify(QQmlNotifierEndpoint*,
void**) () at /lib64/libQt5Qml.so.5
#22 0x00007fa4c72d0b70 in void doActivate<false>(QObject*, int, void**) () at
/lib64/libQt5Core.so.5
#23 0x000000000045addb in Controller::initiated() (this=0x895ee0
<Controller::instance()::_instance>) at
/home/kwolf/source/kde/neochat/build/src/neochat_autogen/EWIEGA46WW/moc_controller.cpp:687
#24 0x000000000047153d in operator()(QString const&, QString const&) const
(__closure=0x27aca00, error=...) at
/home/kwolf/source/kde/neochat/src/controller.cpp:389
#25 0x0000000000477df6 in QtPrivate::FunctorCall<QtPrivate::IndexesList<0, 1>,
QtPrivate::List<QString, QString>, void,
Controller::invokeLogin()::<lambda(QKeychain::Job*)>::<lambda(const QString&,
const QString&)> >::call(struct {...} &, void **) (f=..., arg=0x7fff8bee9e10)
at /usr/include/qt5/QtCore/qobjectdefs_impl.h:146
#26 0x000000000047785d in
QtPrivate::Functor<Controller::invokeLogin()::<lambda(QKeychain::Job*)>::<lambda(const
QString&, const QString&)>, 2>::call<QtPrivate::List<QString, QString>,
void>(struct {...} &, void *, void **) (f=..., arg=0x7fff8bee9e10) at
/usr/include/qt5/QtCore/qobjectdefs_impl.h:256
#27 0x0000000000476d08 in
QtPrivate::QFunctorSlotObject<Controller::invokeLogin()::<lambda(QKeychain::Job*)>::<lambda(const
QString&, const QString&)>, 2, QtPrivate::List<QString, QString>,
void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *)
(which=1, this_=0x27ac9f0, r=0x895ee0 <Controller::instance()::_instance>,
a=0x7fff8bee9e10, ret=0x0) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:443
#28 0x00007fa4c72d0e96 in void doActivate<false>(QObject*, int, void**) () at
/lib64/libQt5Core.so.5
#29 0x00007fa4c98c894e in Quotient::Connection::loginError(QString, QString)
(this=<optimized out>, _t1=..., _t2=...) at
/usr/src/debug/libquotient-0.7.1-2.fc37.x86_64/redhat-linux-build/Quotient_autogen/include/moc_connection.cpp:1247
#30 0x00007fa4c98f1aeb in operator() (__closure=<optimized out>) at
/usr/src/debug/libquotient-0.7.1-2.fc37.x86_64/lib/connection.cpp:561
#31 QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void,
Quotient::Connection::assumeIdentity(const QString&, const QString&, const
QString&)::<lambda()>::<lambda()> >::call (arg=<optimized out>, f=<optimized
out>) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:146
#32 QtPrivate::Functor<Quotient::Connection::assumeIdentity(const QString&,
const QString&, const QString&)::<lambda()>::<lambda()>,
0>::call<QtPrivate::List<>, void> (arg=<optimized out>, f=<optimized out>) at
/usr/include/qt5/QtCore/qobjectdefs_impl.h:256
#33 QtPrivate::QFunctorSlotObject<Quotient::Connection::assumeIdentity(const
QString&, const QString&, const QString&)::<lambda()>::<lambda()>, 0,
QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *,
void **, bool *) (which=<optimized out>, this_=<optimized out>, r=<optimized
out>, a=<optimized out>, ret=<optimized out>) at
/usr/include/qt5/QtCore/qobjectdefs_impl.h:443
#34 0x00007fa4c72d0e96 in void doActivate<false>(QObject*, int, void**) () at
/lib64/libQt5Core.so.5
#35 0x00007fa4c98bf836 in Quotient::BaseJob::failure(Quotient::BaseJob*)
(this=<optimized out>, _t1=<optimized out>) at
/usr/src/debug/libquotient-0.7.1-2.fc37.x86_64/redhat-linux-build/Quotient_autogen/3INUWTIJ2C/moc_basejob.cpp:549
#36 0x00007fa4c99548dd in Quotient::BaseJob::finishJob() (this=0x26b5970) at
/usr/src/debug/libquotient-0.7.1-2.fc37.x86_64/lib/jobs/basejob.cpp:631
#37 0x00007fa4c72d0e96 in void doActivate<false>(QObject*, int, void**) () at
/lib64/libQt5Core.so.5
#38 0x00007fa4c8c632d8 in QNetworkReplyHttpImplPrivate::finished() () at
/lib64/libQt5Network.so.5
#39 0x00007fa4c72c8134 in QObject::event(QEvent*) () at /lib64/libQt5Core.so.5
#40 0x00007fa4c7faed62 in QApplicationPrivate::notify_helper(QObject*, QEvent*)
() at /lib64/libQt5Widgets.so.5
#41 0x00007fa4c729d4e8 in QCoreApplication::notifyInternal2(QObject*, QEvent*)
() at /lib64/libQt5Core.so.5
#42 0x00007fa4c72a0854 in QCoreApplicationPrivate::sendPostedEvents(QObject*,
int, QThreadData*) () at /lib64/libQt5Core.so.5
#43 0x00007fa4c72eeb07 in postEventSourceDispatch(_GSource*, int (*)(void*),
void*) () at /lib64/libQt5Core.so.5
#44 0x00007fa4c6938c7f in g_main_context_dispatch () at /lib64/libglib-2.0.so.0
#45 0x00007fa4c698f118 in g_main_context_iterate.constprop () at
/lib64/libglib-2.0.so.0
#46 0x00007fa4c6935f00 in g_main_context_iteration () at
/lib64/libglib-2.0.so.0
#47 0x00007fa4c72ee5fa in
QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
at /lib64/libQt5Core.so.5
#48 0x00007fa4c729bf3a in
QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at
/lib64/libQt5Core.so.5
#49 0x00007fa4c72a4002 in QCoreApplication::exec() () at /lib64/libQt5Core.so.5
#50 0x0000000000434ef5 in main(int, char**) (argc=1, argv=0x7fff8beeab98) at
/home/kwolf/source/kde/neochat/src/main.cpp:336
[Inferior 1 (process 5314) detached]

Reported using DrKonqi

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to