Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

latest git segfault #6680

Closed
ERYuyNIrbNKrsc opened this issue Apr 24, 2017 · 18 comments
Closed

latest git segfault #6680

ERYuyNIrbNKrsc opened this issue Apr 24, 2017 · 18 comments
Assignees
Labels
Crash RSS RSS-related issues/changes
Milestone

Comments

@ERYuyNIrbNKrsc
Copy link

ERYuyNIrbNKrsc commented Apr 24, 2017

Please provide the following information

qBittorrent version and Operating System:

qBittorrent v3.4.0alpha Kubuntu 17.04

If on linux, libtorrent and Qt version:

libtorrent RC_1_1 Qt 5.7.1

What is the problem:

when updated rss, sometimes happens Segmentation fault

What is the expected behavior:

Steps to reproduce:

Extra info(if any):

Thread 1 "qbittorrent" received signal SIGSEGV, Segmentation fault.
0x0000000dffffffff in ?? ()
(gdb) backtrace 
#0  0x0000000dffffffff in ?? ()
#1  0x000055555583174b in ArticleListWidget::handleArticleAboutToBeRemoved (this=0x5555573dd570, rssArticle=0x555556153b90) at /media/user/sda5/dev/qBittorrent/src/gui/rss/articlelistwidget.cpp:96
#2  0x0000555555832580 in QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<RSS::Article*>, void, void (ArticleListWidget::*)(RSS::Article*)>::call (f=
    (void (ArticleListWidget::*)(ArticleListWidget * const, RSS::Article *)) 0x555555831710 <ArticleListWidget::handleArticleAboutToBeRemoved(RSS::Article*)>, o=0x5555573dd570, arg=0x7fffffffbde0)
    at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:141
#3  0x000055555583248f in QtPrivate::FunctionPointer<void (ArticleListWidget::*)(RSS::Article*)>::call<QtPrivate::List<RSS::Article*>, void> (f=
    (void (ArticleListWidget::*)(ArticleListWidget * const, RSS::Article *)) 0x555555831710 <ArticleListWidget::handleArticleAboutToBeRemoved(RSS::Article*)>, o=0x5555573dd570, arg=0x7fffffffbde0)
    at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:160
#4  0x0000555555832281 in QtPrivate::QSlotObject<void (ArticleListWidget::*)(RSS::Article*), QtPrivate::List<RSS::Article*>, void>::impl (which=1, this_=0x555557311f10, r=0x5555573dd570, a=0x7fffffffbde0, ret=0x0)
    at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject_impl.h:120
#5  0x00007ffff549581e in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00005555556ca362 in RSS::Item::articleAboutToBeRemoved (this=0x55555610c190, _t1=0x555556153b90) at /media/user/sda5/dev/qBittorrent/build/src/base/qbt_base_automoc.dir/moc_rss_item_S6EAAZJIPRL7HS.cpp:256
#7  0x0000555555694e22 in QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<RSS::Article*>, void, void (RSS::Item::*)(RSS::Article*)>::call (f=
    (void (RSS::Item::*)(RSS::Item * const, RSS::Article *)) 0x5555556ca30c <RSS::Item::articleAboutToBeRemoved(RSS::Article*)>, o=0x55555610c190, arg=0x7fffffffbfe0)
    at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:141
#8  0x0000555555693fc4 in QtPrivate::FunctionPointer<void (RSS::Item::*)(RSS::Article*)>::call<QtPrivate::List<RSS::Article*>, void> (f=
    (void (RSS::Item::*)(RSS::Item * const, RSS::Article *)) 0x5555556ca30c <RSS::Item::articleAboutToBeRemoved(RSS::Article*)>, o=0x55555610c190, arg=0x7fffffffbfe0)
    at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:160
#9  0x0000555555693467 in QtPrivate::QSlotObject<void (RSS::Item::*)(RSS::Article*), QtPrivate::List<RSS::Article*>, void>::impl (which=1, this_=0x5555561b92c0, r=0x55555610c190, a=0x7fffffffbfe0, ret=0x0)
    at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject_impl.h:120
