Open Bug 1336073 Opened 3 years ago Updated 2 years ago

[e10s] Azurewave WebCam stopped working w/FF53 (webrtc upstream 49)

Categories

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

53 Branch
x86_64
Windows 7
defect

Tracking

()

Tracking Status
firefox51 --- unaffected
firefox52 --- unaffected
firefox53 --- fix-optional
firefox54 --- fix-optional
firefox55 --- fix-optional

People

(Reporter: epinal99-bugzilla2, Unassigned)

References

Details

(Keywords: regression)

Attachments

(4 files)

Attached file log.txt (non-e10s)
Follow-up of https://bugzilla.mozilla.org/show_bug.cgi?id=1335329#c12

STR:
0) Enable e10s
1) Open https://meet.jit.si/TestFirefox
2) Share microphone and webcam

Result: 3 notifications about sharing mic, webcam then mic again are displayed. 
Finally the user gets only mic shared, webcam is not (no video).

Reg range:
https://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?fromchange=935e36fde31c6ecd8321beb29d896e42a70aecd0&tochange=126348e718d03dec640b30b5def70fce8aa71527

Logging:
set MOZ_LOG=GetUserMedia:4,MediaManager:5,webrtc_trace:5
set WEBRTC_TRACE_FILE=nspr

log.txt is empty with e10s enabled, works only in non-e10s mode!

Webcam:
Azurewave Camera USB2.0 UVC 2M WebCam (USB\VID_13D3&PID_5122&MI_00)
Driver Sonix 5.8.55133.207 (06/10/2010)
[Tracking Requested - why for this release]:
Attachment #8832850 - Attachment filename: log.txt → log.txt (non-e10s)
Attachment #8832850 - Attachment description: log.txt → log.txt (non-e10s)
Attachment #8832850 - Attachment filename: log.txt (non-e10s) → log.txt
Assignee: nobody → jib
Rank: 15
Priority: -- → P1
Tracking this since it looks like a recent regression in WebRTC.
Sorry for sitting on this. I'm not able to reproduce. When I follow the link, jitsi asks for permission twice, once for mic, then for camera, and once I share these, the video appears successfully. Tried in 53 and 54 in both on OSX and Windows 10, and wfm. It's possible the site's code has changed.

Loic, can you still reproduce this?
Flags: needinfo?(epinal99-bugzilla2)
I still have the issue on the latest Nightly, 3 prompts (mic/webcam/mic) and the error.
Flags: needinfo?(epinal99-bugzilla2)
Hi Loic, could you try logging in e10s again in Nightly? This time, wait 30 seconds or more before checking the log.txt file. We've seen issues with the log file not being finalized to disk often enough.

There's not much for me to go on here otherwise. Feel free to ping me on IRC (I'm jib in #media) if this doesn't work.
Flags: needinfo?(epinal99-bugzilla2)
Also be sure to look at the right log file. With e10s there may be as many as five.

E.g. if I specify MOZ_LOG_FILE="c:\temp\moz.log" then the one that's not empty on my system is called moz.log.child-3.
FWIW it reproduces if I share my camera in both an e10s window and a non-e10s window at the same time.

In that case I get what you describe in comment 0 with jit.si, and this error with https://jsfiddle.net/aynr0k5q/ :

    NotReadableError: Failed to allocate videosource

In other words, the three prompts followed by black appears to be how jit.si responds in the face of this error.

We see this error on Windows when the camera is in use by other programs. It would appear Windows doesn't allow concurrent access to the camera from multiple processes at the same time, and that this also applies to multiple Firefox processes! (That limitation predates the regression range though).

Loic, please let me know if this explains your problem, although I doubt it given you found a regression range. If you could re-do the regression range just in case that would be great. Just checking for pilot error.

Also, if you could confirm that you get the same error message with the fiddle in the problem situation, that would be great. Then we can minimize the STRs here at least. Thanks.
I tested again with Nightly and e10s.

