Firefox extensions crash semi-regularly without any warning
Categories
(WebExtensions :: General, defect, P3)
Tracking
(Not tracked)
People
(Reporter: diamondavocado22, Unassigned)
References
(Blocks 1 open bug)
Details
User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0
Steps to reproduce:
This is a random crash which happens every 5-7 days and I have not yet found a way to reproduce it.
Actual results:
All of my Firefox extensions (add-ons) completely stop working without any warning.
The browser itself continues to function but extensions such as uMatrix and uBlock will simply stop functioning and their interfaces (their toolbar popups) appear totally blank/empty.
There doesn't seem to be a trigger for this like Firefox crashing or anything. It just happens, and I can't get them to work normally until I restart Firefox completely.
What worries me most about this is the fact that there is no warning to the user when this happens.
Here is a dump of lots of errors from the browser console around the time this happened; I'm not sure they're all relevant but here they are anyway.
services.settings: Signature verified failed for main/normandy-recipes-capabilities. Retry from scratch 2 RemoteSettingsClient.jsm:561
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. webrequest.js:112
onBeforeRequest moz-extension://[removed GUID]/js/webrequest.js:112
Unchecked lastError value: Error: First-Party Isolation is enabled, but the required 'firstPartyDomain' attribute was not set. 2 vapi-background.js:600
remove moz-extension://[removed GUID]/js/vapi-background.js:600
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. webrequest.js:112
onBeforeRequest moz-extension://[removed GUID]/js/webrequest.js:112
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. webrequest.js:112
onBeforeRequest moz-extension://[removed GUID]/js/webrequest.js:112
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. 2 webrequest.js:112
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. 2 webrequest.js:112
Unchecked lastError value: Error: First-Party Isolation is enabled, but the required 'firstPartyDomain' attribute was not set. 2 vapi-background.js:600
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. webrequest.js:112
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. webrequest.js:112
onBeforeRequest moz-extension://[removed GUID]/js/webrequest.js:112
XUL box for button element contained an inline _moz_generated_content_after child, forcing all its children to be wrapped in a block. 8 search-one-offs.js:555:19
TypeError: this.messageManager is null
MessageChannel.jsm:208:5
No matching message handler for the given recipient. MessageChannel.jsm:964
Warning: unrecognized command line flag -profile
BrowserContentHandler.jsm:1001
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. dnt.js:52
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. fingerprinting.js:331
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. socialwidgets.js:462
Key event not available on some keyboard layouts: key=“i” modifiers=“accel,alt,shift” id=“key_browserToolbox” browser.xhtml
No matching message handler for the given recipient. MessageChannel.jsm:964
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. dnt.js:52
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. fingerprinting.js:331
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. common.js:5
No matching message handler for the given recipient. MessageChannel.jsm:964
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. 2 common.js:5
No matching message handler for the given recipient. 5 MessageChannel.jsm:964
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. socialwidgets.js:462
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. 6 common.js:5
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. 5 common.js:5
No matching message handler for the given recipient. MessageChannel.jsm:964
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. dnt.js:52
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. fingerprinting.js:331
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. common.js:5
No matching message handler for the given recipient. 3 MessageChannel.jsm:964
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. socialwidgets.js:462
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. common.js:5
sendMessage moz-extension://[removed GUID]/rea/common.js:5
No matching message handler for the given recipient. MessageChannel.jsm:964
_handleMessage resource://gre/modules/MessageChannel.jsm:964
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. 10 common.js:5
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. common.js:5
sendMessage moz-extension://[removed GUID]/rea/common.js:5
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. common.js:5
sendMessage moz-extension://[removed GUID]/rea/common.js:5
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. common.js:5
sendMessage moz-extension://[removed GUID]/rea/common.js:5
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. common.js:5
sendMessage moz-extension://[removed GUID]/rea/common.js:5
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. common.js:5
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. common.js:5
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. common.js:5
Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. common.js:5
Expected results:
In my humble opinion there NEEDS to be a notification shown to the user when this happens, and ideally all browser traffic would be cut off immediately so that requests/data which would normally be blocked by an extension could not "leak" out of the browser.
People like myself rely on extensions to provide security and privacy. Extensions are as much a part of the browser as anything else these days.
To have extensions suddenly stop working without informing the user is a really serious problem because the user might continue working under the assumption that they are secure or their data is being kept private, when in fact their data is being leaked or their browser is being compromised in a way they had previously thought was impossible due to having installed certain extensions.
Is there anything that security-conscious users can do right now to mitigate the risks associated with a crash like this?
| Reporter | ||
Comment 1•6 years ago
|
||
Screenshot of extenion after crash:
https://camo.githubusercontent.com/9053894deddf7362aee5f3bee086f0f03a61cf2d/68747470733a2f2f692e696d6775722e636f6d2f734147774b6a422e706e67
Screenshot of extenion after crash:
https://camo.githubusercontent.com/e17d24afa4c0d4a41f85ec7c32c6a9bbe041b98e/68747470733a2f2f692e696d6775722e636f6d2f3344564c6a744d2e706e67
Comment 2•6 years ago
|
||
Hi, This is very hard to reproduce on our end, we will try to test this issue with uMatrix and uBlock installed and see if the issue occurs on our end as well but without exact steps I'm not sure we can get to the bottom of it, there are a few things you can try to help us like:
can you please provide some of the crash ID's from the about:crashes page? for more information you can look here : https://support.mozilla.org/en-US/kb/firefox-crashes-troubleshoot-prevent-and-get-help
Also can you try our latest Nightly build and see if the issue occurs there as well ? you can find the build here: https://nightly.mozilla.org/
Comment 3•6 years ago
|
||
Bugbug thinks this bug should belong to this component, but please revert this change in case of error.
Comment 4•5 years ago
|
||
Because this bug's Severity has not been changed from the default since it was filed, and it's Priority is -- (Backlog,) indicating it has has not been previously triaged, the bug's Severity is being updated to -- (default, untriaged.)
Comment 5•5 years ago
|
||
Do you see any crash report in about:crashes , and if so, could you share the link to the crash report?
| Reporter | ||
Comment 6•5 years ago
|
||
Currently it says "No crash reports have been submitted."
The next time I experience the issue I'll check.
Just a random idea since I have nowhere better to put it: if I understand correctly, as per bug 1355239 this crash seems to affect Firefox's entire extension process. The result is that all extensions, not just one, stop working. Therefore couldn't you just implement some process which constantly checks if the extension process is still active/running, and if it suddenly becomes inactive, it shows a warning to the user?
| Reporter | ||
Comment 7•5 years ago
|
||
Also wondering if a workaround might be setting extensions.webextensions.remote to false, as per bug 1357729?
Perhaps then if an extension crashed it would take the entire browser process with it, which might be more desirable than having extensions crash silently without warning?
| Reporter | ||
Comment 8•5 years ago
|
||
I can confirm that the above workaround does work, in that it will crash the entire browser if the extension process crashes. At least this lets the user know that something has gone wrong.
Tested using the crash code from bug 1353959:
- Navigate to
about:configand setextensions.webextensions.remotetofalse. - Also set
devtools.chrome.enabledtotrue. - Open Browser Console via
Ctrl+Shift+J. - Crash the extension process by inputting:
Cu.import("resource://gre/modules/Extension.jsm").GlobalManager.extensionMap.values().next().value.parentMessageManager.loadProcessScript("data:,Components.utils.import('resource://gre/modules/ctypes.jsm').ctypes.cast(ctypes.uintptr_t(1), ctypes.int.ptr).contents", false);
- The entire browser will crash.
If extensions.webextensions.remote was set to true, the browser would not crash but all webextensions would stop functioning correctly without the user being warned.
Comment 9•5 years ago
|
||
(In reply to diamondavocado22 from comment #7)
Perhaps then if an extension crashed it would take the entire browser process with it, which might be more desirable than having extensions crash silently without warning?
I suspect that for most users, this would not be more desirable. In addition, there are some other drawbacks:
- in addition to crashes, any long-running code in an extension will block the main thread of the main browser process, resulting in an unresponsive UI
- this configuration is untested and hence unsupported, and is likely to be removed at some point in the future
Comment 10•5 years ago
|
||
As Andrew noted, extensions.webextensions.remote is not really supported. Its removal was planned in bug 1613141, but I'll hold off from doing so until we have a decent recovery strategy for extension process crashes (especially since we cannot remove all related code until we support out-of-process extensions on mobile).
(In reply to diamondavocado22 from comment #0)
This is a random crash which happens every 5-7 days and I have not yet found a way to reproduce it.
Since you're apparently able to encounter this every week, could you provide as many relevant details as possible? For example, is the extension process using an excessive amount of memory when the crash happens?
Even if Firefox's crash reporter doesn't report the crash (at about:crashes), then your system might have more info. For example on my ArchLinux system I can use the coredumpctl utility to find more info about crashes.
Updated•5 years ago
|
| Reporter | ||
Comment 11•5 years ago
|
||
Unfortunately I can't provide the required information; since setting extensions.webextensions.remote to false I haven't experienced this particular issue again.
I've had the browser crash a few times but I can't say if this was caused by an extension process crash or just having a large number of tabs open.
I do hope you'll consider keeping extensions.webextensions.remote in the browser until a robust extension process crash handling system is in place.
For me, and for many other users, I'm sure, the extensions are part of the browser and I would not want to browse without them.
A good analogy is a network firewall; if your firewall was to crash you'd want network access blocked entirely, rather than allow the network to keep functioning unprotected. This is how I feel about the extensions process.
Comment 12•5 years ago
|
||
I also have this issue. The symptoms are that internet connectivity is out and extensions don't load when clicking on them.
On Windows 10 I would get this issue every so often (maybe weeks-months between glitches), I'd have to reset my Firefox installation and everything would be good for a bit of time.
Recently, I installed Ubuntu 20.04, for a short bit of time everything worked great but then I started experiencing the same issues. Like OP setting extensions.webextensions.remote to false worked for me, but then the Lastpass extension is broken. If I set extensions.webextensions.remote back to true I experience the same problem. With extensions.webextensions.remote set to true and Lastpass removed, after a restart of FF everything is working again.
Here are some screenshots of the browser console (I have no FF crashes in about:crashes)
With extensions.webextensions.remote set to true (and the browser not working) - Note the logs didn't change when I tried to load a website
With extensions.webextensions.remote set to false (and the browser working) - Note the logs didn't change after loading a website
Comment 13•5 years ago
|
||
Here are (In reply to github from comment #12)
I also have this issue. The symptoms are that internet connectivity is out and extensions don't load when clicking on them.
On Windows 10 I would get this issue every so often (maybe weeks-months between glitches), I'd have to reset my Firefox installation and everything would be good for a bit of time.
Recently, I installed Ubuntu 20.04, for a short bit of time everything worked great but then I started experiencing the same issues. Like OP setting
extensions.webextensions.remoteto false worked for me, but then the Lastpass extension is broken. If I setextensions.webextensions.remoteback totrueI experience the same problem. Withextensions.webextensions.remoteset to true and Lastpass removed, after a restart of FF everything is working again.Here are some screenshots of the browser console (I have no FF crashes in
about:crashes)With
extensions.webextensions.remoteset totrue(and the browser not working) - Note the logs didn't change when I tried to load a website
With
extensions.webextensions.remoteset tofalse(and the browser working) - Note the logs didn't change after loading a website
Looks like my images didn't get rendered by markdown
With
extensions.webextensions.remoteset totrue(and the browser not working) - Note the logs didn't change when I tried to load a website
https://i.imgur.com/wwmAUZ1.png
With
extensions.webextensions.remoteset tofalse(and the browser working) - Note the logs didn't change after loading a website
https://i.imgur.com/OkTrQmg.png
Comment 14•5 years ago
|
||
(In reply to kusha from comment #12)
Recently, I installed Ubuntu 20.04, for a short bit of time everything worked great but then I started experiencing the same issues. Like OP setting
extensions.webextensions.remoteto false worked for me, but then the Lastpass extension is broken. If I setextensions.webextensions.remoteback totrueI experience the same problem. Withextensions.webextensions.remoteset to true and Lastpass removed, after a restart of FF everything is working again.
When the preference is changed, the browser must be restarted for it to apply.
The console isn't showing anything interesting. In particular it's not clear whether the extension process has actually crashed.
Could you click on the gears icon in the upper-right corner to enable "Show Content Messages" to see if there is anything of interest?
And to see if the extension process has actually crashed, list all Firefox processes with ps x -o pid,comm,cmd | grep firefox. I would expect "firefox" (1x), "Privileged Cont" (1x), "WebExtensions" (1x) and "Web Content" (4+).
Do you see anything of interest in about:crashes ? If you do, please share the IDs of the crash reports.
Comment 15•3 years ago
|
||
Clear a needinfo that is pending on an inactive user.
Inactive users most likely will not respond; if the missing information is essential and cannot be collected another way, the bug maybe should be closed as INCOMPLETE.
For more information, please visit auto_nag documentation.
Updated•3 years ago
|
Description
•