martinrotter / rssguard

Feed reader (and podcast player) which supports RSS/ATOM/JSON and many web-based feed services.
GNU General Public License v3.0
1.56k stars 124 forks source link

[BUG]: Frequent Crashes when selecting feeds and entries #1487

Closed alecxvs closed 5 days ago

alecxvs commented 1 month ago

Brief description of the issue

Seemingly random crashes, but most frequently happens after opening three or more unread pages to my browser. It can also happen if I just spend some time selecting different pages, read or not. I don't think it's likely to crash in the background, it just seems to happen inevitably when I navigate feeds and their entries. I have developed a pattern of opening three feeds, crash, open RSS Guard, and repeat until I have pages open for every unread entry because this happens every time.

How to reproduce the bug?

  1. Navigate to a feed
  2. Double click unread entries to open in external browser
  3. Repeat several times or until it crashes

What was the expected result?

Application continues to run

What actually happened?

Program freezes for a second and then silently crashes. It doesn't even look like there's anything in the debug log indicating an exception or error.

Debug log

time="     0.014" type="debug" -> core: Initializing settings in 'S:\RSS Guard\data4\config\config.ini' (portable way).
time="     0.014" type="debug" -> core: Starting to load active localization. Desired localization is 'C'.
time="     0.014" type="warning" -> core: Application localization 'C' was not loaded. Loading 'en_US' instead.
time="     0.015" type="warning" -> core: Qt localization 'en_US' WAS NOT loaded successfully.
time="     0.024" type="debug" -> database: File-based SQLite database connection 'DatabaseFactory' to file 'S:\RSS Guard\data4\database\database.db' seems to be established.
time="     0.024" type="debug" -> database: File-based SQLite database has version '8'.
time="     0.026" type="debug" -> gui: Available icon theme paths: QList(:/icons, :/graphics, S:\RSS Guard\data4\icons, S:/RSS Guard\icons)
time="     0.026" type="debug" -> gui: Installed icon themes are: '', 'Breeze', 'Breeze Dark', 'Faenza', 'Numix'
time="     0.026" type="debug" -> gui: Loading icon theme 'Breeze'.
time="     0.027" type="debug" -> gui: Found path of base skin: ':\skins\nudus-base'.
time="     0.027" type="debug" -> gui: Base file ':\skins\nudus-base\html_wrapper.html' exists, using it for the skin.
time="     0.027" type="debug" -> gui: Local file ':\skins\nudus-light\lite_html_style.css' exists, using it for the skin.
time="     0.027" type="debug" -> gui: Base file ':\skins\nudus-base\lite_html_enclosure_image.html' exists, using it for the skin.
time="     0.027" type="debug" -> gui: Base file ':\skins\nudus-base\lite_html_single_message.html' exists, using it for the skin.
time="     0.027" type="debug" -> gui: Base file ':\skins\nudus-base\lite_html_enclosure_every.html' exists, using it for the skin.
time="     0.027" type="debug" -> gui: Local file ':\skins\nudus-light\qt_style.qss' exists, using it for the skin.
time="     0.028" type="debug" -> gui: Base file ':\skins\nudus-base\html_adblocked.html' exists, using it for the skin.
time="     0.028" type="debug" -> gui: OS defines color scheme: 'Qt::ColorScheme::Light'.
time="     0.028" type="debug" -> gui: Setting style: 'windowsvista'.
time="     0.028" type="debug" -> gui: Skin 'nudus-light' loaded. Lite: 'true'.
time="     0.028" type="debug" -> network: Disabling application-wide proxy completely.
time="     0.029" type="debug" -> core: SQLite version: '3.42.0'.
time="     0.033" type="debug" -> core: OpenSSL version: 'OpenSSL 3.0.12 24 Oct 2023'.
time="     0.034" type="debug" -> core: OpenSSL supported: 'true'.
time="     0.034" type="debug" -> core: Global thread pool has 16 threads.
time="     0.034" type="debug" -> core: Instantiated class  'Application'.
time="     0.036" type="debug" -> database: SQLite database connection 'MessagesModel' to file 'S:/RSS Guard/data4/database/database.db' seems to be established.
time="     0.038" type="debug" -> message-model: Repopulated model, SQL statement is now:
 'SELECT Messages.id, Messages.is_read, Messages.is_important, Messages.is_deleted, Messages.is_pdeleted, Messages.feed, Messages.title, Messages.url, Messages.author, Messages.date_created, Messages.contents, Messages.enclosures, Messages.score, Messages.account_id, Messages.custom_id, Messages.custom_hash, Feeds.title, Feeds.is_rtl, CASE WHEN LENGTH(Messages.enclosures) > 10 THEN 'true' ELSE 'false' END AS has_enclosures, (SELECT GROUP_CONCAT(Labels.name) FROM Labels WHERE Messages.labels LIKE "%." || Labels.custom_id || ".%") as msg_labels, Messages.labels FROM Messages LEFT JOIN Feeds ON Messages.feed = Feeds.custom_id AND Messages.account_id = Feeds.account_id WHERE 0 > 1;'.
