Bug 352512 - 5.0.xx after a crash, the restore session pops up twice then akregator crashes
Summary: 5.0.xx after a crash, the restore session pops up twice then akregator crashes
Status: RESOLVED FIXED
Alias: None
Product: akregator
Classification: Applications
Component: general (show other bugs)
Version: GIT (master)
Platform: Other Linux
: VHI crash
Target Milestone: ---
Assignee: kdepim bugs
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-09-10 08:23 UTC by Christophe Marin
Modified: 2016-01-29 12:37 UTC (History)
13 users (show)

See Also:
Latest Commit:
Version Fixed In: 5.2


Attachments
backtrace (4.36 KB, text/plain)
2015-10-20 20:19 UTC, Tom Goralczyk
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Christophe Marin 2015-09-10 08:23:56 UTC
That's a double issue. After a crash, Akregator asks twice to restore the previous session then crashes after closing the second window.

#0  0x00007fb56d8e60b4 in QString::QString(QString const&) (this=0x7ffcaeecac40, other=...) at /usr/include/qt5/QtCore/qstring.h:877
#1  0x00007fb56d8fa2f6 in Akregator::SearchBar::text() const (this=0x27ec0b0) at /kde/src/5/kdepim/akregator/src/searchbar.cpp:125
#2  0x00007fb56d94d015 in Akregator::MainWidget::saveProperties(KConfigGroup&) (this=0x27be810, config=...) at /kde/src/5/kdepim/akregator/src/mainwidget.cpp:1174
#3  0x00007fb56d93efda in Akregator::Part::saveProperties(KConfigGroup&) (this=0x26db360, config=...) at /kde/src/5/kdepim/akregator/src/akregator_part.cpp:420
#4  0x00007fb56d94246d in Akregator::Part::autoSaveProperties() (this=0x26db360) at /kde/src/5/kdepim/akregator/src/akregator_part.cpp:842
#5  0x00007fb56d93e516 in Akregator::Part::slotOnShutdown() (this=0x26db360) at /kde/src/5/kdepim/akregator/src/akregator_part.cpp:327
#6  0x00007fb56d93edda in Akregator::Part::~Part() (this=0x26db360, __in_chrg=<optimized out>, __vtt_parm=<optimized out>) at /kde/src/5/kdepim/akregator/src/akregator_part.cpp:400
#7  0x00007fb56d93ef30 in Akregator::Part::~Part() (this=0x26db360, __in_chrg=<optimized out>, __vtt_parm=<optimized out>) at /kde/src/5/kdepim/akregator/src/akregator_part.cpp:404
#8  0x00007fb59341cd1b in KParts::Part::slotWidgetDestroyed() (this=0x26db360) at /kde/src/5/kparts/src/part.cpp:204
#9  0x00007fb59341ce0c in KParts::Part::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=0x26db360, _c=QMetaObject::InvokeMetaMethod, _id=2, _a=0x7ffcaeecaf80)
    at /kde/build/5/kparts/src/moc_part.cpp:84
#10 0x00007fb590d31f8a in QMetaObject::activate(QObject*, int, int, void**) (sender=sender@entry=0x27be810, signalOffset=<optimized out>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffcaeecaf80) at kernel/qobject.cpp:3713
#11 0x00007fb590d32787 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=sender@entry=0x27be810, m=m@entry=0x7fb59113fbc0 <QObject::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffcaeecaf80) at kernel/qobject.cpp:3578
#12 0x00007fb590d3281f in QObject::destroyed(QObject*) (this=this@entry=0x27be810, _t1=_t1@entry=0x27be810) at .moc/moc_qobject.cpp:211
#13 0x00007fb591eeec1d in QWidget::~QWidget() (this=0x27be810, __in_chrg=<optimized out>) at kernel/qwidget.cpp:1631
#14 0x00007fb56d946782 in Akregator::MainWidget::~MainWidget() (this=0x27be810, __in_chrg=<optimized out>) at /kde/src/5/kdepim/akregator/src/mainwidget.cpp:88
#15 0x00007fb56d9467ba in Akregator::MainWidget::~MainWidget() (this=0x27be810, __in_chrg=<optimized out>) at /kde/src/5/kdepim/akregator/src/mainwidget.cpp:96
#16 0x00007fb590d32da0 in QObject::event(QEvent*) (this=this@entry=0x27be810, e=e@entry=0x4baf7d0) at kernel/qobject.cpp:1230
#17 0x00007fb591ef2ed3 in QWidget::event(QEvent*) (this=0x27be810, event=0x4baf7d0) at kernel/qwidget.cpp:9105
Comment 1 soee 2015-09-11 11:16:18 UTC
I have similar issue on Kubutnu 15.10 with Applications 15.08:

Application: Akregator (akregator), signal: Segmentation fault
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[KCrash Handler]
#6  QString::QString (other=..., this=this@entry=0x7fffed4f8040) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qstring.h:811
#7  Akregator::SearchBar::text (this=0x2435c90) at ../../../akregator/src/searchbar.cpp:125
#8  0x00007f55b47af7ff in Akregator::MainWidget::saveProperties (this=0x2409e60, config=...) at ../../../akregator/src/mainwidget.cpp:1183
#9  0x00007f55b47a9934 in Akregator::Part::autoSaveProperties (this=this@entry=0x23e0e70) at ../../../akregator/src/akregator_part.cpp:871
#10 0x00007f55b47a99c9 in Akregator::Part::slotOnShutdown (this=this@entry=0x23e0e70) at ../../../akregator/src/akregator_part.cpp:349
#11 0x00007f55b47aa028 in Akregator::Part::~Part (this=this@entry=0x23e0e70, __in_chrg=<optimized out>, __vtt_parm=<optimized out>) at ../../../akregator/src/akregator_part.cpp:422
#12 0x00007f55b47aa079 in Akregator::Part::~Part (this=0x23e0e70, __in_chrg=<optimized out>, __vtt_parm=<optimized out>) at ../../../akregator/src/akregator_part.cpp:426
#13 0x00007f55d695030a in QMetaObject::activate (sender=sender@entry=0x2409e60, signalOffset=<optimized out>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7fffed4f8290) at kernel/qobject.cpp:3717
#14 0x00007f55d6950b07 in QMetaObject::activate (sender=sender@entry=0x2409e60, m=m@entry=0x7f55d6b4d0e0 <QObject::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7fffed4f8290) at kernel/qobject.cpp:3582
#15 0x00007f55d6950baf in QObject::destroyed (this=this@entry=0x2409e60, _t1=_t1@entry=0x2409e60) at .moc/moc_qobject.cpp:206
#16 0x00007f55d793e265 in QWidget::~QWidget (this=0x2409e60, __in_chrg=<optimized out>) at kernel/qwidget.cpp:1621
#17 0x00007f55b47b2ee9 in Akregator::MainWidget::~MainWidget (this=0x2409e60, __in_chrg=<optimized out>) at ../../../akregator/src/mainwidget.cpp:96
#18 0x00007f55d69511f0 in QObject::event (this=this@entry=0x2409e60, e=e@entry=0x2135e60) at kernel/qobject.cpp:1236
#19 0x00007f55d7941edb in QWidget::event (this=0x2409e60, event=0x2135e60) at kernel/qwidget.cpp:9084
#20 0x00007f55d78ffb8c in QApplicationPrivate::notify_helper (this=this@entry=0x1d41ec0, receiver=receiver@entry=0x2409e60, e=e@entry=0x2135e60) at kernel/qapplication.cpp:3720
#21 0x00007f55d7905230 in QApplication::notify (this=0x7fffed4f8b40, receiver=0x2409e60, e=0x2135e60) at kernel/qapplication.cpp:3503
#22 0x00007f55d691fa9b in QCoreApplication::notifyInternal (this=0x7fffed4f8b40, receiver=0x2409e60, event=event@entry=0x2135e60) at kernel/qcoreapplication.cpp:935
#23 0x00007f55d6921bd7 in QCoreApplication::sendEvent (event=0x2135e60, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:228
#24 QCoreApplicationPrivate::sendPostedEvents (receiver=receiver@entry=0x0, event_type=event_type@entry=0, data=0x1cdb4d0) at kernel/qcoreapplication.cpp:1552
#25 0x00007f55d6922108 in QCoreApplication::sendPostedEvents (receiver=receiver@entry=0x0, event_type=event_type@entry=0) at kernel/qcoreapplication.cpp:1410
#26 0x00007f55d69769f3 in postEventSourceDispatch (s=0x1d7f6e0) at kernel/qeventdispatcher_glib.cpp:271
#27 0x00007f55ce69b037 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#28 0x00007f55ce69b290 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#29 0x00007f55ce69b33c in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#30 0x00007f55d6976dff in QEventDispatcherGlib::processEvents (this=0x1d7efe0, flags=...) at kernel/qeventdispatcher_glib.cpp:418
#31 0x00007f55d691d2da in QEventLoop::exec (this=this@entry=0x7fffed4f8900, flags=..., flags@entry=...) at kernel/qeventloop.cpp:204
#32 0x00007f55d6924e4c in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1188
#33 0x00007f55d6c3a09c in QGuiApplication::exec () at kernel/qguiapplication.cpp:1510
#34 0x00007f55d78fc025 in QApplication::exec () at kernel/qapplication.cpp:2956
#35 0x0000000000409630 in main (argc=1, argv=0x7fffed4f8cb8) at ../../../akregator/src/main.cpp:113
Comment 2 Dainius Masiliūnas 2015-09-23 16:41:08 UTC
I can confirm this too, on openSUSE Tumbleweed.

In addition, bug #348979 might be a duplicate of this.