#10 0x00007ffff549581e in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#11 0x00005555556ca362 in RSS::Item::articleAboutToBeRemoved (this=0x5555561461c0, _t1=0x555556153b90) at /media/user/sda5/dev/qBittorrent/build/src/base/qbt_base_automoc.dir/moc_rss_item_S6EAAZJIPRL7HS.cpp:256
#12 0x000055555568bacf in RSS::Feed::removeOldestArticle (this=0x5555561461c0) at /media/user/sda5/dev/qBittorrent/src/base/rss/rss_feed.cpp:345
#13 0x000055555568b9de in RSS::Feed::addArticle (this=0x5555561461c0, article=0x5555560f7f10) at /media/user/sda5/dev/qBittorrent/src/base/rss/rss_feed.cpp:336
#14 0x000055555568a758 in RSS::Feed::handleParsingFinished (this=0x5555561461c0, result=...) at /media/user/sda5/dev/qBittorrent/src/base/rss/rss_feed.cpp:212
#15 0x000055555568fac1 in QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<RSS::Private::ParsingResult const&>, void, void (RSS::Feed::*)(RSS::Private::ParsingResult const&)>::call (f=
    (void (RSS::Feed::*)(RSS::Feed * const, const RSS::Private::ParsingResult &)) 0x55555568a536 <RSS::Feed::handleParsingFinished(RSS::Private::ParsingResult const&)>, o=0x5555561461c0, arg=0x7fffb8030a30)
    at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:141
#16 0x000055555568f6d3 in QtPrivate::FunctionPointer<void (RSS::Feed::*)(RSS::Private::ParsingResult const&)>::call<QtPrivate::List<RSS::Private::ParsingResult const&>, void> (f=
    (void (RSS::Feed::*)(RSS::Feed * const, const RSS::Private::ParsingResult &)) 0x55555568a536 <RSS::Feed::handleParsingFinished(RSS::Private::ParsingResult const&)>, o=0x5555561461c0, arg=0x7fffb8030a30)
    at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:160
#17 0x000055555568eabf in QtPrivate::QSlotObject<void (RSS::Feed::*)(RSS::Private::ParsingResult const&), QtPrivate::List<RSS::Private::ParsingResult const&>, void>::impl (which=1, this_=0x55555614e580, 
    r=0x5555561461c0, a=0x7fffb8030a30, ret=0x0) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject_impl.h:120
#18 0x00007ffff5496359 in QObject::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#19 0x00007ffff63cc35c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#20 0x00007ffff63d3b11 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#21 0x00005555555e143d in Application::notify (this=0x555556053640, receiver=0x5555561461c0, event=0x7fffb801c8d0) at /media/user/sda5/dev/qBittorrent/src/app/application.cpp:528
#22 0x00007ffff54698a0 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#23 0x00007ffff546c02d in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#24 0x00007ffff54bdb03 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#25 0x00007ffff2865377 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#26 0x00007ffff28655e0 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#27 0x00007ffff286568c in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#28 0x00007ffff54bdf0f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#29 0x00007ffff546788a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#30 0x00007ffff546fffc in QCoreApplication::exec() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#31 0x00005555555e138a in Application::exec (this=0x555556053640, params=...) at /media/user/sda5/dev/qBittorrent/src/app/application.cpp:473
#32 0x00005555555efa88 in main (argc=1, argv=0x7fffffffca48) at /media/user/sda5/dev/qBittorrent/src/app/main.cpp:237
(gdb) q
A debugging session is active.

        Inferior 1 [process 11979] will be killed.

Quit anyway? (y or n) y
@zeule
Copy link
Contributor

zeule commented Apr 24, 2017

@glassez?

@glassez glassez self-assigned this Apr 24, 2017
@glassez glassez added this to the 3.4.0 milestone Apr 24, 2017
@glassez glassez added Crash RSS RSS-related issues/changes labels Apr 24, 2017
@glassez
Copy link
Member

glassez commented Apr 24, 2017

@ERYuyNIrbNKrsc, can you test updated master?

@ERYuyNIrbNKrsc
Copy link
Author

ok testing, if happens again I'll write here.

@zeule
Copy link
Contributor

