Closed Bug 1615282 Opened 5 years ago Closed 1 year ago

Missing track ended event when closing a GetDisplayMedia shared window

Categories

(Core :: WebRTC: Audio/Video, defect, P2)

73 Branch
Unspecified
All
defect

Tracking

()

RESOLVED FIXED
128 Branch
Tracking Status
firefox128 --- fixed

People

(Reporter: jan, Assigned: jgrulich)

References

(Blocks 1 open bug)

Details

Attachments

(2 files)

User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0

Steps to reproduce:

When sharing a window using GetDisplayMedia the track ended event is missing if you close this window.

Sample:
https://jsfiddle.net/oe75yrmv/1/

In chrome the event is fired properly.

Tested in ff 72/73/74

Actual results:

track ended event is missing

Expected results:

track ended event should be signaled when closing the shared window.

Summary: Missing track ended event when closing an GetDisplayMedia sahred window → Missing track ended event when closing an GetDisplayMedia shared window
Summary: Missing track ended event when closing an GetDisplayMedia shared window → Missing track ended event when closing a GetDisplayMedia shared window

Filed https://github.com/w3c/mediacapture-screen-share/issues/136.

Leaving it as defect for now since Chrome does this.

Status: UNCONFIRMED → NEW
Ever confirmed: true
OS: Unspecified → All
Priority: -- → P2

Reproduced issue at Nightly 78. Neither closing captured screen or window nor executing stop() results in ended event being fired.

When stop() is executed ended attribute is set to true.

If the captured screen or window is simply closed track.readyState value is still "live" and track.muted value is false. How is that possible?

The spec issue in comment 1 has been closed, since the spec is already clear we should be firing the ended event here.

Severity: normal → S3

The severity field for this bug is relatively low, S3. However, the bug has 3 duplicates.
:jib, could you consider increasing the bug severity?

For more information, please visit auto_nag documentation.

Flags: needinfo?(jib)
Flags: needinfo?(jib)
Assignee: nobody → jgrulich

In DesktopCapture, the callback OnCaptureResult also returns a result of
CaptureFrame, whether it was successful or failed. When ERROR_PERMANENT
is returned, it means that all the following attempts to capture a frame
will not succeed and at this point we should stop capturing. To stop
capturing, we propagate CaptureEnded event up to the DeviceListener and
stop screencast.

This is a simple backport of an WebRTC upstream change.

Upstream commit: 058bfe3ae37a7a245f9c8c6c03f4f7ac48fe179d

Pushed by pehrsons@gmail.com: https://hg.mozilla.org/integration/autoland/rev/633149c5da93 WebRTC backport: PipeWire capturer - set capturer as failed when session is closed r=pehrsons,webrtc-reviewers
Status: NEW → ASSIGNED
Keywords: leave-open
Pushed by jgrulich@redhat.com: https://hg.mozilla.org/integration/autoland/rev/12a0431a52e4 Stop screencast when there is non-recoverable error r=pehrsons

Backed out for causing android build bustages in VideoConduit.cpp.

Flags: needinfo?(jgrulich)
Pushed by jgrulich@redhat.com: https://hg.mozilla.org/integration/autoland/rev/96ac99da1b16 Stop screencast when there is non-recoverable error r=pehrsons

Backed out for causing Android build bustages.

Pushed by jgrulich@redhat.com: https://hg.mozilla.org/integration/autoland/rev/68a4e10e7bfa Stop screencast when there is non-recoverable error r=pehrsons

Backed out for causing crashes related to VideoCaptureFactory