Error messages in console:
[modules/RTC/RTCUtils.js] <h>:  list of media devices has changed: Array [ MediaDeviceInfo, MediaDeviceInfo, MediaDeviceInfo, MediaDeviceInfo ]  lib-jitsi-meet.min.js:6:10419
 [modules/RTC/RTCUtils.js] <value>:  Get media constraints Object { audio: false, video: Object }  lib-jitsi-meet.min.js:6:10419
 [modules/RTC/RTCUtils.js] <value/<>:  Failed to get access to local media. Error  MediaStreamError { name: "InternalError", message: "Starting video failed", constraint: "", stack: "" } Object { audio: false, video: Object }  lib-jitsi-meet.min.js:6:10419
 [modules/RTC/RTCUtils.js] <T/<>:  failed to obtain video stream - stop Object { gum: Object, name: "gum.general", message: "Starting video failed", stack: "i@https://cdn.jitsi.net/1738/libs/lib-jitsi-meet.min.js?v=1738:1:24211\nvalue/<@https://cdn.jitsi.net/1738/libs/lib-jitsi-meet.min.js?v=1738:3:3080\nv@https://cdn.jitsi.net/1738/libs/lib-jitsi-meet.min.js?v=1738:2:28561\ng/</<@https://cdn.jitsi.net/1738/libs/lib-jitsi-meet.min.js?v=1738:2:28753\n" }  lib-jitsi-meet.min.js:6:10419
 [conference.js] <m/<>:  failed to create local tracks Array [ "video" ] Object { gum: Object, name: "gum.general", message: "Starting video failed", stack: "i@https://cdn.jitsi.net/1738/libs/lib-jitsi-meet.min.js?v=1738:1:24211\nvalue/<@https://cdn.jitsi.net/1738/libs/lib-jitsi-meet.min.js?v=1738:3:3080\nv@https://cdn.jitsi.net/1738/libs/lib-jitsi-meet.min.js?v=1738:2:28561\ng/</<@https://cdn.jitsi.net/1738/libs/lib-jitsi-meet.min.js?v=1738:2:28753\n" }

I tested your jsfiddle too, with e10s. I see the prompt about sharing mic+webcam but I get the error "InternalError: Starting video failed" and, of course, no video area. 

It works fine with e10s disabled, I see the 2 video areas and the message "checking connected".
Flags: needinfo?(epinal99-bugzilla2)
Attachment #8847735 - Attachment filename: log.txt.child-3 → log.txt.child-3 (testcase meet.jit.si)
Attachment #8847735 - Attachment description: log.txt.child-3 → log.txt.child-3 (testcase meet.jit.si)
Attachment #8847735 - Attachment filename: log.txt.child-3 (testcase meet.jit.si) → log.txt.child-3
jib, I attached both logs from the testcase of meet.jit.si and your jsfiddle.

I'll redo the regression run with your jsfiddle.
Loic, do you mean you cannot get your camera to work at all in e10s with any site?

Even with https://jsfiddle.net/jib1/zfactzn1/ ?

Have you tried with other cameras? Does it work in Google Chrome?
Flags: needinfo?(epinal99-bugzilla2)
Unfortunately I don't own a 2nd camera to test this issue.

With the testcase https://jsfiddle.net/jib1/zfactzn1/:
1) FF52 e10s on: video works
2) FF55 e10s on: no video, error message
Flags: needinfo?(epinal99-bugzilla2)
Does it work in the latest Google Chrome do you know? That would be informative. Also, have you tried updating the camera driver?
Flags: needinfo?(epinal99-bugzilla2)
Flags: needinfo?(epinal99-bugzilla2)
Hi, did you have a chance to test your camera on Google Chrome? The reason I'm asking is the regression range points to us updating to a newer (49) version of webrtc.org upstream code, which is shared with Chrome (though they're on an even newer version AFAIK). I guess there's a chance your camera is no longer supported.

From what you reported, it looks like a 2 mpixel internal camera? Or is it an external one I can buy? If internal, is this an older laptop? Brand and model? Feel free to email me or ping me on irc.

Webcam:
Azurewave Camera USB2.0 UVC 2M WebCam (USB\VID_13D3&PID_5122&MI_00)
Driver Sonix 5.8.55133.207 (06/10/2010)

Also, there's not much to go on in the logs, other than "Starting video failed" [1] with NS ERROR FAILURE. Short of obtaining a similar hardware camera and testing with it, I'm not sure how to proceed.

But again, if you can let me know first if it works with Chrome that would be great. Thanks!

[1] https://dxr.mozilla.org/mozilla-central/rev/05bfa2831c0ba4a26fa72328ffe6a99aba9c356a/dom/media/MediaManager.cpp#520
Flags: needinfo?(epinal99-bugzilla2)
Do I need to test with the dev version of Chrome or with the release?

About the webcam, it's a 2MP internal camera from an old laptop Asus N53SN (2011). And when I checked for updates a few weeks ago, I didn't find new drivers, they are all dated from 2010 (sometimes 2009).
Flags: needinfo?(epinal99-bugzilla2)
Regular version of Chrome will do.
Hi Loic, did you get to test your camera in regular Chrome?
Flags: needinfo?(epinal99-bugzilla2)
Also, just to double-check I have it right, can you confirm that your camera works with FF55 with e10s off? Thanks!
Sorry for the delay! I got weird results!

