← Back to team overview

ubuntu-webapps-bugs team mailing list archive

[Bug 1402382] [NEW] Possible leak due to thread safety issue

 

Public bug reported:

CompositorFrameHandle isn't thread-safe and is intended to be used on
the UI thread (although it's also used on the QML render thread when the
UI thread is paused). As a consequence it doesn't use a thread-safe
reference count.

When calling Compositor::DidSwapCompositorFrame(), we check that the
returned CompositorFrameHandles don't have a reference outside of the
compositor, before handing them off to the compositor thread where they
are deleted. However, even when there are no references held outside of
the compositor, there is a race when the UI and compositor threads
release their reference that means we may leak the object.

This is fixed on trunk by http://bazaar.launchpad.net/~oxide-
developers/oxide/oxide.trunk/revision/892

** Affects: oxide
     Importance: High
     Assignee: Chris Coulson (chrisccoulson)
         Status: Fix Released

** Affects: oxide/1.3
     Importance: High
     Assignee: Chris Coulson (chrisccoulson)
         Status: Triaged

** Affects: oxide/1.4
     Importance: High
     Assignee: Chris Coulson (chrisccoulson)
         Status: Triaged

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

** Changed in: oxide
       Status: New => Fix Released

** Also affects: oxide/1.4
   Importance: Undecided
       Status: New

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

** Changed in: oxide/1.4
   Importance: Undecided => High

** Changed in: oxide
     Assignee: (unassigned) => Chris Coulson (chrisccoulson)

** Changed in: oxide
    Milestone: None => branch-1.5

** Also affects: oxide/1.3
   Importance: Undecided
       Status: New

** Changed in: oxide/1.3
   Importance: Undecided => High

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

** Changed in: oxide/1.3
     Assignee: (unassigned) => Chris Coulson (chrisccoulson)

** Changed in: oxide/1.4
     Assignee: (unassigned) => Chris Coulson (chrisccoulson)

** Changed in: oxide/1.3
    Milestone: None => 1.3.6

** Changed in: oxide/1.4
    Milestone: None => 1.4.0

-- 
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/1402382

Title:
  Possible leak due to thread safety issue

Status in Oxide Webview:
  Fix Released
Status in Oxide 1.3 series:
  Triaged
Status in Oxide 1.4 series:
  Triaged

Bug description:
  CompositorFrameHandle isn't thread-safe and is intended to be used on
  the UI thread (although it's also used on the QML render thread when
  the UI thread is paused). As a consequence it doesn't use a thread-
  safe reference count.

  When calling Compositor::DidSwapCompositorFrame(), we check that the
  returned CompositorFrameHandles don't have a reference outside of the
  compositor, before handing them off to the compositor thread where
  they are deleted. However, even when there are no references held
  outside of the compositor, there is a race when the UI and compositor
  threads release their reference that means we may leak the object.

  This is fixed on trunk by http://bazaar.launchpad.net/~oxide-
  developers/oxide/oxide.trunk/revision/892

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


Follow ups

References