Closed
Bug 1338521
Opened 4 years ago
Closed 4 years ago
Video fails to appear (or freezes?) after refreshing page during a Jitsi call
Categories
(Core :: WebRTC: Audio/Video, defect, P1)
Core
WebRTC: Audio/Video
Tracking
()
RESOLVED
FIXED
mozilla55
| Tracking | Status | |
|---|---|---|
| firefox51 | --- | unaffected |
| firefox52 | --- | unaffected |
| firefox-esr52 | --- | unaffected |
| firefox53 | --- | wontfix |
| firefox54 | + | fixed |
| firefox55 | + | fixed |
People
(Reporter: JuliaC, Assigned: jesup)
References
()
Details
(Keywords: regression)
Attachments
(1 file, 1 obsolete file)
|
59 bytes,
text/x-review-board-request
|
jesup
:
review+
gchang
:
approval-mozilla-beta+
|
Details |
[Affected versions]: - latest Nightly 54.0a1 (2017-02-09) [Affected platforms]: - Windows 7 x64 - Mac OS X 10.11.6 - Mac OS X 10.12.1 Beta [Steps to reproduce]: 1. Launch Firefox 2. Go to https://meet.jit.si/, create a room, provide the camera and microphone permissions and join it 3. Join the same room from another station 4. Unplug the headset/camera 5. Connect back the headset/camera 6. Refresh/restart the page from the host side in order to reestablish the call - Inspect the host side video stream 7. Refresh the page from the guest side - Inspect the guest side video stream [Expected result]: - The call is successfully reestablished in both host and guest sides - No audio/video issues are encountered [Actual result]: - [step 6] No video is streamed for the host side - [step 7] No video is streamed for the guest side [Regression range]: - I will investigate this as soon as possible
Comment 1•4 years ago
|
||
This should definitely work after a page reload. We also need to narrow this down, but my guess is either capture code or MSG. Iulia, after this happens - can you see the local video on either side or is that broken too?
Rank: 13
status-firefox51:
--- → ?
status-firefox52:
--- → ?
status-firefox53:
--- → ?
Flags: needinfo?(iulia.cristescu)
Priority: -- → P1
| Assignee | ||
Comment 2•4 years ago
|
||
Also, can you make a run using non-e10s, and with MOZ_LOG=cubeb:5,MediaStreamGraph:4,GetUserMedia:5,MediaManager:5 and upload the logs? thanks
Comment 3•4 years ago
|
||
We think this might have been fixed by some other work. Can we please try re-testing this? If it does still reproduce, the logging from comment 2 would still be helpful to get :)
Flags: needinfo?(andrei.vaida)
| Reporter | ||
Comment 4•4 years ago
|
||
Sorry for the delay. I didn't manage to get the necessary time for properly investigating this till today. I tested the issue on 54.0a2 (2017-03-15) through a call between Windows 7 x64 and macOS 10.12.3, with e10s off and with MOZ_LOG=cubeb:5,MediaStreamGraph:4,GetUserMedia:5,MediaManager:5. Here are the logs https://drive.google.com/file/d/0B0nYKG6PRiCcWlRQb29wd1Rpekk/view?usp=sharing. The issue is still reproducible, but steps 4 and 5 from comment 0 are not useful anymore. The same behavior is met on 55.0a1 (2017-03-15), e10s on/off. Please let me know if further investigation is needed.
status-firefox55:
--- → affected
Flags: needinfo?(iulia.cristescu)
Flags: needinfo?(andrei.vaida)
Version: 54 Branch → Trunk
Updated•4 years ago
|
Assignee: nobody → rjesup
Comment 5•4 years ago
|
||
Looks like the cubeb side of things have been fixed, per comment 4 ("steps 4 and 5 from comment 0 are not useful anymore"). Let me know if I can be of any help here.
Comment 6•4 years ago
|
||
jesup, can you take a look at the logs from comment 4, or find somebody else who can? Thanks!
Flags: needinfo?(rjesup)
Comment 7•4 years ago
|
||
Nothing sticks out in the logs, though I could be missing something. They're 48MB! ★ ~/Downloads/Logs 2 $ grep llocated * Window7 log.txt:[Unnamed thread 0000000025B53C00]: D/MediaManager Audio device 1 allocated Window7 log.txt:[Unnamed thread 0000000025B53C00]: D/MediaManager Video device 0 allocated Window7 log.txt:[Unnamed thread 0000000025B53C00]: D/MediaManager Audio device 1 deallocated Window7 log.txt:[Unnamed thread 0000000025B53C00]: D/MediaManager Video device 0 deallocated Window7 log.txt:[Unnamed thread 0000000025B53C00]: D/MediaManager Audio device 1 allocated Window7 log.txt:[Unnamed thread 0000000025B53C00]: D/MediaManager Video device 1 allocated Window7 log.txt:[Unnamed thread 0000000025B53C00]: D/MediaManager Audio device 1 deallocated Window7 log.txt:[Unnamed thread 0000000025B53C00]: D/MediaManager Video device 1 deallocated Window7 log.txt:[Unnamed thread 0000000025B53C00]: D/MediaManager Audio device 1 allocated Window7 log.txt:[Unnamed thread 0000000025B53C00]: D/MediaManager Video device 2 allocated Window7 log.txt:[Unnamed thread 0000000025B53C00]: D/MediaManager Audio device 1 deallocated Window7 log.txt:[Unnamed thread 0000000025B53C00]: D/MediaManager Video device 2 deallocated Window7 log.txt:[Unnamed thread 0000000025B53C00]: D/MediaManager Audio device -1 allocated Window7 log.txt:[Unnamed thread 0000000025B53C00]: D/MediaManager Video device 3 allocated Window7 log.txt:[Unnamed thread 0000000025B53C00]: D/MediaManager Audio device -1 deallocated Window7 log.txt:[Unnamed thread 0000000025B53C00]: D/MediaManager Video device 3 deallocated macOS log.txt:[Unnamed thread 0x13595f680]: D/MediaManager Audio device -1 allocated macOS log.txt:[Unnamed thread 0x13595f680]: D/MediaManager Video device 0 allocated macOS log.txt:[Unnamed thread 0x13595f680]: D/MediaManager Audio device -1 deallocated macOS log.txt:[Unnamed thread 0x13595f680]: D/MediaManager Video device 0 deallocated macOS log.txt:[Unnamed thread 0x13595f680]: D/MediaManager Audio device -1 allocated macOS log.txt:[Unnamed thread 0x13595f680]: D/MediaManager Video device 1 allocated macOS log.txt:[Unnamed thread 0x13595f680]: D/MediaManager Audio device -1 deallocated macOS log.txt:[Unnamed thread 0x13595f680]: D/MediaManager Video device 1 deallocated ★ ~/Downloads/Logs 2 $ Not sure why -1 is an ok audio device, but otherwise, it does look like we're switching to a new video device, here (two cameras, or pull/replug?). Padenot, do you see anything?
Flags: needinfo?(rjesup) → needinfo?(padenot)
Comment 8•4 years ago
|
||
I'm able to reproduce it in a call between 54 on my mac and 54 on my win10 box, and also in a call between two tabs in 54 on the same mac. I used different cameras on each end (I have two on the mac) to avoid confusing myself about what I'm looking at. I see remote video freezing on one end at a time, while local camera appears to be working ok (the jitsi self-view is deceiving: On the end suspected of sending frozen video, it appears black until I click on "Fellow Jitster" next to it, and then suddenly local video appears in the self-view without problem. That looks like a site bug. It seems intermittent. I was able to freeze either end, just refreshing the page, even with an initial call (not restarting browser). I was not able to freeze both ends at the same time, though I may have given up too soon. So this would point to a peer connection problem rather than a gum problem (or possibly even a jitsi JS problem). Drno, any tips on what logs would be helpful?
Updated•4 years ago
|
Flags: needinfo?(padenot) → needinfo?(drno)
Comment 9•4 years ago
|
||
I'm not entirely convinced what a/the PeerConnection issue here would be. I assume you actually see ICE connecting on about:webrtc. As we don't have any easily accessible stats about RTCP complaining about the received video I would start with the new RTP logger (https://blog.mozilla.org/webrtc/debugging-encrypted-rtp-is-more-fun-than-it-used-to-be/) and check in Wireshark if the Firefox which renders only black sends out NACK's and/or PLI's.
Flags: needinfo?(drno)
Comment 10•4 years ago
|
||
(In reply to Iulia Cristescu, QA [:IuliaC] from comment #0) > [Actual result]: > - [step 6] No video is streamed for the host side > - [step 7] No video is streamed for the guest side Hi Iulia, when this happens does remote video appear frozen or does remote video not appear at all? Also, do both self-views still work when this happens? And lastly, any luck with the regression range?
Flags: needinfo?(iulia.cristescu)
See Also: → 1353947
Summary: Video content is blocked after unplugging/plugging headset/camera during a Jitsi call → Video fails to appear (or freezes?) after refreshing page during a Jitsi call
Comment 11•4 years ago
|
||
The link to the other bug is just fyi. I think jitsi actually avoids it by asking for camera and mic separately.
| Reporter | ||
Comment 12•4 years ago
|
||
(In reply to Jan-Ivar Bruaroey [:jib] from comment #10) > (In reply to Iulia Cristescu, QA [:IuliaC] from comment #0) > > [Actual result]: > > - [step 6] No video is streamed for the host side > > - [step 7] No video is streamed for the guest side > > Hi Iulia, when this happens does remote video appear frozen or does remote > video not appear at all? > Also, do both self-views still work when this happens? > > And lastly, any luck with the regression range? Hello, Jan! Tested again using 54.0a2 (2017-04-07). When the issue occurs, the remote video does not appear at all and the self-views still work. Sorry, but I didn't have the necessary time for tracking the regression range yet.
Flags: needinfo?(iulia.cristescu)
| Assignee | ||
Updated•4 years ago
|
Flags: needinfo?(rjesup)
Comment 13•4 years ago
|
||
Julia, are you available to check the regression range? Randell, are you able to reproduce this issue?
Flags: needinfo?(iulia.cristescu)
| Reporter | ||
Comment 14•4 years ago
|
||
(In reply to Peter Chang[:pchang] from comment #13) > Julia, are you available to check the regression range? > > Randell, are you able to reproduce this issue? Hello, Peter! This is what I managed to find out related to this matter: - it seems that Jitsi is not supported until 44.0a2 (2015-10-29) (the room is created, but the device permissions doorhanger is not displayed and the call is not initiated) - starting with 44.0a2 (2015-10-29), Jitsi is supported and the issue is already reproducible Tested this in calls between Windows 10 x64 and Mac OS X 10.11.6.
Flags: needinfo?(iulia.cristescu)
| Comment hidden (mozreview-request) |
Comment 16•4 years ago
|
||
Randell, I think the patch I put up clearly fixes a problem where we overwrite the remote SSRC with a random SSRC. But I'm not sure if that is all. Here are parts of a log from a bad call (the log is huge): 2017-04-28 19:41:12.270390 UTC - [Main Thread]: E/signaling [main|WebrtcVideoSessionConduit] VideoConduit.cpp:711: 0x7f42e27de000 SetRemoteSSRC: 0x96189d8b 2017-04-28 19:41:12.270393 UTC - [Main Thread]: D/signaling [main|WebrtcVideoSessionConduit] VideoConduit.cpp:1989: StopReceiving Engine Already Receiving . Attemping to Stop 2017-04-28 19:41:12.270476 UTC - [Unnamed thread 0x7f42cf116860]: V/mediapipeline MediaPipeline::NotifyRealtimeTrackData() listener=0x7f42b14e9a80, offset=0, duration=128 2017-04-28 19:41:12.270480 UTC - [Unnamed thread 0x7f42cf116860]: V/mediapipeline MediaPipeline::NotifyRealtimeTrackData() listener=0x7f42b8e49080, offset=0, duration=128 2017-04-28 19:41:12.270497 UTC - [Unnamed thread 0x7f42cf116860]: V/mediapipeline Discarding packets because transport not ready 2017-04-28 19:41:12.270525 UTC - [Unnamed thread 0x7f42cf116860]: V/mediapipeline MediaPipeline::NotifyQueuedChanges() 2017-04-28 19:41:12.270532 UTC - [Unnamed thread 0x7f42cf116860]: V/mediapipeline MediaPipeline::NotifyQueuedChanges() 2017-04-28 19:41:12.270533 UTC - [Unnamed thread 0x7f42cf116860]: V/mediapipeline Discarding packets because transport not ready 2017-04-28 19:41:12.270553 UTC - [AudioProxy #1]: D/signaling [AudioProxy #1|WebrtcAudioSessionConduit] AudioConduit.cpp:607: SendAudioFrame 2017-04-28 19:41:12.270568 UTC - [Main Thread]: E/signaling [main|WebrtcVideoSessionConduit] VideoConduit.cpp:412: 0x7f42e27de000 DeleteRecvStream: Deleting stream 0x7f43141d8da0 2017-04-28 19:41:12.271510 UTC - [Main Thread]: E/signaling [main|WebrtcVideoSessionConduit] VideoConduit.cpp:457: 0x7f42e27de000 CreateRecvStream: Created stream 0x7f42b8f67e00 2017-04-28 19:41:12.271529 UTC - [Main Thread]: D/signaling [main|WebrtcVideoSessionConduit] VideoConduit.cpp:2004: StartReceiving Attemping to start... 2017-04-28 19:41:12.271576 UTC - [Main Thread]: D/signaling [main|WebrtcVideoSessionConduit] VideoConduit.cpp:1119: ConfigureRecvMediaCodecs 2017-04-28 19:41:12.271606 UTC - [Main Thread]: D/signaling [main|PeerConnectionImpl] PeerConnectionImpl.cpp:1231: InitializeDataChannel ... 2017-04-28 19:42:54.994292 UTC - [Socket Thread]: V/mtransport Flow[77a24699a449b988:0,rtp(none)]; Layer[ice]: PacketReceived(0-1493408470876874 (id=2147483655 url=https://meet.jit.si/nilstest) aLevel=0,1,1107) 2017-04-28 19:42:54.994297 UTC - [Socket Thread]: V/mtransport Flow[77a24699a449b988:0,rtp(none)]; Layer[dtls]: PacketReceived(1107) 2017-04-28 19:42:54.994322 UTC - [Socket Thread]: V/mediapipeline Successfully unprotected an SRTP packet of len 1097 2017-04-28 19:42:54.994324 UTC - [Socket Thread]: V/mediapipeline 77a24699a449b988| Receive video[5a185332-fa99-4e49-a109-c7fc472fb434] received RTP packet. 2017-04-28 19:42:54.994658 UTC - [Unnamed thread 0x7f42cf116860]: V/mediapipeline MediaPipeline::NotifyRealtimeTrackData() listener=0x7f42b14e9a80, offset=0, duration=128 2017-04-28 19:42:54.994669 UTC - [Unnamed thread 0x7f42cf116860]: V/mediapipeline MediaPipeline::NotifyQueuedChanges() 2017-04-28 19:42:54.997637 UTC - [Unnamed thread 0x7f42cf116860]: V/mediapipeline MediaPipeline::NotifyRealtimeTrackData() listener=0x7f42b14e9a80, offset=0, duration=128 2017-04-28 19:42:54.997649 UTC - [Unnamed thread 0x7f42cf116860]: V/mediapipeline MediaPipeline::NotifyQueuedChanges() 2017-04-28 19:42:54.997666 UTC - [AudioProxy #1]: D/signaling [AudioProxy #1|WebrtcAudioSessionConduit] AudioConduit.cpp:607: SendAudioFrame 2017-04-28 19:42:54.999217 UTC - [Main Thread]: E/signaling [main|WebrtcVideoSessionConduit] VideoConduit.cpp:711: 0x7f42e27de000 SetRemoteSSRC: 0x24a7fa63 2017-04-28 19:42:54.999221 UTC - [Main Thread]: D/signaling [main|WebrtcVideoSessionConduit] VideoConduit.cpp:1989: StopReceiving Engine Already Receiving . Attemping to Stop 2017-04-28 19:42:54.999338 UTC - [Main Thread]: E/signaling [main|WebrtcVideoSessionConduit] VideoConduit.cpp:412: 0x7f42e27de000 DeleteRecvStream: Deleting stream 0x7f42b8f67e00 2017-04-28 19:42:55.000542 UTC - [Main Thread]: E/signaling [main|WebrtcVideoSessionConduit] VideoConduit.cpp:457: 0x7f42e27de000 CreateRecvStream: Created stream 0x7f42b8f67e00 2017-04-28 19:42:55.000544 UTC - [Main Thread]: D/signaling [main|WebrtcVideoSessionConduit] VideoConduit.cpp:2004: StartReceiving Attemping to start... 2017-04-28 19:42:55.000603 UTC - [Socket Thread]: D/signaling [Socket Thread|WebrtcVideoSessionConduit] VideoConduit.cpp:1887: operator(): seq# 52463, Len 160 2017-04-28 19:42:55.000653 UTC - [Socket Thread]: D/signaling [Socket Thread|WebrtcVideoSessionConduit] VideoConduit.cpp:1887: operator(): seq# 52464, Len 160 2017-04-28 19:42:55.000666 UTC - [Socket Thread]: D/signaling [Socket Thread|WebrtcVideoSessionConduit] VideoConduit.cpp:1887: operator(): seq# 52465, Len 160 ... 2017-04-28 19:45:51.970435 UTC - [Main Thread]: V/signaling [main|WebrtcVideoSessionConduit] VideoConduit.cpp:313: ConfigureCodecMode 2017-04-28 19:45:51.970452 UTC - [Main Thread]: D/signaling [main|WebrtcVideoSessionConduit] VideoConduit.cpp:493: ConfigureSendMediaCodec for VP8 2017-04-28 19:45:51.970455 UTC - [Main Thread]: D/signaling [main|WebrtcVideoSessionConduit] VideoConduit.cpp:505: ConfigureSendMediaCodec for VideoConduit:0x7f42e147b000 stream count:1 2017-04-28 19:45:51.972720 UTC - [Unnamed thread 0x7f42cf116860]: V/mediapipeline MediaPipeline::NotifyRealtimeTrackData() listener=0x7f42b14e9a80, offset=0, duration=128 2017-04-28 19:45:51.972732 UTC - [Unnamed thread 0x7f42cf116860]: V/mediapipeline MediaPipeline::NotifyQueuedChanges() 2017-04-28 19:45:51.972752 UTC - [AudioProxy #1]: D/signaling [AudioProxy #1|WebrtcAudioSessionConduit] AudioConduit.cpp:607: SendAudioFrame 2017-04-28 19:45:51.975454 UTC - [Unnamed thread 0x7f42cf116860]: V/mediapipeline MediaPipeline::NotifyRealtimeTrackData() listener=0x7f42b14e9a80, offset=0, duration=128 2017-04-28 19:45:51.975467 UTC - [Unnamed thread 0x7f42cf116860]: D/signaling [|WebrtcAudioSessionConduit] AudioConduit.cpp:672: GetAudioFrame 2017-04-28 19:45:51.975642 UTC - [Unnamed thread 0x7f42cf116860]: D/signaling [|WebrtcAudioSessionConduit] AudioConduit.cpp:772: GetAudioFrame GetAudioFrame:Got samples: length 640 2017-04-28 19:45:51.975650 UTC - [Unnamed thread 0x7f42cf116860]: V/mediapipeline Audio conduit returned buffer of length 640 2017-04-28 19:45:51.975724 UTC - [Unnamed thread 0x7f42cf116860]: V/mediapipeline MediaPipeline::NotifyQueuedChanges() 2017-04-28 19:45:51.977051 UTC - [Unnamed thread 0x7f42e1ccf160]: D/signaling [|WebrtcVideoSessionConduit] VideoConduit.cpp:2044: SendRtcp : len 24 2017-04-28 19:45:51.977078 UTC - [Unnamed thread 0x7f42e1ccf160]: D/signaling [|WebrtcVideoSessionConduit] VideoConduit.cpp:2053: SendRtcp Sent RTCP Packet 2017-04-28 19:45:51.977129 UTC - [Socket Thread]: V/mediapipeline Successfully protected an SRTCP packet of len 38 2017-04-28 19:45:51.977134 UTC - [Socket Thread]: V/mediapipeline 77a24699a449b988| Receive video[mixedlabelvideo0] sending RTCP packet 2017-04-28 19:45:51.977150 UTC - [Socket Thread]: V/mtransport Flow[77a24699a449b988:0,rtp(none)]; Layer[ice]: SendPacket(38) succeeded 2017-04-28 19:45:51.978540 UTC - [Unnamed thread 0x7f42cf116860]: V/mediapipeline MediaPipeline::NotifyRealtimeTrackData() listener=0x7f42b14e9a80, offset=0, duration=128 2017-04-28 19:45:51.978555 UTC - [Unnamed thread 0x7f42cf116860]: V/mediapipeline MediaPipeline::NotifyQueuedChanges() 2017-04-28 19:45:51.979620 UTC - [Main Thread]: E/signaling [main|WebrtcVideoSessionConduit] VideoConduit.cpp:711: 0x7f42e27de000 SetRemoteSSRC: 0x96189d8b 2017-04-28 19:45:51.979626 UTC - [Main Thread]: D/signaling [main|WebrtcVideoSessionConduit] VideoConduit.cpp:1989: StopReceiving Engine Already Receiving . Attemping to Stop 2017-04-28 19:45:51.980171 UTC - [Main Thread]: E/signaling [main|WebrtcVideoSessionConduit] VideoConduit.cpp:412: 0x7f42e27de000 DeleteRecvStream: Deleting stream 0x7f42b8f67e00 And then it hits the assertion. 0x96189d8b is the valid SSRC from the signaling. 0x24a7fa63 is the SSRC for another conduit. I don't quite get how the incoming RTP packet which gets assigned to the correct media pipeline, then can suddenly call setRemoteSSRC() on the wrong conduit.
Updated•4 years ago
|
Attachment #8863073 -
Flags: review?(rjesup)
| Assignee | ||
Comment 17•4 years ago
|
||
| mozreview-review | ||
Comment on attachment 8863073 [details] Bug 1338521: don't over-write remote SSRC with random value https://reviewboard.mozilla.org/r/134908/#review138146 r+, though I'm not sure it solves the assertion we hit occasionally - that may be a different bug that was exposed by reconfiguring on every call start
Attachment #8863073 -
Flags: review?(rjesup) → review+
| Comment hidden (mozreview-request) |
Updated•4 years ago
|
Attachment #8863472 -
Flags: review?(rjesup)
Updated•4 years ago
|
Attachment #8863472 -
Attachment is obsolete: true
| Assignee | ||
Comment 19•4 years ago
|
||
| mozreview-review | ||
Comment on attachment 8863472 [details] Bug 1338521: delete send/recv video stream when destroying. https://reviewboard.mozilla.org/r/135260/#review138218 Per IRC, this double-frees
Attachment #8863472 -
Flags: review-
Comment 20•4 years ago
|
||
So I found issue which could cause all kind of issue, although I doubt it causes the assertion in the DestroyVideoReceiveStream() to kick in. Jitsi negotiates several video m-sections depending on how many participants are in a call and if parties recently joined or dropped from a call. All these video m-sections use the same PT number (usually 100 for VP8). Now sometimes Jitsi sends RTP packets with an unnounced SSRC, for example an RTP packet from a previously active m-section comes in after said m-section has been de-activated. Now with our current code this causes a problem, because the incoming RTP packet will be "offered" to all active media pipeline. None of them has a matching SSRC for the packet, but all video pipeline fall back to match by payload type and accept the packet. With the latest addition of restarting the video receivers on unanounced SSRC's this causes restarts on all video streams. I think what we need to do to solve this issue is stop offering an incoming RTP packet to all registered pipelines. Instead we should build a demuxer which knows about SSRC's and PT's (and MID's and RID's in the future) and routes packets to a single pipeline. If that demuxer gets an RTP packet with an unknown PT it can route the packet to the correct pipeline if the PT is unique among all pipelines. But if it's a non-unique PT it should drop the packet instead of forwarding it to multiple pipelines and causing trouble.
Comment 21•4 years ago
|
||
(In reply to Nils Ohlmeier [:drno] from comment #20) > So I found issue which could cause all kind of issue, although I doubt it > causes the assertion in the DestroyVideoReceiveStream() to kick in. > > Jitsi negotiates several video m-sections depending on how many participants > are in a call and if parties recently joined or dropped from a call. All > these video m-sections use the same PT number (usually 100 for VP8). Now > sometimes Jitsi sends RTP packets with an unnounced SSRC, for example an RTP > packet from a previously active m-section comes in after said m-section has > been de-activated. > Now with our current code this causes a problem, because the incoming RTP > packet will be "offered" to all active media pipeline. None of them has a > matching SSRC for the packet, but all video pipeline fall back to match by > payload type and accept the packet. We have code that is supposed to find the payload types that are unique to each m-section, so this should not be happening.
Comment 22•4 years ago
|
||
(In reply to Byron Campen [:bwc] from comment #21) > We have code that is supposed to find the payload types that are unique to > each m-section, so this should not be happening. Well Jitsi appears to be always the offerer and they send us offers like this: v=0 ... a=group:BUNDLE audio-499738133 audio-1749551224 video-2011480974 video-2518195595 data audio-2993297918 video-614988387 m=audio 1 RTP/SAVPF 111 103 104 126 ... m=audio 1 RTP/SAVPF 111 103 104 126 ... m=video 1 RTP/SAVPF 100 107 101 ... m=video 1 RTP/SAVPF 100 107 101 ... m=application 1 DTLS/SCTP 5000 ... m=audio 1 RTP/SAVPF 111 103 104 126 ... m=video 1 RTP/SAVPF 100 107 101 ... We can choose unique PT's for what we are sending. But we can't make them choose unique PT's, or?
| Assignee | ||
Comment 23•4 years ago
|
||
We can choose unique PT's for what we're *receiving* - and so we could side-step the "can't tell which pipeline an unknown SSRC is for" because no two will share PTs. It is annoying... but will work*. Note that if they offer bundles (without mid) with the same PT, if we change SSRC they will have to somehow deal with it. * Assuming of course they properly handle non-matching (send/recv) PTs for a stream, which they should....
Flags: needinfo?(rjesup)
Comment 24•4 years ago
|
||
(In reply to Randell Jesup [:jesup] from comment #23) > We can choose unique PT's for what we're *receiving* With the sample in comment #22 how can we choose to receive unique PT's? Note: PT 100 is an all three m-lines VP8, 107 is H264 is all three, and 101 is VP9 in all three. Are you suggesting we should choose different codecs for the m-lines to get to unique PTs here? I totally agree that we can offer for all three m-lines different PT's for our outgoing video (assuming we would actually send multiple outgoing videos). But they are still going to send all three VP8 streams with PT 100, if we stick to the default choice of VP8 in all three cases.
Comment 25•4 years ago
|
||
(In reply to Nils Ohlmeier [:drno] from comment #22) > (In reply to Byron Campen [:bwc] from comment #21) > > We have code that is supposed to find the payload types that are unique to > > each m-section, so this should not be happening. > > Well Jitsi appears to be always the offerer and they send us offers like > this: > > v=0 > ... > a=group:BUNDLE audio-499738133 audio-1749551224 video-2011480974 > video-2518195595 data audio-2993297918 video-614988387 > m=audio 1 RTP/SAVPF 111 103 104 126 > ... > m=audio 1 RTP/SAVPF 111 103 104 126 > ... > m=video 1 RTP/SAVPF 100 107 101 > ... > m=video 1 RTP/SAVPF 100 107 101 > ... > m=application 1 DTLS/SCTP 5000 > ... > m=audio 1 RTP/SAVPF 111 103 104 126 > ... > m=video 1 RTP/SAVPF 100 107 101 > ... > > We can choose unique PT's for what we are sending. But we can't make them > choose unique PT's, or? We can choose unique PTs for receive, sure. But what I was saying was that we have code that looks at the PTs we're receiving, calculates which ones are unique to their m-section, and allows only those through the filter if we don't know about the ssrc. Non-unique PTs should always be dropped by our code if we don't know about the SSRC, but it sounds like you caught it letting that stuff through?
| Assignee | ||
Comment 26•4 years ago
|
||
(In reply to Nils Ohlmeier [:drno] from comment #24) > (In reply to Randell Jesup [:jesup] from comment #23) > > We can choose unique PT's for what we're *receiving* > > With the sample in comment #22 how can we choose to receive unique PT's? > > Note: PT 100 is an all three m-lines VP8, 107 is H264 is all three, and 101 > is VP9 in all three. > Are you suggesting we should choose different codecs for the m-lines to get > to unique PTs here? No - use different numbers for vp8 in each m-line -- no overlap in PT values (within a bundle). We'd need a per-bundle PT allocator, and ask it for each payload needed for a number. Note that on an offer this might get dicey or even impossible to avoid overlaps, in which case we simply live with it and start duplicating, OR we take advantage of the ability in SDP to re-assign "static" payloads to dynamic codecs (make PT 7 into VP8, for example). (There's a limited space for PTs, and a lot of (ancient, irrelevant) static definitions to codecs we don't support). > I totally agree that we can offer for all three m-lines different PT's for > our outgoing video (assuming we would actually send multiple outgoing > videos). But they are still going to send all three VP8 streams with PT 100, > if we stick to the default choice of VP8 in all three cases. You mean incoming video... SDP offers (and answers) say "send to me using these PTs". If the other side puts VP8 on PT 100 for all 3, then we'll send three streams with PT 100 in the bundle, and if we change SSRC they have to deal with it. Not our problem. By offering (or answering) with different PTs for every payload in the bundle, we can never be confused about where to route an incoming packet with a new SSRC to. The limit on the number of PTs is why we decided to use MID, but we can get away with this ok until MID is generally supported.
Comment 27•4 years ago
|
||
Forgot to update: I looked at the PTs form the wrong perspective. I'll double check later today, if unique PT's work with Jitsi as expected.
Comment 28•4 years ago
|
||
So the code for unique PT's does not result in unique PT's. In a three participant call I had an answer with PT 100 for all three video m-sections.
Comment 29•4 years ago
|
||
For future reference this is the URL to crash-stats for searching for the crashes caused by hitting the webrtc.org assertion in case of renegotiation: https://crash-stats.mozilla.com/signature/?product=Firefox&proto_signature=~SetRemoteSSRC&signature=mozalloc_abort%20%7C%20abort%20%7C%20rtc%3A%3AFatalMessage%3A%3A~FatalMessage&date=%3E%3D2016-05-13T19%3A51%3A00.000Z&date=%3C2017-05-12T19%3A51%3A00.000Z&_columns=date&_columns=product&_columns=version&_columns=build_id&_columns=platform&_columns=reason&_columns=address&_columns=install_time&_sort=-date&page=1#reports 25 crashes so far. Good news is that this will allow us to track if the existing patch changes the frequency of that crash.
Comment 30•4 years ago
|
||
I think we are facing multiple problems here. And I'm not sure we have identified all of them yet. But I also think we should land attachment 8863073 [details], which is definitely causing problems. Plus it is small enough to be uplifted. There is more work to be done in bug 1365797 (which is probably to big to be uplifted). And we should keep an eye on the crash stats for the SetRemoteSSRC from comment #29. I'll try if I can repro the SetRemoteSSRC assertion in RR.
See Also: → 1365797
| Comment hidden (mozreview-request) |
Comment 32•4 years ago
|
||
Pushed by drno@ohlmeier.org: https://hg.mozilla.org/integration/autoland/rev/ad21dd422ad2 don't over-write remote SSRC with random value r=jesup
Comment 33•4 years ago
|
||
| bugherder | ||
https://hg.mozilla.org/mozilla-central/rev/ad21dd422ad2
Status: NEW → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla55
Comment 34•4 years ago
|
||
Please request Beta & ESR52 approval on this when you get a chance.
status-firefox-esr52:
--- → affected
tracking-firefox54:
--- → ?
tracking-firefox55:
--- → ?
tracking-firefox-esr52:
--- → ?
Flags: needinfo?(rjesup)
Keywords: regressionwindow-wanted
| Assignee | ||
Comment 35•4 years ago
|
||
Nils - please request beta/esr52
Flags: needinfo?(rjesup) → needinfo?(drno)
Comment 36•4 years ago
|
||
Comment on attachment 8863073 [details] Bug 1338521: don't over-write remote SSRC with random value [Approval Request Comment] If this is not a sec:{high,crit} bug, please state case for ESR consideration: Avoid WebRTC video rendering issues for ESR users. User impact if declined: Late or no rendering of the remote video in WebRTC calls. Fix Landed on Version: 55 Risk to taking this patch (and alternatives if risky): Very low risk (see below in beta request). String or UUID changes made by this patch: N/A See https://wiki.mozilla.org/Release_Management/ESR_Landing_Process for more info. Approval Request Comment [Feature/Bug causing the regression]: bug 1337777 [User impact if declined]: WebRTC calls might experience no or delayed video [Is this code covered by automated tests?]: Yes [Has the fix been verified in Nightly?]: Only manually with a local build [Needs manual test from QE? If yes, steps to reproduce]: Only visible in log files. As we still have other issues with meet.jit.si is probably not feasible to verify this fix, besides a slightly better call establishing when doing calls on meet.jit.si. [List of other uplifts needed for the feature/fix]: N/A [Is the change risky?]: No [Why is the change risky/not risky?]: We only avoid starting the video renderer with a wrong random number initially. [String changes made/needed]: N/A
Flags: needinfo?(drno)
Attachment #8863073 -
Flags: approval-mozilla-esr52?
Attachment #8863073 -
Flags: approval-mozilla-beta?
Comment 37•4 years ago
|
||
Track 54+/55+ as regression. Hi Iulia, could you help verify if this issue was fixed as expected on a latest Nightly build? Thanks!
Flags: qe-verify+
Flags: needinfo?(iulia.cristescu)
Comment 38•4 years ago
|
||
(In reply to Gerry Chang [:gchang] from comment #37) > Track 54+/55+ as regression. > > Hi Iulia, could you help verify if this issue was fixed as expected on a > latest Nightly build? Thanks! Just to be clear: the patch here should improve the situation. But it's not going to fix all the outstanding issues we have with Jitsi. Its going to be hard to differentiate all of the outstanding issues.
| Reporter | ||
Comment 39•4 years ago
|
||
Hello! Investigated again this issue and I can confirm that it is still reproducible on latest Nightly 55.0a1 (2017-05-23), using Ubuntu 16.04 x64 and Windows 10 x64. Afetr refresh, the remote video does not appear at all and the self-views still work.
Flags: needinfo?(iulia.cristescu)
Comment 40•4 years ago
|
||
Comment on attachment 8863073 [details] Bug 1338521: don't over-write remote SSRC with random value Slightly improve the situation. Beta54+. Should be in 54 beta 11.
Attachment #8863073 -
Flags: approval-mozilla-beta? → approval-mozilla-beta+
Comment 41•4 years ago
|
||
| bugherderuplift | ||
https://hg.mozilla.org/releases/mozilla-beta/rev/9beb51c85160
Comment on attachment 8863073 [details] Bug 1338521: don't over-write remote SSRC with random value The fix seems low risk and just moving the initialization to an earlier stage, let's uplift to ESR52.
Attachment #8863073 -
Flags: approval-mozilla-esr52? → approval-mozilla-esr52+
Comment 44•4 years ago
|
||
Upon closer inspection, it turns out that ESR52 wasn't affected after all (per IRC discussion with Randell).
tracking-firefox-esr52:
54+ → ---
Flags: needinfo?(rjesup)
Comment 45•4 years ago
|
||
Comment on attachment 8863073 [details] Bug 1338521: don't over-write remote SSRC with random value clearing esr52 approval flag since this turned out not to be needed
Attachment #8863073 -
Flags: approval-mozilla-esr52+
| Reporter | ||
Comment 46•4 years ago
|
||
(In reply to Nils Ohlmeier [:drno] from comment #38) > (In reply to Gerry Chang [:gchang] from comment #37) > > Track 54+/55+ as regression. > > > > Hi Iulia, could you help verify if this issue was fixed as expected on a > > latest Nightly build? Thanks! > > Just to be clear: the patch here should improve the situation. But it's not > going to fix all the outstanding issues we have with Jitsi. Its going to be > hard to differentiate all of the outstanding issues. Verified again the bug on 54.0 (20170605134926), using Windows 10 x64, Ubuntu 16.04 x64 and Mac OS X 10.11.6. The main issue is still reproducible, as mentioned in comment 39. However, a small improvement can be noticed: sometimes the remote video stream is working, but the audio stream is broken or vice versa.
Comment 47•4 years ago
|
||
Hello, We've tested the Jitsi service again on the latest Nightly 56.0a1 build (id: 20170710030203) and this issue is still reproducible on the following OSs: - Ubuntu 14.04 x86 + Mac OS X 10.13 Beta - Mac OS X 10.13 Beta + Windows 7 x64
| Reporter | ||
Comment 48•4 years ago
|
||
Also tested the issue again on 55.0b13 build1 (20170727114534), using: - Windows 10 x64 + Mac OS X 10.11.6 - Windows 10 x64 + Ubuntu 16.04 x64 and it is still reproducible, like stated in comment 46.
You need to log in
before you can comment on or make changes to this bug.
Description
•