[task 2024-06-06T10:40:42.067Z] 10:40:42     INFO -  TEST-START | org.mozilla.geckoview.test.MediaDelegateTest#testDeviceRecordingEventVideo
[task 2024-06-06T10:40:43.174Z] 10:40:43     INFO -  org.mozilla.geckoview.test | INSTRUMENTATION_RESULT: shortMsg=Process crashed.
[task 2024-06-06T10:40:43.174Z] 10:40:43     INFO -  org.mozilla.geckoview.test | INSTRUMENTATION_CODE: 0
[task 2024-06-06T10:40:43.188Z] 10:40:43     INFO -  org.mozilla.geckoview.test | adb_returncode=0
[task 2024-06-06T10:40:43.188Z] 10:40:43     INFO -  Passed: 395
[task 2024-06-06T10:40:43.188Z] 10:40:43     INFO -  Failed: 0
[task 2024-06-06T10:40:43.188Z] 10:40:43     INFO -  Todo: 18
[task 2024-06-06T10:40:43.188Z] 10:40:43  WARNING -  TEST-UNEXPECTED-FAIL | runjunit.py | Some tests did not run (probably due to a crash in the harness)
[task 2024-06-06T10:40:43.188Z] 10:40:43     INFO -  SUITE-END | took 454s
[task 2024-06-06T10:40:43.263Z] 10:40:43     INFO -  mozcrash Copy/paste: /builds/worker/fetches/minidump-stackwalk/minidump-stackwalk --symbols-url=https://symbols.mozilla.org/ --cyborg=/tmp/tmp_d6rysl5/7897a2d5-3ab6-21a6-fd07-75520e6f9b1a.trace /tmp/tmp7xnpnwfb/7897a2d5-3ab6-21a6-fd07-75520e6f9b1a.dmp /builds/worker/workspace/build/symbols
[task 2024-06-06T10:40:48.470Z] 10:40:48     INFO -  mozcrash Saved minidump as /builds/worker/workspace/build/blobber_upload_dir/7897a2d5-3ab6-21a6-fd07-75520e6f9b1a.dmp
[task 2024-06-06T10:40:48.470Z] 10:40:48     INFO -  mozcrash Saved app info as /builds/worker/workspace/build/blobber_upload_dir/7897a2d5-3ab6-21a6-fd07-75520e6f9b1a.extra
[task 2024-06-06T10:40:48.471Z] 10:40:48  WARNING -  PROCESS-CRASH | MOZ_ASSERT("CreateVideoCapture NO DESKTOP CAPTURE IMPL ON ANDROID" == nullptr) [@ mozilla::VideoCaptureFactory::CreateVideoCapture] | org.mozilla.geckoview.test.MediaDelegateTest#testDeviceRecordingEventVideo
[task 2024-06-06T10:40:48.471Z] 10:40:48     INFO -  Process type: main
[task 2024-06-06T10:40:48.471Z] 10:40:48     INFO -  Process pid: 18759
[task 2024-06-06T10:40:48.471Z] 10:40:48     INFO -  Mozilla crash reason: MOZ_ASSERT("CreateVideoCapture NO DESKTOP CAPTURE IMPL ON ANDROID" == nullptr)
[task 2024-06-06T10:40:48.471Z] 10:40:48     INFO -  Crash dump filename: /tmp/tmp7xnpnwfb/7897a2d5-3ab6-21a6-fd07-75520e6f9b1a.dmp
[task 2024-06-06T10:40:48.471Z] 10:40:48     INFO -  Operating system: Android
[task 2024-06-06T10:40:48.471Z] 10:40:48     INFO -                    0.0.0 Linux 3.10.0+ #260 SMP PREEMPT Fri May 19 12:48:14 PDT 2017 x86_64
[task 2024-06-06T10:40:48.471Z] 10:40:48     INFO -  CPU: amd64
[task 2024-06-06T10:40:48.471Z] 10:40:48     INFO -       family 6 model 6 stepping 3
[task 2024-06-06T10:40:48.471Z] 10:40:48     INFO -       4 CPUs
[task 2024-06-06T10:40:48.471Z] 10:40:48     INFO -  Crash reason:  SIGSEGV / SEGV_MAPERR
[task 2024-06-06T10:40:48.471Z] 10:40:48     INFO -  Crash address: 0x0000000000000000
[task 2024-06-06T10:40:48.471Z] 10:40:48     INFO -  Crashing instruction: `mov dword [0x0], 0x5f`
[task 2024-06-06T10:40:48.472Z] 10:40:48     INFO -  Memory accessed by instruction:
[task 2024-06-06T10:40:48.472Z] 10:40:48     INFO -    0. Address: 0x0000000000000000
[task 2024-06-06T10:40:48.472Z] 10:40:48     INFO -       Size: 4
[task 2024-06-06T10:40:48.472Z] 10:40:48     INFO -  Crashing address may be the result of a flipped bit:
[task 2024-06-06T10:40:48.472Z] 10:40:48     INFO -    0. Valid address: 0x0000000020000000 (0.250)
[task 2024-06-06T10:40:48.472Z] 10:40:48     INFO -    1. Valid address: 0x0000000040000000 (0.250)
[task 2024-06-06T10:40:48.472Z] 10:40:48     INFO -  Process uptime: not available
[task 2024-06-06T10:40:48.472Z] 10:40:48     INFO -  Thread 71 Thread-11 (crashed)
[task 2024-06-06T10:40:48.472Z] 10:40:48     INFO -   0  libxul.so!mozilla::VideoCaptureFactory::CreateVideoCapture(int, char const*, mozilla::camera::CaptureDeviceType) [video_capture_factory.cc:68a4e10e7bfa890f65b36072b80707821d6c7d96 : 94 + 0x0]
[task 2024-06-06T10:40:48.472Z] 10:40:48     INFO -       rax = 0x00007f6705af8570    rdx = 0x00007f67141f1a10
[task 2024-06-06T10:40:48.472Z] 10:40:48     INFO -       rcx = 0x00007f67137f39e0    rbx = 0x00007f67141f1e90
[task 2024-06-06T10:40:48.472Z] 10:40:48     INFO -       rsi = 0x0000000000000001    rdi = 0x00007f67141f1a90
[task 2024-06-06T10:40:48.472Z] 10:40:48     INFO -       rbp = 0x00007f67141f1e50    rsp = 0x00007f67141f1e40
[task 2024-06-06T10:40:48.473Z] 10:40:48     INFO -        r8 = 0x00007f671369cca0     r9 = 0x00007f67141f1720
[task 2024-06-06T10:40:48.473Z] 10:40:48     INFO -       r10 = 0x00000000ffffff80    r11 = 0x0000000000000246
[task 2024-06-06T10:40:48.473Z] 10:40:48     INFO -       r12 = 0x00007f66eaef0820    r13 = 0xaaaaaaaaaaaaaaaa
[task 2024-06-06T10:40:48.473Z] 10:40:48     INFO -       r14 = 0x00007f66eaef0860    r15 = 0x00007f66eaef0860
[task 2024-06-06T10:40:48.473Z] 10:40:48     INFO -       rip = 0x00007f670cdd13f2
[task 2024-06-06T10:40:48.473Z] 10:40:48     INFO -      Found by: given as instruction pointer in context
[task 2024-06-06T10:40:48.473Z] 10:40:48     INFO -   1  libxul.so!mozilla::camera::VideoEngine::CreateVideoCapture(char const*) [VideoEngine.cpp:68a4e10e7bfa890f65b36072b80707821d6c7d96 : 69 + 0xa]
[task 2024-06-06T10:40:48.473Z] 10:40:48     INFO -       rbx = 0x0000000000000000    rbp = 0x00007f67141f1ed0
[task 2024-06-06T10:40:48.473Z] 10:40:48     INFO -       rsp = 0x00007f67141f1e60    r12 = 0x00007f66eaef0820
[task 2024-06-06T10:40:48.473Z] 10:40:48     INFO -       r13 = 0xaaaaaaaaaaaaaaaa    r14 = 0x00007f66eaef0860
[task 2024-06-06T10:40:48.473Z] 10:40:48     INFO -       r15 = 0x00007f66eaef0860    rip = 0x00007f670cdaaa56
[task 2024-06-06T10:40:48.473Z] 10:40:48     INFO -      Found by: call frame info
[task 2024-06-06T10:40:48.474Z] 10:40:48     INFO -   2  libxul.so!mozilla::camera::CamerasParent::RecvAllocateCapture(mozilla::camera::CaptureEngine const&, nsTSubstring<char> const&, unsigned long const&)::$_0::operator()(mozilla::MozPromise<bool, bool, true>::ResolveOrRejectValue&&) const [CamerasParent.cpp:68a4e10e7bfa890f65b36072b80707821d6c7d96 : 817]
[task 2024-06-06T10:40:48.474Z] 10:40:48     INFO -      Found by: inlining
[task 2024-06-06T10:40:48.474Z] 10:40:48     INFO -   3  libxul.so!mozilla::MozPromise<bool, bool, true>::InvokeMethod<mozilla::camera::CamerasParent::RecvAllocateCapture(mozilla::camera::CaptureEngine const&, nsTSubstring<char> const&, unsigned long const&)::$_0, RefPtr<mozilla::MozPromise<std::__ndk1::tuple<int, int>, bool, true> > (mozilla::camera::CamerasParent::RecvAllocateCapture(mozilla::camera::CaptureEngine const&, nsTSubstring<char> const&, unsigned long const&)::$_0::*)(mozilla::MozPromise<bool, bool, true>::ResolveOrRejectValue&&) const, mozilla::MozPromise<bool, bool, true>::ResolveOrRejectValue>(mozilla::camera::CamerasParent::RecvAllocateCapture(mozilla::camera::CaptureEngine const&, nsTSubstring<char> const&, unsigned long const&)::$_0*, RefPtr<mozilla::MozPromise<std::__ndk1::tuple<int, int>, bool, true> > (mozilla::camera::CamerasParent::RecvAllocateCapture(mozilla::camera::CaptureEngine const&, nsTSubstring<char> const&, unsigned long const&)::$_0::*)(mozilla::MozPromise<bool, bool, true>::ResolveOrRejectValue&&) const, mozilla::MozPromise<bool, bool, true>::ResolveOrRejectValue&&) [MozPromise.h:68a4e10e7bfa890f65b36072b80707821d6c7d96 : 652]
[task 2024-06-06T10:40:48.474Z] 10:40:48     INFO -      Found by: inlining
[task 2024-06-06T10:40:48.475Z] 10:40:48     INFO -   4  libxul.so!mozilla::MozPromise<bool, bool, true>::InvokeCallbackMethod<true, mozilla::camera::CamerasParent::RecvAllocateCapture(mozilla::camera::CaptureEngine const&, nsTSubstring<char> const&, unsigned long const&)::$_0, RefPtr<mozilla::MozPromise<std::__ndk1::tuple<int, int>, bool, true> > (mozilla::camera::CamerasParent::RecvAllocateCapture(mozilla::camera::CaptureEngine const&, nsTSubstring<char> const&, unsigned long const&)::$_0::*)(mozilla::MozPromise<bool, bool, true>::ResolveOrRejectValue&&) const, mozilla::MozPromise<bool, bool, true>::ResolveOrRejectValue, RefPtr<mozilla::MozPromise<std::__ndk1::tuple<int, int>, bool, true>::Private> >(mozilla::camera::CamerasParent::RecvAllocateCapture(mozilla::camera::CaptureEngine const&, nsTSubstring<char> const&, unsigned long const&)::$_0*, RefPtr<mozilla::MozPromise<std::__ndk1::tuple<int, int>, bool, true> > (mozilla::camera::CamerasParent::RecvAllocateCapture(mozilla::camera::CaptureEngine const&, nsTSubstring<char> const&, unsigned long const&)::$_0::*)(mozilla::MozPromise<bool, bool, true>::ResolveOrRejectValue&&) const, mozilla::MozPromise<bool, bool, true>::ResolveOrRejectValue&&, RefPtr<mozilla::MozPromise<std::__ndk1::tuple<int, int>, bool, true>::Private>&&) [MozPromise.h:68a4e10e7bfa890f65b36072b80707821d6c7d96 : 668]
[task 2024-06-06T10:40:48.475Z] 10:40:48     INFO -      Found by: inlining
<...>
[task 2024-06-06T10:40:48.480Z] 10:40:48     INFO -  16  libc.so + 0x299eb
[task 2024-06-06T10:40:48.480Z] 10:40:48     INFO -       rsp = 0x00007f67141f2440    rip = 0x00007f672e7f89ec
[task 2024-06-06T10:40:48.480Z] 10:40:48     INFO -      Found by: stack scanning
[task 2024-06-06T10:40:48.481Z] 10:40:48     INFO -  17  libc.so + 0x896bf
[task 2024-06-06T10:40:48.481Z] 10:40:48     INFO -       rsp = 0x00007f67141f2448    rip = 0x00007f672e8586c0
[task 2024-06-06T10:40:48.481Z] 10:40:48     INFO -      Found by: stack scanning
[task 2024-06-06T10:40:48.481Z] 10:40:48     INFO -  18  libc.so + 0x1ca65
[task 2024-06-06T10:40:48.481Z] 10:40:48     INFO -       rsp = 0x00007f67141f2450    rip = 0x00007f672e7eba66
[task 2024-06-06T10:40:48.481Z] 10:40:48     INFO -      Found by: stack scanning
[task 2024-06-06T10:40:48.481Z] 10:40:48     INFO -  Thread 0 AndroidUI
Pushed by jgrulich@redhat.com: https://hg.mozilla.org/integration/autoland/rev/4de7258a4a10 Stop screencast when there is non-recoverable error r=pehrsons
Flags: needinfo?(jgrulich)
Status: ASSIGNED → RESOLVED
Closed: 1 year ago
Keywords: leave-open
Resolution: --- → FIXED
Target Milestone: --- → 128 Branch
Duplicate of this bug: 1871423
Duplicate of this bug: 1905841
Duplicate of this bug: 1907965
No longer duplicate of this bug: 1907965
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: