Bug 525856 - Comic widget repeatedly retries failing feeds, causing sustained background downloads
Summary: Comic widget repeatedly retries failing feeds, causing sustained background d...
Status: RESOLVED FIXED
Alias: None
Product: plasmashell
Classification: Plasma
Component: Comic widget (other bugs)
Version First Reported In: master
Platform: Other Linux
: NOR major
Target Milestone: 1.0
Assignee: Plasma Bugs List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2026-09-17 13:27 UTC by nilomind
Modified: 2026-10-02 21:39 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed/Implemented In: 6.8.0,6.7.6,6.6.7
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description nilomind 2026-09-17 13:27:42 UTC
DESCRIPTION
Hi,
i am a CachyOS user since about a year. On my desktop i also enabled the comics to see the XKCD and other comics. As of now i am on holidays and on my hotspot. I was having open btop on the side and have seen a constant download of about 1-2Mbps. i set the wifi to metered and have not seen a decrease in download traffic. I asked codex for help and to diagnose the problem. The output of the LLM is at the end attached, because i do not know so many technical terms as it.
For a comic strip widget with a picture a day i assume it should only take about 100kB-4000kB per strip per day of download. 

STEPS TO REPRODUCE
0. open btop or similar to check network traffic.
1. right click on the desktop to edit it. add the comic strip widget.
2. In the widget setting go to add a new strip and search for "nichtlustig" and "dilbert". add them and enable them.
3. see observed traffic at about 1-2Mbps. 

OBSERVED RESULT
1-2Mbps download traffic

EXPECTED RESULT
max 2MB per day trafic.

SOFTWARE/OS VERSIONS
Operating System: CachyOS Linux 
KDE Plasma Version: 6.7.4
KDE Frameworks Version: 6.29.0
Qt Version: 6.11.2
Kernel Version: 7.2.3-1-cachyos (64-bit)
Graphics Platform: Wayland
Processors: 8 × Intel® Core™ i7-8550U CPU @ 1.80GHz
Memory: 16 GiB of RAM (15.3 GiB usable)
Graphics Processor: Intel® UHD Graphics 620


ADDITIONAL INFORMATION
Output from Codex:
System: CachyOS
Package: kdeplasma-addons 6.7.4-3.1
Feeds: Dilbert 1.8 and Nichtlustig 1.6

With these feeds enabled, the journal repeatedly reports:
"dilbert:2026-09-17" plugin reported an error.
"nichtlustig:2020-06-04" plugin reported an error.

Plasma-owned kioworker processes remained active, with total
Wi-Fi downloads around 250 kB/s on a metered hotspot.

After disabling both feeds while keeping the other comic feeds,
downloads dropped to 7–8 kB/s and the repeated errors stopped.

Expected: Failed feeds should retry with a bounded frequency
and increasing delay, avoiding continuous background downloads.

Both feeds were disabled together, so we have not established
whether one or both independently trigger the problem.
Comment 1 cwo 2026-09-24 12:26:23 UTC
Dilbert is just broken and doesn't work - the whole comic archive was taken down.

Nichtlustig is broken in a much worse way; it breaks our update checker and puts it in an endless loop. It shouldn't do that, but we also shouldn't respond to its misbehavior in such a way.
Comment 2 Bug Janitor Service 2026-09-24 12:32:17 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/kdeplasma-addons/-/merge_requests/1142
Comment 3 Tobias Fella 2026-09-26 13:50:15 UTC
Git commit 26ff6fb9449c879d03a21624ae4599a93d7826fc by Tobias Fella, on behalf of Christoph Wolk.
Committed on 26/09/2026 at 13:44.
Pushed by tfella into branch 'master'.

applets/comic: avoid infinite reload loop