time="     0.038" type="debug" -> core: Auto-download timer started with interval 10000 ms.
time="     0.038" type="debug" -> core: Creating FeedDownloader singleton.
time="     0.039" type="debug" -> core: Requesting update for all feeds on application startup.
time="     0.042" type="debug" -> gui: Creating main application form in thread: '0x4c04'.
time="     0.047" type="debug" -> gui: Current row changed - proxy 'QModelIndex(-1,-1,0x0,QObject(0x0))', source 'QModelIndex(-1,-1,0x0,QObject(0x0))'.
time="     0.047" type="debug" -> gui: Article list header geometries changed.
time="     0.052" type="debug" -> network: Settings of BaseNetworkAccessManager loaded.
time="     0.054" type="debug" -> network: Settings of BaseNetworkAccessManager loaded.
time="     0.054" type="debug" -> network: Settings of BaseNetworkAccessManager loaded.
time="     0.061" type="debug" -> gui: Article list header geometries changed.
time="     0.063" type="debug" -> gui: Article list header geometries changed.
time="     0.066" type="debug" -> gui: Article list header geometries changed.
time="     0.068" type="debug" -> gui: Article list header geometries changed.
time="     0.072" type="debug" -> gui: Creating tray icon menu.
time="     0.080" type="debug" -> CTRL is NOT pressed while sorting articles - sorting with standard mode.
time="     0.081" type="debug" -> message-model: Repopulated model, SQL statement is now:
 'SELECT Messages.id, Messages.is_read, Messages.is_important, Messages.is_deleted, Messages.is_pdeleted, Messages.feed, Messages.title, Messages.url, Messages.author, Messages.date_created, Messages.contents, Messages.enclosures, Messages.score, Messages.account_id, Messages.custom_id, Messages.custom_hash, Feeds.title, Feeds.is_rtl, CASE WHEN LENGTH(Messages.enclosures) > 10 THEN 'true' ELSE 'false' END AS has_enclosures, (SELECT GROUP_CONCAT(Labels.name) FROM Labels WHERE Messages.labels LIKE "%." || Labels.custom_id || ".%") as msg_labels, Messages.labels FROM Messages LEFT JOIN Feeds ON Messages.feed = Feeds.custom_id AND Messages.account_id = Feeds.account_id WHERE 0 > 1 ORDER BY Messages.date_created DESC;'.