After it's restarted again, all the feeds are gone and replaced with the default KDE feeds. Deleting them and reimporting an OPML file results in Akregator remembering which articles were read and which weren't, though, so that's a sort of workaround.
Comment 3 Pavel 2015-09-25 19:27:19 UTC
Yes, this happens to me with 15.08.1 as well.
Comment 4 Dainius Masiliūnas 2015-09-27 17:52:19 UTC
I had this happen to me once again recently. It wasn't even after a crash; rather, it was simply after rebooting. Oddly enough, if after closing both session restore windows and Akregator crashing you tell DrKonqi to launch Akregator again, it once again opens the same two session restore windows and promptly crashes. Only once DrKonqi is closed and Akregator is restarted manually it stops crashing like that.
Comment 5 S Clark 2015-09-29 14:55:25 UTC
If it helps, what seems to be happening is the feeds.opml file that akregator reads its feeds from gets truncated to 1 byte. Not sure what *exactly* is happening, but that's what I see every time this happens (about once every few weeks for the last couple of months). 

I have to remember to export my feedlist regularly so that I can replace/reimport after each crash.
Comment 6 Pavel 2015-09-30 04:49:31 UTC
(In reply to S Clark from comment #5)
> I have to remember to export my feedlist regularly so that I can
> replace/reimport after each crash.

Why not automate the backup of feeds.opml? Use a cron job or systemd timer.
Comment 7 Tom Goralczyk 2015-10-20 20:19:27 UTC
Created attachment 95058 [details]
backtrace
Comment 8 Tom Goralczyk 2015-10-20 20:20:13 UTC
Still present in 15.08.2. This is a serious bug that results in the corruption of akregator's OPML database.
Comment 9 Tom Goralczyk 2015-10-21 12:23:28 UTC
Steps to reproduce:
1. Run `akregator` from konsole
2. Send SIGTERM to akregator or just press CTRL-C in konsole.
3. Run `akregator` again.
4. The "Akregator did not close properly" dialog pops up twice. Click "Do Not Restore" on the first dialog.
5. Click "Do Not Restore" on the second dialog.
Result: Akregator crashes. The "~/.local/share/akregator/data/feeds.opml" file gets corrupted (it's empty). User data (list of subscribed RSS feeds) is lost. On the next run, Akregator shows a "XML Parsing Error" message.

Expected result:
1. When restoring a session, the "Akregator did not close properly" dialog should only be shown once. Akregator should not crash and corrupt the OPML file when closing that dialog.
2. Akregator should clean up when receiving a SIGTERM signal or Ctrl-C and not treat that as "not being closed properly".
Comment 10 Sergio Martins 2015-10-21 13:02:02 UTC
bumping importance, as requested by p00dle on #kde-devel
Comment 11 Sergio Martins 2015-10-21 23:33:09 UTC
I tried reproducing but it works fine, I only see the dialog once after a Ctrl-C
Comment 12 Alex 2015-11-19 06:43:12 UTC
I'm experiencing the same issue
Comment 13 Sascha Manns 2015-11-23 15:22:44 UTC
The same issue on kubuntu wily.
Comment 14 Jonathan Rouzaud-Cornabas 2015-12-08 10:08:51 UTC
I'm experiencing the same issue even after I tried to delete all the akregator / konqueror related files within my home directory.
Comment 15 Robert 2016-01-02 10:13:03 UTC
Run into that bug after upgrade to Kubuntu 15.10. Does anybody know the solution? Fresh install?
Comment 16 Pavel 2016-01-02 10:14:37 UTC
(In reply to Robert from comment #15)
> Run into that bug after upgrade to Kubuntu 15.10. Does anybody know the
> solution? Fresh install?

No, it won't help. Wait for a fix.
Comment 17 Alex 2016-01-02 14:38:32 UTC
The only workaround solution I found is to:
- save the file ~/.local/share/akregator/data/feeds.opml BEFORE running again akregator after a crash
- run akregator and follow the broken recovery that instead of recoverying deletes the feed list
- close akregator
- reput in place the feeds.opml file
- run akregator again
Comment 18 Pavel 2016-01-04 21:39:42 UTC
Actually I noticed feeds.opml is no longer corrupted by KDE PIM 15.12, but the restore dialog appears twice, as before.
Comment 19 Pavel 2016-01-04 21:40:34 UTC
And Akregator does not crash anymore, I don't have to launch it twice.
Comment 20 Alex 2016-01-04 21:43:11 UTC
Unfortunately (k)ubuntu uses the old 15.08 version and has not prepared official updates so I can't test the new one, but I'm very happy to know it's getting better
Comment 21 Laurent Montel 2016-01-24 09:40:52 UTC
I disable restorecrash in 5.1.3 so it will not crash. But I don't still understand why it creates two kpart yet.
Comment 22 Christophe Marin 2016-01-24 20:52:48 UTC
as I can't reproduce anymore, I'm wondering : do you restore the previous session when you log in ?
Comment 23 Laurent Montel 2016-01-29 12:37:30 UTC
I recreate a new widget to inform if we want to restore session (for akregator 5.2).
It's better now. We can or not restore session as previously.