zeule commented Apr 24, 2017

Thanks!

@ERYuyNIrbNKrsc
Copy link
Author

ERYuyNIrbNKrsc commented Apr 24, 2017

updated master

gdb qbittorrent 
GNU gdb (Ubuntu 7.12.50.20170314-0ubuntu1) 7.12.50.20170314-git
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from qbittorrent...done.
(gdb) r
Starting program: /usr/local/bin/qbittorrent 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fffea5b0700 (LWP 27998)]
[New Thread 0x7fffdc866700 (LWP 27999)]
[New Thread 0x7fffd7fff700 (LWP 28000)]
[New Thread 0x7fffd7172700 (LWP 28001)]
[New Thread 0x7fffd6971700 (LWP 28002)]
[New Thread 0x7fffd6170700 (LWP 28003)]
[New Thread 0x7fffd596f700 (LWP 28004)]
[New Thread 0x7fffd516e700 (LWP 28005)]
[New Thread 0x7fffd496d700 (LWP 28006)]
[New Thread 0x7fffc7ded700 (LWP 28007)]
[New Thread 0x7fffc75ec700 (LWP 28008)]
[New Thread 0x7fffc69a6700 (LWP 28009)]
[New Thread 0x7fffc5f3b700 (LWP 28010)]
[New Thread 0x7fffc573a700 (LWP 28011)]
[New Thread 0x7fffc4f39700 (LWP 28012)]
[New Thread 0x7fffabfff700 (LWP 28013)]
[New Thread 0x7fffab7fe700 (LWP 28014)]
[New Thread 0x7fffa8d84700 (LWP 28015)]
[Thread 0x7fffd6971700 (LWP 28002) exited]
[Thread 0x7fffabfff700 (LWP 28013) exited]
[Thread 0x7fffc573a700 (LWP 28011) exited]
[Thread 0x7fffc4f39700 (LWP 28012) exited]
[New Thread 0x7fffc4f39700 (LWP 28087)]
[Thread 0x7fffc4f39700 (LWP 28087) exited]
[New Thread 0x7fffc4f39700 (LWP 28671)]
[New Thread 0x7fffc573a700 (LWP 28672)]
[New Thread 0x7fffabfff700 (LWP 28673)]
[New Thread 0x7fffd6971700 (LWP 28674)]
[Thread 0x7fffd6971700 (LWP 28674) exited]
[Thread 0x7fffabfff700 (LWP 28673) exited]
[Thread 0x7fffc4f39700 (LWP 28671) exited]
[Thread 0x7fffc573a700 (LWP 28672) exited]
[New Thread 0x7fffc573a700 (LWP 31831)]
[New Thread 0x7fffc4f39700 (LWP 31832)]
[New Thread 0x7fffabfff700 (LWP 31833)]
[New Thread 0x7fffd6971700 (LWP 31834)]
[Thread 0x7fffabfff700 (LWP 31833) exited]
[Thread 0x7fffc4f39700 (LWP 31832) exited]
[Thread 0x7fffc573a700 (LWP 31831) exited]
[Thread 0x7fffd6971700 (LWP 31834) exited]
[New Thread 0x7fffd6971700 (LWP 8534)]
[New Thread 0x7fffc573a700 (LWP 8535)]
[New Thread 0x7fffc4f39700 (LWP 8536)]
[New Thread 0x7fffabfff700 (LWP 8537)]

Thread 1 "qbittorrent" received signal SIGSEGV, Segmentation fault.
0x0000555557fa8540 in ?? ()
(gdb) backtrace 
#0  0x0000555557fa8540 in ?? ()
#1  0x000055555583172b in ArticleListWidget::handleArticleAboutToBeRemoved (this=0x5555573520e0, rssArticle=0x555557ce31a0) at /media/user/sda5/dev/qBittorrent/src/gui/rss/articlelistwidget.cpp:96
#2  0x0000555555832560 in QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<RSS::Article*>, void, void (ArticleListWidget::*)(RSS::Article*)>::call (f=
    (void (ArticleListWidget::*)(ArticleListWidget * const, RSS::Article *)) 0x5555558316f0 <ArticleListWidget::handleArticleAboutToBeRemoved(RSS::Article*)>, o=0x5555573520e0, arg=0x7fffffffbda0)
    at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:141