time="     0.084" type="debug" -> core: Showing the main window when the application is starting.
time="     0.123" type="debug" -> gui: Article list header geometries changed.
time="     0.123" type="debug" -> gui: Article list header geometries changed.
time="     0.125" type="debug" -> gui: Article list header geometries changed.
time="     0.132" type="debug" -> gui: Article list header geometries changed.
time="     0.149" type="debug" -> database: SQLite database connection 'FeedReader' to file 'S:/RSS Guard/data4/database/database.db' seems to be established.
time="     0.149" type="debug" -> core: Checking for plugins in 'S:/RSS Guard\plugins'.
time="     0.150" type="debug" -> core: Plugin 'S:/RSS Guard/plugins/rssguard-feedly.dll' loaded.
time="     0.151" type="debug" -> core: Plugin 'S:/RSS Guard/plugins/rssguard-gmail.dll' loaded.
time="     0.152" type="debug" -> core: Plugin 'S:/RSS Guard/plugins/rssguard-greader.dll' loaded.
time="     0.153" type="debug" -> core: Plugin 'S:/RSS Guard/plugins/rssguard-nextcloud.dll' loaded.
time="     0.154" type="debug" -> core: Plugin 'S:/RSS Guard/plugins/rssguard-reddit.dll' loaded.
time="     0.155" type="debug" -> core: Plugin 'S:/RSS Guard/plugins/rssguard-standard.dll' loaded.
time="     0.157" type="debug" -> core: Plugin 'S:/RSS Guard/plugins/rssguard-ttrss.dll' loaded.
time="     0.157" type="debug" -> database: SQLite database connection 'FeedlyEntryPoint' to file 'S:/RSS Guard/data4/database/database.db' seems to be established.
time="     0.157" type="debug" -> database: SQLite database connection 'GmailEntryPoint' to file 'S:/RSS Guard/data4/database/database.db' seems to be established.
time="     0.158" type="debug" -> database: SQLite database connection 'GreaderEntryPoint' to file 'S:/RSS Guard/data4/database/database.db' seems to be established.
time="     0.158" type="debug" -> database: SQLite database connection 'NextcloudServiceEntryPoint' to file 'S:/RSS Guard/data4/database/database.db' seems to be established.
time="     0.158" type="debug" -> database: SQLite database connection 'RedditEntryPoint' to file 'S:/RSS Guard/data4/database/database.db' seems to be established.
time="     0.159" type="debug" -> database: SQLite database connection 'StandardServiceEntryPoint' to file 'S:/RSS Guard/data4/database/database.db' seems to be established.
time="     0.160" type="debug" -> core: Destructing 'std-rss' plugin.
time="     0.160" type="debug" -> database: SQLite database connection 'StandardServiceRoot' to file 'S:/RSS Guard/data4/database/database.db' seems to be established.
time="     0.161" type="debug" -> core: Custom ID of feed when loading from DB is '1'.
time="     0.161" type="debug" -> core: Custom ID of feed when loading from DB is '2'.
time="     0.162" type="debug" -> core: Custom ID of feed when loading from DB is '3'.
time="     0.162" type="debug" -> core: Custom ID of feed when loading from DB is '4'.
time="     0.162" type="debug" -> core: Custom ID of feed when loading from DB is '5'.
time="     0.163" type="debug" -> core: Custom ID of feed when loading from DB is '6'.
time="     0.163" type="debug" -> core: Custom ID of feed when loading from DB is '7'.
time="     0.163" type="debug" -> core: Custom ID of feed when loading from DB is '8'.
time="     0.163" type="debug" -> core: Custom ID of feed when loading from DB is '9'.
time="     0.164" type="debug" -> core: Custom ID of feed when loading from DB is '10'.
time="     0.164" type="debug" -> core: Custom ID of feed when loading from DB is '11'.
time="     0.165" type="debug" -> database: SQLite database connection 'RecycleBin' to file 'S:/RSS Guard/data4/database/database.db' seems to be established.
time="     0.165" type="debug" -> database: SQLite database connection 'ImportantNode' to file 'S:/RSS Guard/data4/database/database.db' seems to be established.
time="     0.165" type="debug" -> database: SQLite database connection 'UnreadNode' to file 'S:/RSS Guard/data4/database/database.db' seems to be established.
time="     0.166" type="debug" -> database: SQLite database connection 'LabelsNode' to file 'S:/RSS Guard/data4/database/database.db' seems to be established.
time="     0.166" type="debug" -> database: SQLite connection 'StandardServiceRoot' is already active.
time="     0.166" type="debug" -> database: SQLite database connection 'StandardServiceRoot' to file 'S:/RSS Guard/data4/database/database.db' seems to be established.
time="     0.167" type="debug" -> database: SQLite database connection 'TtRssServiceEntryPoint' to file 'S:/RSS Guard/data4/database/database.db' seems to be established.
time="     0.167" type="debug" -> gui: User wants to have tray icon.
time="     0.167" type="warning" -> gui: Showing tray icon with little delay.
time="     0.168" type="debug" -> gui: Feed list item expanded - RSS
time="     0.168" type="debug" -> gui: Feed list item expanded - Labels
time="     0.168" type="debug" -> gui: Feed list item expanded - Webcomics
time="     0.168" type="debug" -> core: No execution message received from other app instances.
time="     0.668" type="warning" -> gui: Tray icon is available, showing now.
time="     0.670" type="debug" -> gui: Creating SystemTrayIcon instance.
time="     0.674" type="debug" -> gui: Showing tray icon immediately.
time="     0.693" type="debug" -> gui: Tray icon displayed.
time="     3.850" type="debug" -> CTRL is NOT pressed while sorting articles - sorting with standard mode.
time="     3.850" type="debug" -> core: Displaying messages from feeds IDs: ''1'' and URLs: 'https://unsoundedupdates.tumblr.com/rss'.
time="     3.851" type="debug" -> message-model: Repopulated model, SQL statement is now:
 'SELECT Messages.id, Messages.is_read, Messages.is_important, Messages.is_deleted, Messages.is_pdeleted, Messages.feed, Messages.title, Messages.url, Messages.author, Messages.date_created, Messages.contents, Messages.enclosures, Messages.score, Messages.account_id, Messages.custom_id, Messages.custom_hash, Feeds.title, Feeds.is_rtl, CASE WHEN LENGTH(Messages.enclosures) > 10 THEN 'true' ELSE 'false' END AS has_enclosures, (SELECT GROUP_CONCAT(Labels.name) FROM Labels WHERE Messages.labels LIKE "%." || Labels.custom_id || ".%") as msg_labels, Messages.labels FROM Messages LEFT JOIN Feeds ON Messages.feed = Feeds.custom_id AND Messages.account_id = Feeds.account_id WHERE Feeds.custom_id IN ('1') AND Messages.is_deleted = 0 AND Messages.is_pdeleted = 0 AND Messages.account_id = 1 ORDER BY Messages.date_created DESC;'.
