https://bugs.kde.org/show_bug.cgi?id=524111

            Bug ID: 524111
           Summary: Akregator crashes with SIGTRAP when a feed item
                    contains a cross-origin iframe
    Classification: Applications
           Product: akregator
      Version First 6.7.3
       Reported In:
          Platform: Gentoo Packages
                OS: Linux
            Status: REPORTED
          Severity: normal
          Priority: NOR
         Component: internal browser
          Assignee: [email protected]
          Reporter: [email protected]
  Target Milestone: ---

DESCRIPTION

Akregator crashes with SIGTRAP. The trap is a fatal Chromium CHECK
(base::ImmediateCrash, int3/ud2) in the QtWebEngine browser process, raised
when the article viewer renders a feed item whose description contains a
cross-origin <iframe>.

Trigger in the wild: since around 2026-08-06, Slashdot's RSS feed
(https://rss.slashdot.org/Slashdot/slashdotMain) embeds a discussion widget in
every item description:

  <iframe
src="https://slashdot.org/slashdot-it.pl?op=discuss&id=...&smallembed=1";
          style="height: 300px; width: 100%; border: none;"></iframe>

Any subscription to that feed makes Akregator crash on every start as soon as
the article viewer renders such an item, which effectively bricks the
application (crash loop on startup once the feed content is displayed).

STEPS TO REPRODUCE

1. Start Akregator with a fresh profile containing a single feed, e.g. with
this as data/akregator/data/feeds.opml:

   <?xml version="1.0" encoding="UTF-8"?>
   <opml version="1.0"><head><text/></head><body>
   <outline title="Slashdot"
xmlUrl="https://rss.slashdot.org/Slashdot/slashdotMain"/>
   </body></opml>

2. Let it fetch and render the feed. No interaction needed.

OBSERVED RESULT

The main process dies with SIGTRAP within ~10-15 seconds. With
QTWEBENGINE_CHROMIUM_FLAGS="--enable-logging=stderr --v=1" the last logged
network request before the trap is always the embedded iframe URL
(https://slashdot.org/slashdot-it.pl?op=discuss&id=...&smallembed=1),
immediately followed by a new renderer process being created for the
out-of-process iframe, after which the browser process traps. Shortly
before/after the trap this is logged:

  ERROR:content/common/zygote/zygote_communication_linux.cc:299
    Failed to send GetTerminationStatus message to zygote
  WARNING:content/common/zygote/zygote_communication_linux.cc:311
    Socket closed prematurely.
  KCrash: Application 'akregator' crashing... crashRecursionCounter = 2

Crash is 100% reproducible with the sandbox disabled
(QTWEBENGINE_DISABLE_SANDBOX=1) and with --disable-gpu, so it is neither
sandbox- nor GPU-related.

EXPECTED RESULT

The article renders (with or without the iframe content); a subframe must not
be able to bring down the whole application.

SOFTWARE/OS VERSIONS

Operating System: Gentoo Linux 2.18
KDE Plasma Version: 6.6.6
KDE Frameworks Version: 6.27.0
Qt Version: 6.11.1
Kernel Version: 7.1.5-gentoo (64-bit)
Graphics Platform: Wayland
Processors: 24 × 13th Gen Intel® Core™ i7-13700K
Memory: 64 Gibyte of RAM (62.1 Gibyte usable)
Graphics Processor: Mesa Intel® Graphics

ADDITIONAL INFORMATION

- The same iframe embedded in a normal web page loads fine in Konqueror
(QtWebEngine, same machine, same libraries). The crash only happens in
Akregator's article viewer, i.e. when the article HTML is provided by the
application itself with a remote base URL and the page then needs an
out-of-process iframe for the cross-origin frame. So this is possibly a
QtWebEngine site-isolation/process-model issue surfaced by how
Akregator/messagelib feeds HTML to the view, and may need to be forwarded
upstream to Qt.
- Interestingly, when the same feed XML is loaded from a file:// URL instead of
http(s), the iframe is never requested and no crash occurs — the crash requires
the article to originate from a remote URL.
- Workaround: subscribe to the atom variant of the feed
(https://rss.slashdot.org/Slashdot/slashdotMainatom), which contains no
iframes.
- A core dump is available and I can provide further gdb output on request (the
distribution build has no debug symbols, so the backtrace is currently
unsymbolized).
- I used Claude with Fable/Opus 5 to help with debugging, tracing, analysis and
drafting the bug report.

BACKTRACE

Thread 1 "akregator" received signal SIGTRAP, Trace/breakpoint trap.
#0  base::ImmediateCrash () at base/immediate_crash.h:180
#1  logging::CheckFailure () at base/check.h:259
#2  content::NavigationRequest::GetOriginForURLLoaderFactoryAfterResponse ()
        at content/browser/renderer_host/navigation_request.cc:8890
#3  content::NavigationRequest::GetOriginToCommit ()           
navigation_request.cc:8749
#4  content::NavigationRequest::ComputeCrossOriginIsolationKey ()
navigation_request.cc:10822
#5  content::NavigationRequest::GetUrlInfo ()                   
navigation_request.cc:4184
#6  content::NavigationRequest::SelectFrameHostForOnResponseStarted ()
navigation_request.cc:4792
#7  content::NavigationRequest::OnResponseStarted ()           
navigation_request.cc:4702
#8  content::NavigationURLLoaderImpl::NotifyResponseStarted () 
navigation_url_loader_impl.cc:2348
#9-13  base::…::Invoker / OnceCallback  (bound-callback dispatch)
#14 content::NavigationURLLoaderImpl::ParseHeaders ()          
navigation_url_loader_impl.cc:1961
#15 content::NavigationURLLoaderImpl::CallOnReceivedResponse ()
navigation_url_loader_impl.cc:1516
#16 content::NavigationURLLoaderImpl::OnReceiveResponse ()     
navigation_url_loader_impl.cc:1459
#17 blink::ThrottlingURLLoader::OnReceiveResponse ()           
throttling_url_loader.cc:714
#18 network::mojom::URLLoaderClientStubDispatch::Accept ()     
url_loader.mojom.cc:1161
#19-32 mojo::…  (InterfaceEndpointClient → MultiplexRouter → Connector →
SimpleWatcher)
#33-37 base::TaskAnnotator / ThreadControllerWithMessagePumpImpl::DoWork ()
#38 QtWebEngineCore::MessagePumpForUIQt::handleScheduledWork () 
browser_main_parts_qt.cpp:156
#43 QObject::event(QEvent*)                        libQt6Core.so.6
#53 QCoreApplication::exec()                       libQt6Core.so.6
#54 main


(My first bug report here so new to how KDE handles bug reporting/data
collecting)
/ Kim

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to