Some comic providers might misbehave and emit more than one final
signal per request. One such case is the nichtlustig provider, which
parses not just the page, but also the downloaded image as if it was
the web page (and fails because it's a jpeg, not an html page, so is
unlikely to happen to contain the relevant link). This then breaks our
update checker, which expects each provider plugin to only emit one
signal per request, and causes it to restart the update checking
constantly redownloading the same file (and bypassing the cache, as
we're in update checking mode).

Instead, check whether the data updated signal is for the provider that
we're currently checking. If it's not, we just ignore it. This part of
the code is just for tracking updates anyway, the actual error/image
handling lives elsewhere.

M  +5    -0    applets/comic/checknewstrips.cpp

https://invent.kde.org/plasma/kdeplasma-addons/-/commit/26ff6fb9449c879d03a21624ae4599a93d7826fc
Comment 4 cwo 2026-09-28 12:32:14 UTC
Git commit c54063d7ecaf9b5d0ddec62a380a612cbf7ba129 by Christoph Wolk.
Committed on 28/09/2026 at 12:18.
Pushed by cwo into branch 'Plasma/6.8'.

applets/comic: avoid infinite reload loop

Some comic providers might misbehave and emit more than one final
signal per request. One such case is the nichtlustig provider, which
parses not just the page, but also the downloaded image as if it was
the web page (and fails because it's a jpeg, not an html page, so is
unlikely to happen to contain the relevant link). This then breaks our
update checker, which expects each provider plugin to only emit one
signal per request, and causes it to restart the update checking
constantly redownloading the same file (and bypassing the cache, as
we're in update checking mode).

Instead, check whether the data updated signal is for the provider that
we're currently checking. If it's not, we just ignore it. This part of
the code is just for tracking updates anyway, the actual error/image
handling lives elsewhere.


(cherry picked from commit 0bf0749f80d74988ecb34fc580e0110a09ed135a)

Co-authored-by: Christoph Wolk <cwo.kde@posteo.net>

M  +5    -0    applets/comic/checknewstrips.cpp

https://invent.kde.org/plasma/kdeplasma-addons/-/commit/c54063d7ecaf9b5d0ddec62a380a612cbf7ba129
Comment 5 cwo 2026-09-28 21:02:43 UTC
Git commit dee8263b5d2b248484d875705f0aee7db51bd3cc by Christoph Wolk.
Committed on 28/09/2026 at 19:27.
Pushed by cwo into branch 'Plasma/6.7'.

applets/comic: avoid infinite reload loop

Some comic providers might misbehave and emit more than one final
signal per request. One such case is the nichtlustig provider, which
parses not just the page, but also the downloaded image as if it was
the web page (and fails because it's a jpeg, not an html page, so is
unlikely to happen to contain the relevant link). This then breaks our
update checker, which expects each provider plugin to only emit one
signal per request, and causes it to restart the update checking
constantly redownloading the same file (and bypassing the cache, as
we're in update checking mode).

Instead, check whether the data updated signal is for the provider that
we're currently checking. If it's not, we just ignore it. This part of
the code is just for tracking updates anyway, the actual error/image
handling lives elsewhere.


(cherry picked from commit 0bf0749f80d74988ecb34fc580e0110a09ed135a)

Co-authored-by: Christoph Wolk <cwo.kde@posteo.net>

(cherry picked from commit c54063d7ecaf9b5d0ddec62a380a612cbf7ba129)

Co-authored-by: Christoph Wolk <cwo.kde@posteo.net>

M  +5    -0    applets/comic/checknewstrips.cpp

https://invent.kde.org/plasma/kdeplasma-addons/-/commit/dee8263b5d2b248484d875705f0aee7db51bd3cc
Comment 6 cwo 2026-09-30 07:53:25 UTC
Git commit 353bf3a15cf8849f56a1d19f779a839bc0fcddcc by Christoph Wolk.
Committed on 28/09/2026 at 21:03.
Pushed by cwo into branch 'Plasma/6.6'.

applets/comic: avoid infinite reload loop

Some comic providers might misbehave and emit more than one final
signal per request. One such case is the nichtlustig provider, which
parses not just the page, but also the downloaded image as if it was
the web page (and fails because it's a jpeg, not an html page, so is
unlikely to happen to contain the relevant link). This then breaks our
update checker, which expects each provider plugin to only emit one
signal per request, and causes it to restart the update checking
constantly redownloading the same file (and bypassing the cache, as
we're in update checking mode).

Instead, check whether the data updated signal is for the provider that
we're currently checking. If it's not, we just ignore it. This part of
the code is just for tracking updates anyway, the actual error/image
handling lives elsewhere.


(cherry picked from commit 0bf0749f80d74988ecb34fc580e0110a09ed135a)

Co-authored-by: Christoph Wolk <cwo.kde@posteo.net>

(cherry picked from commit c54063d7ecaf9b5d0ddec62a380a612cbf7ba129)

Co-authored-by: Christoph Wolk <cwo.kde@posteo.net>

(cherry picked from commit dee8263b5d2b248484d875705f0aee7db51bd3cc)

Co-authored-by: Christoph Wolk <cwo.kde@posteo.net>

M  +5    -0    applets/comic/checknewstrips.cpp

https://invent.kde.org/plasma/kdeplasma-addons/-/commit/353bf3a15cf8849f56a1d19f779a839bc0fcddcc