time="     3.867" type="debug" -> gui: Article list header geometries changed.
time="     5.666" type="debug" -> CTRL is NOT pressed while sorting articles - sorting with standard mode.
time="     5.666" type="debug" -> core: Displaying messages from feeds IDs: ''5'' and URLs: 'https://www.nixofnothing.com/comic/rss'.
time="     5.667" type="debug" -> message-model: Repopulated model, SQL statement is now:
 'SELECT Messages.id, Messages.is_read, Messages.is_important, Messages.is_deleted, Messages.is_pdeleted, Messages.feed, Messages.title, Messages.url, Messages.author, Messages.date_created, Messages.contents, Messages.enclosures, Messages.score, Messages.account_id, Messages.custom_id, Messages.custom_hash, Feeds.title, Feeds.is_rtl, CASE WHEN LENGTH(Messages.enclosures) > 10 THEN 'true' ELSE 'false' END AS has_enclosures, (SELECT GROUP_CONCAT(Labels.name) FROM Labels WHERE Messages.labels LIKE "%." || Labels.custom_id || ".%") as msg_labels, Messages.labels FROM Messages LEFT JOIN Feeds ON Messages.feed = Feeds.custom_id AND Messages.account_id = Feeds.account_id WHERE Feeds.custom_id IN ('5') AND Messages.is_deleted = 0 AND Messages.is_pdeleted = 0 AND Messages.account_id = 1 ORDER BY Messages.date_created DESC;'.
