Bug 187136
Summary: | Repeatedly creating PeerConnections results in browser tab freezing in Safari on iOS | ||
---|---|---|---|
Product: | WebKit | Reporter: | Adam <adam> |
Component: | WebRTC | Assignee: | Nobody <webkit-unassigned> |
Status: | RESOLVED FIXED | ||
Severity: | Normal | CC: | webkit-bug-importer, youennf |
Priority: | P2 | Keywords: | InRadar |
Version: | Safari 11 | ||
Hardware: | iPhone / iPad | ||
OS: | iOS 11 | ||
URL: | https://output.jsbin.com/haseker |
Adam
Steps to reproduce:
1. Repeatedly create PeerConnections in Safari on iOS streaming video and audio, over and over again.
Result: Eventually the browser tab freezes. You see your local video freeze and the remote video freezes. Hitting refresh on the tab seems to hang. You need to close the tab and open a new one.
Or: Sometimes you just get black video after a while. The receiving end just displays black.
I put together a jsbin that reproduces it pretty easily https://output.jsbin.com/haseker
This jsbin establishes an OpenTok Session and subscribes to yourself repeatedly every 1 second. Under the covers this creates 2 PeerConnections, one to send video up to the OpenTok SFU and then one to bring it back down again and display it. It repeatedly creates this second PeerConnection. The timing varies, after about 2-10 minutes of this the browser freezes, or you get the black screen issue. I could not reproduce this issue on Safari on the Mac.
This came up because we had customers complaining that after long running sessions with multiple participants that they were getting a freeze. Also our integration tests which run lots of different tests that create PeerConnections exhibit a similar issue where they hang eventually in Safari on iOS and we can't get through all of them.
Attachments | ||
---|---|---|
Add attachment proposed patch, testcase, etc. |
Radar WebKit Bug Importer
<rdar://problem/46104998>
Adam
I updated the token in the sample so that it is working again and I tested it on the latest iOS 12.1. It seems to be fixed. I couldn't reproduce the crashing or the black screen issue.