← Back to team overview

ubuntu-webapps-bugs team mailing list archive

[Bug 1448079] [NEW] Don't run the event loop after QGuiApplication begins to tear down

 

Public bug reported:

When initializing Oxide, we register a callback with qAddPostRoutine to
run shutdown tasks. As part of this, we spin the event loop whilst
waiting for pending unload handlers to finish (unload handlers run after
a WebView is destroyed, so there's no way for an application to delay
quitting for this).

The QApplication destructor runs these callbacks before it does anything
else, which is great for applications that use it. However, the
QGuiApplication destructor doesn't attempt to run them at all. This
means that for applications using QGuiApplication, the shutdown callback
won't execute until the QCoreApplication destructor begins (and
QGuiApplication has been torn down).

This is bad, because we could run tasks that call in to QGuiApplication
for things that have already gone (eg, QGuiApplication::clipboard(),
which would construct a new QClipboard and then leak).

We need to find another way of doing this....

** Affects: oxide
     Importance: Medium
         Status: Triaged

** Changed in: oxide
   Importance: Undecided => Medium

** Changed in: oxide
       Status: New => Triaged

-- 
You received this bug notification because you are a member of Ubuntu
WebApps bug tracking, which is subscribed to Oxide.
https://bugs.launchpad.net/bugs/1448079

Title:
  Don't run the event loop after QGuiApplication begins to tear down

Status in Oxide Webview:
  Triaged

Bug description:
  When initializing Oxide, we register a callback with qAddPostRoutine
  to run shutdown tasks. As part of this, we spin the event loop whilst
  waiting for pending unload handlers to finish (unload handlers run
  after a WebView is destroyed, so there's no way for an application to
  delay quitting for this).

  The QApplication destructor runs these callbacks before it does
  anything else, which is great for applications that use it. However,
  the QGuiApplication destructor doesn't attempt to run them at all.
  This means that for applications using QGuiApplication, the shutdown
  callback won't execute until the QCoreApplication destructor begins
  (and QGuiApplication has been torn down).

  This is bad, because we could run tasks that call in to
  QGuiApplication for things that have already gone (eg,
  QGuiApplication::clipboard(), which would construct a new QClipboard
  and then leak).

  We need to find another way of doing this....

To manage notifications about this bug go to:
https://bugs.launchpad.net/oxide/+bug/1448079/+subscriptions


Follow ups

References