time="     5.681" type="debug" -> gui: Article list header geometries changed.
time="     6.306" type="debug" -> gui: Message list got focus with reason 'Qt::MouseFocusReason'.
time="     6.307" type="debug" -> gui: Current row changed - proxy 'QModelIndex(0,6,0x1a500bb3780,MessagesProxyModel(0x1a57d2bc3a0, name = MessagesProxyModel))', source 'QModelIndex(0,6,0x0,MessagesModel(0x1a57d2b1c80))'.
time="     6.308" type="debug" -> gui: HTML image resizing took 0 miliseconds.
time="     6.643" type="debug" -> network: This network request was redirected '0' times.
time="     6.643" type="warning" -> network: Network layer indicates HTTP redirection is needed.
time="     6.643" type="warning" -> network: Origin URL: 'https://nixofnothing.com/comicsthumbs/1722221360-06.jpg'.
time="     6.643" type="warning" -> network: Proposed redirection URL: 'https://www.nixofnothing.com/comicsthumbs/1722221360-06.jpg'.
time="     6.644" type="warning" -> network: Resolved redirection URL: 'https://www.nixofnothing.com/comicsthumbs/1722221360-06.jpg'.
time="     6.770" type="debug" -> gui: Current row changed - proxy 'QModelIndex(6,6,0x1a500bb3780,MessagesProxyModel(0x1a57d2bc3a0, name = MessagesProxyModel))', source 'QModelIndex(6,6,0x0,MessagesModel(0x1a57d2b1c80))'.
time="     8.457" type="debug" -> gui: Message list got focus with reason 'Qt::PopupFocusReason'.
time="     8.461" type="debug" -> database: SQLite database connection 'StandardFeed' to file 'S:/RSS Guard/data4/database/database.db' seems to be established.
time="     8.461" type="debug" -> database: SQLite connection 'UnreadNode' is already active.
time="     8.461" type="debug" -> database: SQLite database connection 'UnreadNode' to file 'S:/RSS Guard/data4/database/database.db' seems to be established.
time="     8.462" type="debug" -> feed-model: There is request to reload feed model, reloading the 2 items individually.
time="     8.762" type="debug" -> gui: Current row changed - proxy 'QModelIndex(10,6,0x1a502235c80,MessagesProxyModel(0x1a57d2bc3a0, name = MessagesProxyModel))', source 'QModelIndex(10,6,0x0,MessagesModel(0x1a57d2b1c80))'.
time="     8.763" type="debug" -> gui: HTML image resizing took 0 miliseconds.
time="     9.053" type="debug" -> network: This network request was redirected '0' times.
time="     9.054" type="warning" -> network: Network layer indicates HTTP redirection is needed.
time="     9.054" type="warning" -> network: Origin URL: 'https://nixofnothing.com/comicsthumbs/1713759588-08.jpg'.
time="     9.054" type="warning" -> network: Proposed redirection URL: 'https://www.nixofnothing.com/comicsthumbs/1713759588-08.jpg'.
time="     9.054" type="warning" -> network: Resolved redirection URL: 'https://www.nixofnothing.com/comicsthumbs/1713759588-08.jpg'.
time="     9.338" type="debug" -> gui: Current row changed - proxy 'QModelIndex(6,6,0x1a502235c80,MessagesProxyModel(0x1a57d2bc3a0, name = MessagesProxyModel))', source 'QModelIndex(6,6,0x0,MessagesModel(0x1a57d2b1c80))'.
time="     9.338" type="debug" -> gui: (Re)Starting timer to mark article as read with a delay.
time="     9.339" type="debug" -> gui: HTML image resizing took 0 miliseconds.
time="    10.339" type="debug" -> gui: Delay has passed! Marking article as read NOW.
time="    10.339" type="debug" -> database: SQLite connection 'StandardFeed' is already active.
time="    10.340" type="debug" -> database: SQLite database connection 'StandardFeed' to file 'S:/RSS Guard/data4/database/database.db' seems to be established.
time="    10.340" type="debug" -> database: SQLite connection 'UnreadNode' is already active.
time="    10.340" type="debug" -> database: SQLite database connection 'UnreadNode' to file 'S:/RSS Guard/data4/database/database.db' seems to be established.
time="    10.340" type="debug" -> feed-model: There is request to reload feed model, reloading the 2 items individually.
time="    10.674" type="debug" -> gui: Current row changed - proxy 'QModelIndex(5,6,0x1a502235c80,MessagesProxyModel(0x1a57d2bc3a0, name = MessagesProxyModel))', source 'QModelIndex(5,6,0x0,MessagesModel(0x1a57d2b1c80))'.
time="    10.674" type="debug" -> gui: (Re)Starting timer to mark article as read with a delay.
time="    10.675" type="debug" -> gui: HTML image resizing took 0 miliseconds.
time="    10.961" type="debug" -> network: This network request was redirected '0' times.
time="    10.961" type="warning" -> network: Network layer indicates HTTP redirection is needed.
time="    10.961" type="warning" -> network: Origin URL: 'https://nixofnothing.com/comicsthumbs/1721616415-01.jpg'.
time="    10.962" type="warning" -> network: Proposed redirection URL: 'https://www.nixofnothing.com/comicsthumbs/1721616415-01.jpg'.
time="    10.962" type="warning" -> network: Resolved redirection URL: 'https://www.nixofnothing.com/comicsthumbs/1721616415-01.jpg'.
time="    11.672" type="debug" -> gui: Delay has passed! Marking article as read NOW.
time="    11.673" type="debug" -> database: SQLite connection 'StandardFeed' is already active.
time="    11.673" type="debug" -> database: SQLite database connection 'StandardFeed' to file 'S:/RSS Guard/data4/database/database.db' seems to be established.
time="    11.673" type="debug" -> database: SQLite connection 'UnreadNode' is already active.
time="    11.673" type="debug" -> database: SQLite database connection 'UnreadNode' to file 'S:/RSS Guard/data4/database/database.db' seems to be established.
time="    11.673" type="debug" -> feed-model: There is request to reload feed model, reloading the 2 items individually.
time="    12.211" type="debug" -> gui: Current row changed - proxy 'QModelIndex(4,6,0x1a502235c80,MessagesProxyModel(0x1a57d2bc3a0, name = MessagesProxyModel))', source 'QModelIndex(4,6,0x0,MessagesModel(0x1a57d2b1c80))'.
time="    12.212" type="debug" -> gui: (Re)Starting timer to mark article as read with a delay.
time="    12.212" type="debug" -> gui: HTML image resizing took 0 miliseconds.
time="    12.338" type="debug" -> network: We are trying to open URL 'https://nixofnothing.com/comic/chapter-11-page-1-2'.
time="    12.505" type="debug" -> database: SQLite connection 'StandardFeed' is already active.
time="    12.505" type="debug" -> database: SQLite database connection 'StandardFeed' to file 'S:/RSS Guard/data4/database/database.db' seems to be established.
time="    12.506" type="debug" -> database: SQLite connection 'UnreadNode' is already active.time="    12.506" type="debug" -> network: This network request was redirected '0' times.
time="    12.506" type="debug" -> database: SQLite database connection 'UnreadNode' to file 'S:/RSS Guard/data4/database/database.db' seems to be established.
time="    12.506" type="warning" -> network: Network layer indicates HTTP redirection is needed.
time="    12.506" type="warning" -> network: Origin URL: 'https://nixofnothing.com/comicsthumbs/1722221217-02.jpg'.
time="    12.506" type="debug" -> feed-model: There is request to reload feed model, reloading the 2 items individually.
time="    12.506" type="warning" -> network: Proposed redirection URL: 'https://www.nixofnothing.com/comicsthumbs/1722221217-02.jpg'.
time="    12.506" type="warning" -> network: Resolved redirection URL: 'https://www.nixofnothing.com/comicsthumbs/1722221217-02.jpg'.
time="    13.210" type="debug" -> gui: Delay has passed! Marking article as read NOW.

Operating system and version

martinrotter commented 5 days ago

My testing revealed that this is caused by the same bug as #1495, which was fixed few days ago. Wait for new version to be released or test via devbuild.