Chrome (57.0.2987.110):
1) https://meet.jit.si/TestFirefox WORKS
2) https://jsfiddle.net/jib1/zfactzn1/ WORKS

Nightly (20170328095415):
1) e10s on:
https://meet.jit.si/TestFirefox FAIL
https://jsfiddle.net/jib1/zfactzn1/ FAIL
2) e10s off:
https://meet.jit.si/TestFirefox WORKS
https://jsfiddle.net/jib1/zfactzn1/ FAIL

But with e10s off, if I reload https://jsfiddle.net/jib1/zfactzn1/ after loading https://meet.jit.si/TestFirefox it works, probably because the camera has been already shared successfully by Nightly on the other tab.

With e10s on or off when it FAILS, I noticed the camera is reached by Nightly because the green LED of the webcam is turned on during a few seconds, then shut down (and webcam sharing fails).

So I'd say there is a bug in Nightly trying to reach the webcam.
Flags: needinfo?(epinal99-bugzilla2)
Sorry for all the questions, but you mentioned "other tab", was the camera shared in multiple tabs or browsers at the same time during any of this? See comment 7.

The results in comment 20 don't make much sense. Did you try them more than once and get the same result each time?
Flags: needinfo?(epinal99-bugzilla2)
With e10s disabled, the testcase from comment #7 (https://jsfiddle.net/aynr0k5q/) works fine.

I guess, it's the same "case", if I open a tab with https://meet.jit.si/TestFirefox then a 2nd tab with https://jsfiddle.net/jib1/zfactzn1/ both tabs display video.

Yes, I tested many times, and it's reproducible every time.
Flags: needinfo?(epinal99-bugzilla2)
Summary: [e10s] No webcam shared on meet.jit.si → [e10s] Azurewave Camera USB2.0 UVC 2M WebCam stopped working w/FF53
Summary: [e10s] Azurewave Camera USB2.0 UVC 2M WebCam stopped working w/FF53 → [e10s] Azurewave WebCam stopped working w/FF53 (webrtc upstream 49)
For the record, the UUID of the webcam displayed by Chrome.
fix-optional for 53, since it *seems* to be limited to a single camera/driver (and somehow it's a timing issue).  Might point out an underlying timing issue though
One difference I note (could affect e10s stuff?  and timing) is that the fiddle lives in an iframe
I fix-optionaled this, so we shouldn't track it.
Loic seems to have the magic touch for reproducing this, no one else and only on one machine (as Jesup says "a single camera/driver(and somehow it's a timing issue). I think if Jan-Ivar had physical access to the machine, we may have a better shot of figuring out what's happening.   I assume that this is Loic's personal machine so shipping it to Jan-Ivar is probably not feasible.  Perhaps they can look at this problem together at our all-hands in SF?

In the meantime, I'm marking this fix-optional for Fx54 and 55 and untracking this from 54.
Given the nature of this bug, I'm lowering the priority and unassigning jib.  If we can get a handle on reproducing it or if we see it happen on another machine, we can reassess the priority, etc.
Assignee: jib → nobody
Rank: 15 → 29
Priority: P1 → P2
I ran into the same problem (plus a weird twist) today with my WebRTC app https://www.seeingwithsound.com/webvoice.htm in FF 54 64-bit on Windows 10 and the built-in webcam of my Asus K95V notebook PC: camera input fails. It used to work fine for this same setup in earlier versions of FF (probably up to 52). I did not change the codebase of my app for many months. Same at https://webrtc.github.io/samples/src/content/getusermedia/resolution/ giving getUserMedia error: InternalError with the built-in webcam. Interesting and probably relevant is that when I connect a Logitech C270 USB webcam to my PC, my web app and the webrtc.github.io web app suddenly each work fine with my built-in webcam! So by merely connecting the external USB webcam to the USB port I can immediately get my built-in webcam to work and see its live view. Moreover, when I try to switch over to the Logitech C270, *that* gives me the getUserMedia error: InternalError!? Hope you can link this to a recently introduced FF change/bug in the detection of connected cameras? 

BTW, my app also fails in FF 54 on my HTC 10 Android phone, whereas it used to work fine there with earlier versions of FF. Of course I cannot connect an external webcam there to see what that does.

Thanks!
Seems that other developers are struggling with the same issue that some cameras now work while other cameras don't (whereas WebRTC in FF on Windows used to work with all cameras): https://flashphoner.com/firefox-53-no-longer-works-with-some-cameras-on-windows/
Mass change P2->P3 to align with new Mozilla triage process.
Priority: P2 → P3
You need to log in before you can comment on or make changes to this bug.