[Webkit-unassigned] [Bug 223489] New: Async Clipboard read prevents WebRTC IOSurfaces from being released

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Thu Mar 18 17:35:05 PDT 2021


https://bugs.webkit.org/show_bug.cgi?id=223489

            Bug ID: 223489
           Summary: Async Clipboard read prevents WebRTC IOSurfaces from
                    being released
           Product: WebKit
           Version: Safari 14
          Hardware: iPhone / iPad
                OS: iOS 14
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: WebRTC
          Assignee: webkit-unassigned at lists.webkit.org
          Reporter: jameshoward at mac.com
                CC: youennf at gmail.com

Created attachment 423674

  --> https://bugs.webkit.org/attachment.cgi?id=423674&action=review

Minimal repro. Also hosted at https://james-howard.github.io/rtcpaste/

Overview:
Async Clipboard read blocks WebRTC decoded video IOSurfaces from being released.

Steps to reproduce:
- Have a page with a video element that is streaming video from a remote RTCPeerConnection
- Use the async clipboard readText API, triggering the "Paste" callout.
- See https://james-howard.github.io/rtcpaste/ for a minimal repro (also attached here)

Results:
- On a Mac, the WebContent process will grow 420v IOSurfaces from the decoder (as reported by vmmap).

while true; do vmmap --summary 24137 | grep IOSurface; sleep 5; done
IOSurface                         39.4M    1688K    1688K       0K       0K    1688K    18.3M       15 
IOSurface                         39.4M    1688K    1688K       0K       0K    1688K    18.3M       15 
IOSurface                         70.0M    10.0M    10.0M       0K       0K    10.0M    22.3M       36 # Paste clicked here
IOSurface                        147.2M    86.8M    86.8M       0K       0K    86.8M    40.5M      211 
IOSurface                        201.8M   164.1M   164.1M       0K       0K   164.1M    18.3M      383 
IOSurface                        279.0M   241.3M   241.3M       0K       0K   241.3M    18.3M      558 
IOSurface                        356.3M   318.6M   318.6M       0K       0K   318.6M    18.3M      733 
IOSurface                         40.2M    2592K    2592K       0K       0K    2592K    18.3M       17 # Callout/context menu dismissed here


- On an iOS device, the WebContent process will grow IOSurfaces and then jetsam after a short time.
- JavaScript execution is paused until the "Paste" callout is tapped or dismissed (no timers or other events can fire).
- Video does not freeze; it does continue to play

Expected Results:
- Process does not jetsam
- JavaScript execution is not blocked on the "Paste" callout (timers and other events can still fire).

System Info:
Repros on all of the following tested configurations:
- Mac (11.2 20D5042d)
  - Safari: Version 14.0.3 (16610.4.3)
  - Safari Technology Preview: Release 122 (Safari 14.2, WebKit 16612.1.6.2)
- iPad OS 14.4 (18D52)

Additional Info:
- If a single page is both the sender and receiver of the video (e.g. https://webrtc.github.io/samples/src/content/peerconnection/pc1/), memory will not grow while the paste callout is up, but what will happen is the video will freeze (sending is blocked?).
- Does not repro if the video element has a URL as its src (i.e. not playing a video from a WebRTC stream), video continues to play and memory does not grow.

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20210319/df9fb8de/attachment-0001.htm>


More information about the webkit-unassigned mailing list