#3  0x000055555583246f in QtPrivate::FunctionPointer<void (ArticleListWidget::*)(RSS::Article*)>::call<QtPrivate::List<RSS::Article*>, void> (f=
    (void (ArticleListWidget::*)(ArticleListWidget * const, RSS::Article *)) 0x5555558316f0 <ArticleListWidget::handleArticleAboutToBeRemoved(RSS::Article*)>, o=0x5555573520e0, arg=0x7fffffffbda0)
    at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:160
#4  0x0000555555832261 in QtPrivate::QSlotObject<void (ArticleListWidget::*)(RSS::Article*), QtPrivate::List<RSS::Article*>, void>::impl (which=1, this_=0x5555572c1c60, r=0x5555573520e0, a=0x7fffffffbda0, ret=0x0)
    at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject_impl.h:120
#5  0x00007ffff549581e in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00005555556ca342 in RSS::Item::articleAboutToBeRemoved (this=0x55555610c7b0, _t1=0x555557ce31a0) at /media/user/sda5/dev/qBittorrent/build/src/base/qbt_base_automoc.dir/moc_rss_item_S6EAAZJIPRL7HS.cpp:256
#7  0x0000555555694e02 in QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<RSS::Article*>, void, void (RSS::Item::*)(RSS::Article*)>::call (f=
    (void (RSS::Item::*)(RSS::Item * const, RSS::Article *)) 0x5555556ca2ec <RSS::Item::articleAboutToBeRemoved(RSS::Article*)>, o=0x55555610c7b0, arg=0x7fffffffbfa0)
    at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:141
#8  0x0000555555693fa4 in QtPrivate::FunctionPointer<void (RSS::Item::*)(RSS::Article*)>::call<QtPrivate::List<RSS::Article*>, void> (f=
    (void (RSS::Item::*)(RSS::Item * const, RSS::Article *)) 0x5555556ca2ec <RSS::Item::articleAboutToBeRemoved(RSS::Article*)>, o=0x55555610c7b0, arg=0x7fffffffbfa0)
    at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:160
#9  0x0000555555693447 in QtPrivate::QSlotObject<void (RSS::Item::*)(RSS::Article*), QtPrivate::List<RSS::Article*>, void>::impl (which=1, this_=0x5555570587d0, r=0x55555610c7b0, a=0x7fffffffbfa0, ret=0x0)
    at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject_impl.h:120
#10 0x00007ffff549581e in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#11 0x00005555556ca342 in RSS::Item::articleAboutToBeRemoved (this=0x555556d701c0, _t1=0x555557ce31a0) at /media/user/sda5/dev/qBittorrent/build/src/base/qbt_base_automoc.dir/moc_rss_item_S6EAAZJIPRL7HS.cpp:256
#12 0x000055555568ba9c in RSS::Feed::removeOldestArticle (this=0x555556d701c0) at /media/user/sda5/dev/qBittorrent/src/base/rss/rss_feed.cpp:344
#13 0x000055555568b9de in RSS::Feed::addArticle (this=0x555556d701c0, article=0x555557f7de40) at /media/user/sda5/dev/qBittorrent/src/base/rss/rss_feed.cpp:336
#14 0x000055555568a758 in RSS::Feed::handleParsingFinished (this=0x555556d701c0, result=...) at /media/user/sda5/dev/qBittorrent/src/base/rss/rss_feed.cpp:212
#15 0x000055555568faa0 in QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<RSS::Private::ParsingResult const&>, void, void (RSS::Feed::*)(RSS::Private::ParsingResult const&)>::call (f=
    (void (RSS::Feed::*)(RSS::Feed * const, const RSS::Private::ParsingResult &)) 0x55555568a536 <RSS::Feed::handleParsingFinished(RSS::Private::ParsingResult const&)>, o=0x555556d701c0, arg=0x7fffb42ee430)
    at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:141
