Bug 461882 - Crash on startup on Arch Linux
Summary: Crash on startup on Arch Linux
Status: RESOLVED FIXED
Alias: None
Product: Tokodon
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: Other Linux
: NOR crash
Target Milestone: ---
Assignee: Unassigned bugs mailing-list
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-11-15 20:02 UTC by Jean-Michaël Celerier
Modified: 2022-12-02 23:42 UTC (History)
3 users (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments
Core dump (3.50 MB, application/x-xz)
2022-11-15 20:02 UTC, Jean-Michaël Celerier
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Jean-Michaël Celerier 2022-11-15 20:02:36 UTC
Created attachment 153774 [details]
Core dump

SUMMARY
The first few times I launched the app it worked and I could use it.
But now it crashes every time before opening a window.

Here is the Qt debug log of git head as of today:
```bash
$ tokodon
Loading any accounts from settings.
XXX
[WEBSOCKET] Connecting to QUrl("wss://mastodon.art/api/v1/streaming?access_token=jgQtqB6wYF8Kc4N62bRZanIdZ2VsTFcrrz7GCZ58PWc&stream=user")
Loaded from settings: Account(0x55e99b0db4b0)
QObject::connect(AccountManager, TimelineModel): invalid nullptr parameter
qrc:/content/ui/TimelinePage.qml:65:9: QML PlaceholderMessage: Binding loop detected for property "visible"
qrc:/content/ui/main.qml:171: TypeError: Cannot read property 'right' of null
qrc:/content/ui/main.qml:170: TypeError: Cannot read property 'left' of null
[1]    18842 segmentation fault (core dumped)  tokodon
```

VERSION
```
$ yay -Qi tokodon-git
Name            : tokodon-git
Version         : 22.09.r46.g7d227f8-1

$ yay -Qi qt5-base
Name                     : qt5-base
Version                  : 5.15.7+kde+r174-1

$ uname -a
Linux msi-jm 6.0.8-arch1-1 #1 SMP PREEMPT_DYNAMIC Thu, 10 Nov 2022 21:14:24 +0000 x86_64 GNU/Linux
```

up-to-date archlinux, tokodon is using Qt 5
Comment 1 Jean-Michaël Celerier 2022-11-15 21:19:21 UTC
Trace with debug symbols: (sadly the bug seems to be deep within the QML engine...)

`̀`
bt
#0  QQmlNotifierEndpoint::connect (this=0x556f9fde0dd0, source=0x556f9f631200, sourceSignal=4, engine=0x7fffdf51b790, doNotify=true)
    at /usr/src/debug/qt5-declarative/qtdeclarative/src/qml/qml/qqmlnotifier.cpp:118
#1  0x00007f7b4c292175 in QQmlPropertyCapture::captureProperty (this=0x7fffded1e5e0, o=0x556f9f631200, c=<optimized out>, n=4, doNotify=<optimized out>)
    at /usr/src/debug/qt5-declarative/qtdeclarative/src/qml/qml/qqmljavascriptexpression.cpp:315
#2  0x00007f7b4c172197 in QV4::QObjectWrapper::getProperty (engine=0x556f9f3cf4c0, object=0x556f9f631200, property=0x7f7b282c4138)
    at /usr/src/debug/qt5-declarative/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:261
#3  0x00007f7b4c172732 in QV4::QObjectWrapper::getQmlProperty (property=0x0, hasProperty=0x0, revisionMode=QV4::QObjectWrapper::IgnoreRevision, name=0x7f7b2f3c05b8, object=0x556f9f631200, 
    qmlContext=0x556f9f62c330, engine=0x556f9f3cf4c0) at /usr/src/debug/qt5-declarative/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:388
#4  QV4::QObjectWrapper::getQmlProperty (engine=0x556f9f3cf4c0, qmlContext=0x556f9f62c330, object=0x556f9f631200, name=0x7f7b2f3c05b8, revisionMode=QV4::QObjectWrapper::IgnoreRevision, hasProperty=0x0, 
    property=0x0) at /usr/src/debug/qt5-declarative/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:358
#5  0x00007f7b4c2a2cef in QV4::QQmlTypeWrapper::virtualGet (m=0x7f7b2f3c05a8, id=..., receiver=0x7f7b2f3c05a8, hasProperty=0x0)
    at /usr/src/debug/qt5-declarative/qtdeclarative/src/qml/qml/qqmltypewrapper.cpp:268
#6  0x00007f7b4c11edcc in QV4::Lookup::getterFallback (l=0x556f9fb7e120, engine=0x556f9f3cf4c0, object=...) at /usr/src/debug/qt5-declarative/qtdeclarative/src/qml/jsruntime/qv4lookup.cpp:201
#7  0x00007f7b2d79b285 in ?? ()
#8  0x00007fffded1e4e0 in ?? ()
#9  0x0000000000000000 in ?? ()
```
Comment 2 Carl Schwan 2022-11-15 21:39:25 UTC
Thanks and yes this looks like a not so fun bug in the qmlengine :(

I'll try to reproduce it locally
Comment 3 Jean-Michaël Celerier 2022-11-15 21:50:16 UTC
I investigated a bit and it looks like it crashes because of a binding loop on checked: which causes a stack overflow.

If I comment the 4 lines:

//checked: pageStack.currentItem.type === TimelinePage.TimelineType.Home
... etc... 

in main.qml 

then it starts
Comment 4 David Marzal 2022-11-22 08:16:52 UTC
Same "QObject::connect(AccountManager, TimelineModel): invalid nullptr parameter" error after trying to start with an account created.
It shows the windows for a second and then crash.

Installed via flathub (org.kde.tokodon 22.09)
ArchLinux up-to-date (2022-11-22)

Not sure if this is a duplicate of 
https://bugs.kde.org/show_bug.cgi?id=461747
https://bugs.kde.org/show_bug.cgi?id=459577
and
https://invent.kde.org/network/tokodon/-/issues/32
Comment 5 Carl Schwan 2022-12-02 23:42:16 UTC
This was fixed with https://invent.kde.org/network/tokodon/-/merge_requests/69

Since you are using tokodon from git, I would appreciate some testing just to be sure :)