#16 0x000055555568f6ed in QtPrivate::FunctionPointer<void (RSS::Feed::*)(RSS::Private::ParsingResult const&)>::call<QtPrivate::List<RSS::Private::ParsingResult const&>, void> (f=
    (void (RSS::Feed::*)(RSS::Feed * const, const RSS::Private::ParsingResult &)) 0x55555568a536 <RSS::Feed::handleParsingFinished(RSS::Private::ParsingResult const&)>, o=0x555556d701c0, arg=0x7fffb42ee430)
    at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:160
#17 0x000055555568ec1d in QtPrivate::QSlotObject<void (RSS::Feed::*)(RSS::Private::ParsingResult const&), QtPrivate::List<RSS::Private::ParsingResult const&>, void>::impl (which=1, this_=0x555556b1be80, 
    r=0x555556d701c0, a=0x7fffb42ee430, ret=0x0) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject_impl.h:120
#18 0x00007ffff5496359 in QObject::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#19 0x00007ffff63cc35c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#20 0x00007ffff63d3b11 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#21 0x00005555555e143d in Application::notify (this=0x555556053640, receiver=0x555556d701c0, event=0x7fffb42ee450) at /media/user/sda5/dev/qBittorrent/src/app/application.cpp:528
#22 0x00007ffff54698a0 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#23 0x00007ffff546c02d in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#24 0x00007ffff54bdb03 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#25 0x00007ffff2865377 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#26 0x00007ffff28655e0 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#27 0x00007ffff286568c in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#28 0x00007ffff54bdf0f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#29 0x00007ffff546788a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#30 0x00007ffff546fffc in QCoreApplication::exec() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#31 0x00005555555e138a in Application::exec (this=0x555556053640, params=...) at /media/user/sda5/dev/qBittorrent/src/app/application.cpp:473
#32 0x00005555555efa88 in main (argc=1, argv=0x7fffffffca08) at /media/user/sda5/dev/qBittorrent/src/app/main.cpp:237
(gdb)

@zeule
Copy link
Contributor

zeule commented Apr 24, 2017

Please, paste stacktraces enquoted by ``` (see your edited posts).

@glassez
Copy link
Member

glassez commented Apr 24, 2017

I'll try to reproduce this crash and fix it again ASAP.

@Chocobo1
Copy link
Member

@glassez
coverity scan reported some in rss modules.

@glassez
Copy link
Member

glassez commented Apr 24, 2017

coverity scan reported some in rss modules.

Fixed in #6686.
But it's not about that.
I can't reproduce it yet...

@glassez
Copy link
Member

glassez commented Apr 24, 2017

@mgziminsky, can you confirm this issue?

@mgziminsky
Copy link

I'll test tonight. Based on that stack trace, it looks related to updating a "full" feed.

To test, I would load a feed, with at least 50 articles, then lower that number to maybe 25 and refresh the feed. You should use a feed with frequent updates so that the refresh has some new entries and it doesn't skip everything. Depending on when it reads from the cache file, you might be able to just delete the top few entries from there before refreshing as well.

@zeule
Copy link
Contributor

zeule commented Apr 25, 2017

While others trying to reproduce this, @ERYuyNIrbNKrsc, can you rebuild with sanitizer enabled and provide its output when it detects segmentation error, please? Please add the following compiler options:
-fsanitize=address -fsanitize=undefined

@ERYuyNIrbNKrsc
Copy link
Author

possibly related to it.
When this happens, the computer was heavily loaded. (building digiKam)
or is it just my problem ...

gdb qbittorrent 
GNU gdb (Ubuntu 7.12.50.20170314-0ubuntu1) 7.12.50.20170314-git
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from qbittorrent...done.
(gdb) r
Starting program: /usr/local/bin/qbittorrent 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fffe606f700 (LWP 23696)]
[New Thread 0x7fffdc2f0700 (LWP 23697)]
[New Thread 0x7fffdbadf700 (LWP 23698)]
[New Thread 0x7fffdac1f700 (LWP 23699)]
[New Thread 0x7fffda3fb700 (LWP 23700)]
[New Thread 0x7fffd9bd6700 (LWP 23701)]
[New Thread 0x7fffd91a8700 (LWP 23702)]
[New Thread 0x7fffd8910700 (LWP 23703)]
[New Thread 0x7fffd810f700 (LWP 23704)]
[New Thread 0x7fffd7493700 (LWP 23705)]
[New Thread 0x7fffd69f2700 (LWP 23706)]
[New Thread 0x7fffd61e1700 (LWP 23707)]
[New Thread 0x7fffd59bc700 (LWP 23708)]
[New Thread 0x7fffd5197700 (LWP 23709)]
[New Thread 0x7fffd4972700 (LWP 23710)]
[New Thread 0x7fffd414d700 (LWP 23711)]
[New Thread 0x7fffd0319700 (LWP 23712)]
[Thread 0x7fffd59bc700 (LWP 23708) exited]
[Thread 0x7fffd5197700 (LWP 23709) exited]
[Thread 0x7fffd4972700 (LWP 23710) exited]
[New Thread 0x7fffd4972700 (LWP 25411)]                                                                                                                                                                                     
[New Thread 0x7fffd5197700 (LWP 25412)]                                                                                                                                                                                     
=================================================================                                                                                                                                                           
==23692==ERROR: AddressSanitizer: heap-use-after-free on address 0x604000b7fd10 at pc 0x5555572a43d6 bp 0x7fffffffb8d0 sp 0x7fffffffb8c0                                                                                    
READ of size 8 at 0x604000b7fd10 thread T0                                                                                                                                                                                  
    #0 0x5555572a43d5 in ArticleListWidget::handleArticleAboutToBeRemoved(RSS::Article*) /media/user/sda5/dev/bak/qBittorrent/src/gui/rss/articlelistwidget.cpp:96                                                         
    #1 0x5555572a832c in QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<RSS::Article*>, void, void (ArticleListWidget::*)(RSS::Article*)>::call(void (ArticleListWidget::*)(RSS::Article*), ArticleListWidget*, void**) /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:141                                                                                                                                              
    #2 0x5555572a7eb6 in void QtPrivate::FunctionPointer<void (ArticleListWidget::*)(RSS::Article*)>::call<QtPrivate::List<RSS::Article*>, void>(void (ArticleListWidget::*)(RSS::Article*), ArticleListWidget*, void**) /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:160                                                                                                                                                                
    #3 0x5555572a75ea in QtPrivate::QSlotObject<void (ArticleListWidget::*)(RSS::Article*), QtPrivate::List<RSS::Article*>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject_impl.h:120                                                                                                                                                                                          
    #4 0x7ffff44f181d in QMetaObject::activate(QObject*, int, int, void**) (/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x2a881d)                                                                                             
    #5 0x555556cdc827 in RSS::Item::articleAboutToBeRemoved(RSS::Article*) /media/user/sda5/dev/bak/qBittorrent/build/src/base/qbt_base_automoc.dir/moc_rss_item_S6EAAZJIPRL7HS.cpp:256                                    
    #6 0x555556c3be07 in QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<RSS::Article*>, void, void (RSS::Item::*)(RSS::Article*)>::call(void (RSS::Item::*)(RSS::Article*), RSS::Item*, void**) /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:141                                                                                                                                                                      
    #7 0x555556c39f6e in void QtPrivate::FunctionPointer<void (RSS::Item::*)(RSS::Article*)>::call<QtPrivate::List<RSS::Article*>, void>(void (RSS::Item::*)(RSS::Article*), RSS::Item*, void**) /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:160                                                                                                                                                                                        
    #8 0x555556c38406 in QtPrivate::QSlotObject<void (RSS::Item::*)(RSS::Article*), QtPrivate::List<RSS::Article*>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject_impl.h:120                                                                                                                                                                                                  
    #9 0x7ffff44f181d in QMetaObject::activate(QObject*, int, int, void**) (/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x2a881d)
    #10 0x555556cdc827 in RSS::Item::articleAboutToBeRemoved(RSS::Article*) /media/user/sda5/dev/bak/qBittorrent/build/src/base/qbt_base_automoc.dir/moc_rss_item_S6EAAZJIPRL7HS.cpp:256
    #11 0x555556c21cc2 in RSS::Feed::removeOldestArticle() /media/user/sda5/dev/bak/qBittorrent/src/base/rss/rss_feed.cpp:344
    #12 0x555556c21a7d in RSS::Feed::addArticle(RSS::Article*) /media/user/sda5/dev/bak/qBittorrent/src/base/rss/rss_feed.cpp:336
    #13 0x555556c1d4c4 in RSS::Feed::handleParsingFinished(RSS::Private::ParsingResult const&) /media/user/sda5/dev/bak/qBittorrent/src/base/rss/rss_feed.cpp:212
    #14 0x555556c2e5bc in QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<RSS::Private::ParsingResult const&>, void, void (RSS::Feed::*)(RSS::Private::ParsingResult const&)>::call(void (RSS::Feed::*)(RSS::Private::ParsingResult const&), RSS::Feed*, void**) /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:141
    #15 0x555556c2dd01 in void QtPrivate::FunctionPointer<void (RSS::Feed::*)(RSS::Private::ParsingResult const&)>::call<QtPrivate::List<RSS::Private::ParsingResult const&>, void>(void (RSS::Feed::*)(RSS::Private::ParsingResult const&), RSS::Feed*, void**) /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:160
    #16 0x555556c2b2a2 in QtPrivate::QSlotObject<void (RSS::Feed::*)(RSS::Private::ParsingResult const&), QtPrivate::List<RSS::Private::ParsingResult const&>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject_impl.h:120
    #17 0x7ffff44f2358 in QObject::event(QEvent*) (/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x2a9358)
    #18 0x7ffff542835b in QApplicationPrivate::notify_helper(QObject*, QEvent*) (/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x15335b)
    #19 0x7ffff542fb10 in QApplication::notify(QObject*, QEvent*) (/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x15ab10)
    #20 0x5555569e979e in Application::notify(QObject*, QEvent*) /media/user/sda5/dev/bak/qBittorrent/src/app/application.cpp:528
    #21 0x7ffff44c589f in QCoreApplication::notifyInternal2(QObject*, QEvent*) (/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x27c89f)
    #22 0x7ffff44c802c in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x27f02c)
    #23 0x7ffff4519b02  (/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x2d0b02)
    #24 0x7ffff099a376 in g_main_context_dispatch (/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x4a376)
    #25 0x7ffff099a5df  (/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x4a5df)
    #26 0x7ffff099a68b in g_main_context_iteration (/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x4a68b)
    #27 0x7ffff4519f0e in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x2d0f0e)
    #28 0x7ffff44c3889 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x27a889)
    #29 0x7ffff44cbffb in QCoreApplication::exec() (/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x282ffb)
    #30 0x5555569e95fc in Application::exec(QStringList const&) /media/user/sda5/dev/bak/qBittorrent/src/app/application.cpp:473
    #31 0x555556a15c29 in main /media/user/sda5/dev/bak/qBittorrent/src/app/main.cpp:237
    #32 0x7ffff28da3f0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x203f0)
    #33 0x5555569e0429 in _start (/usr/local/bin/qbittorrent+0x148c429)

0x604000b7fd10 is located 0 bytes inside of 34-byte region [0x604000b7fd10,0x604000b7fd32)
freed by thread T9 (QThread) here:
    #0 0x7ffff6efbb60 in __interceptor_free (/usr/lib/x86_64-linux-gnu/libasan.so.3+0xc6b60)
    #1 0x7ffff438167a in QString::compare_helper(QChar const*, int, char const*, int, Qt::CaseSensitivity) (/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x13867a)

previously allocated by thread T9 (QThread) here:
    #0 0x7ffff6efbec0 in __interceptor_malloc (/usr/lib/x86_64-linux-gnu/libasan.so.3+0xc6ec0)
    #1 0x7ffff42f6ecb in QArrayData::allocate(unsigned long, unsigned long, unsigned long, QFlags<QArrayData::AllocationOption>) (/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0xadecb)

Thread T9 (QThread) created by T0 here:
    #0 0x7ffff6e664e8 in __interceptor_pthread_create (/usr/lib/x86_64-linux-gnu/libasan.so.3+0x314e8)
    #1 0x7ffff42f5185 in QThread::start(QThread::Priority) (/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0xac185)

SUMMARY: AddressSanitizer: heap-use-after-free /media/user/sda5/dev/bak/qBittorrent/src/gui/rss/articlelistwidget.cpp:96 in ArticleListWidget::handleArticleAboutToBeRemoved(RSS::Article*)
Shadow bytes around the buggy address:
  0x0c0880167f50: fa fa fd fd fd fd fd fd fa fa fd fd fd fd fd fd
  0x0c0880167f60: fa fa fd fd fd fd fd fd fa fa fd fd fd fd fd fd
  0x0c0880167f70: fa fa fd fd fd fd fd fd fa fa fd fd fd fd fd fd
  0x0c0880167f80: fa fa fd fd fd fd fd fd fa fa fd fd fd fd fd fd
  0x0c0880167f90: fa fa fd fd fd fd fd fd fa fa fd fd fd fd fd fd
=>0x0c0880167fa0: fa fa[fd]fd fd fd fd fa fa fa fd fd fd fd fd fd
  0x0c0880167fb0: fa fa fd fd fd fd fd fd fa fa fd fd fd fd fd fd
  0x0c0880167fc0: fa fa fd fd fd fd fd fd fa fa fd fd fd fd fd fd
  0x0c0880167fd0: fa fa fd fd fd fd fd fd fa fa fd fd fd fd fd fd
  0x0c0880167fe0: fa fa fd fd fd fd fd fd fa fa fd fd fd fd fd fd
  0x0c0880167ff0: fa fa fd fd fd fd fd fd fa fa fd fd fd fd fd fd
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07 
  Heap left redzone:       fa
  Heap right redzone:      fb
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack partial redzone:   f4
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
==23692==ABORTING
[Thread 0x7fffd5197700 (LWP 25412) exited]
[Thread 0x7fffd4972700 (LWP 25411) exited]
[Thread 0x7fffd0319700 (LWP 23712) exited]
[Thread 0x7fffd414d700 (LWP 23711) exited]
[Thread 0x7fffd61e1700 (LWP 23707) exited]
[Thread 0x7fffd69f2700 (LWP 23706) exited]
[Thread 0x7fffd7493700 (LWP 23705) exited]
[Thread 0x7fffd8910700 (LWP 23703) exited]
[Thread 0x7fffd810f700 (LWP 23704) exited]
[Thread 0x7fffd91a8700 (LWP 23702) exited]
[Thread 0x7fffd9bd6700 (LWP 23701) exited]
[Thread 0x7fffda3fb700 (LWP 23700) exited]
[Thread 0x7fffdac1f700 (LWP 23699) exited]
[Thread 0x7fffdbadf700 (LWP 23698) exited]
[Thread 0x7fffdc2f0700 (LWP 23697) exited]
[Thread 0x7fffe606f700 (LWP 23696) exited]
[Inferior 1 (process 23692) exited with code 01]
(gdb)

@glassez
Copy link
Member

glassez commented Apr 25, 2017

I've found some bugs in the code, one of them is probably related to this issue. I'll fix it ASAP and let you know.

@glassez
Copy link
Member

glassez commented Apr 25, 2017

@ERYuyNIrbNKrsc, can you test PR #6686 before I merge it?

UPD: You can do the following:

git checkout -b glassez-fix-nullptr master
git pull https://github.com/glassez/qBittorrent.git fix-nullptr

@ERYuyNIrbNKrsc
Copy link
Author

ok testing.

@ERYuyNIrbNKrsc
Copy link
Author

it seems that the problem no longer exists.

@glassez
Copy link
Member

glassez commented Apr 27, 2017

@ERYuyNIrbNKrsc, fix was merged into master. If this problem no longer exists, please close this issue.

@qbittorrent qbittorrent locked and limited conversation to collaborators Feb 27, 2021
@qbittorrent qbittorrent unlocked this conversation Feb 27, 2021
@qbittorrent qbittorrent locked and limited conversation to collaborators Feb 27, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Crash RSS RSS-related issues/changes
Projects
None yet
Development

No branches or pull requests

5 participants