Closed Bug 1639429 Opened 4 years ago Closed 4 years ago

Firefox can no longer connect to any sites if add-ons are installed.

Categories

(Firefox :: General, defect, P1)

defect

Tracking

()

RESOLVED FIXED
Firefox 78
Tracking Status
firefox-esr68 --- unaffected
firefox76 --- unaffected
firefox77 --- unaffected
firefox78 blocking fixed

People

(Reporter: jya, Assigned: freddy)

References

(Regression)

Details

(Keywords: regression)

Having just the "Firefox Multi-Account Containers" or "Grammarly" or "1-Password" extension enabled and no site will now connect.

The actual commit causing the regression is https://hg.mozilla.org/mozilla-central/rev/be2d763a80d8

When starting from a debug build, it asserts on startup with

Assertion failure: false (SystemPrincipal must not load remote documents.), at c:/Users/jyavenard/Work/Mozilla/gecko/dom/security/nsContentSecurityManager.cpp:864
#01: nsContentSecurityManager::doContentSecurityCheck (c:\Users\jyavenard\Work\Mozilla\gecko\dom\security\nsContentSecurityManager.cpp:949)
#02: mozilla::net::nsHttpChannel::AsyncOpen (c:\Users\jyavenard\Work\Mozilla\gecko\netwerk\protocol\http\nsHttpChannel.cpp:6462)
#03: imgLoader::LoadImage (c:\Users\jyavenard\Work\Mozilla\gecko\image\imgLoader.cpp:2361)
#04: nsContentUtils::LoadImage (c:\Users\jyavenard\Work\Mozilla\gecko\dom\base\nsContentUtils.cpp:3366)
#05: nsImageLoadingContent::LoadImage (c:\Users\jyavenard\Work\Mozilla\gecko\dom\base\nsImageLoadingContent.cpp:1168)
#06: nsImageLoadingContent::LoadImage (c:\Users\jyavenard\Work\Mozilla\gecko\dom\base\nsImageLoadingContent.cpp:1058)
#07: mozilla::dom::HTMLImageElement::AfterMaybeChangeAttr (c:\Users\jyavenard\Work\Mozilla\gecko\dom\html\HTMLImageElement.cpp:493)
#08: mozilla::dom::HTMLImageElement::AfterSetAttr (c:\Users\jyavenard\Work\Mozilla\gecko\dom\html\HTMLImageElement.cpp:335)
#09: mozilla::dom::Element::SetAttrAndNotify (c:\Users\jyavenard\Work\Mozilla\gecko\dom\base\Element.cpp:2363)
#10: mozilla::dom::Element::SetAttr (c:\Users\jyavenard\Work\Mozilla\gecko\dom\base\Element.cpp:2220)
#11: mozilla::dom::Element::SetAttr (c:\Users\jyavenard\Work\Mozilla\obj-ff-dbg\dist\include\mozilla\dom\Element.h:893)
#12: mozilla::dom::Element::SetAttr (c:\Users\jyavenard\Work\Mozilla\obj-ff-dbg\dist\include\mozilla\dom\Element.h:1591)
#13: nsGenericHTMLElement::SetHTMLAttr (c:\Users\jyavenard\Work\Mozilla\gecko\dom\html\nsGenericHTMLElement.h:746)
#14: mozilla::dom::HTMLImageElement::SetSrc (c:\Users\jyavenard\Work\Mozilla\obj-ff-dbg\dist\include\mozilla\dom\HTMLImageElement.h:127)
#15: mozilla::dom::HTMLImageElement_Binding::set_src (c:\Users\jyavenard\Work\Mozilla\obj-ff-dbg\dom\bindings\HTMLImageElementBinding.cpp:247)
#16: mozilla::dom::binding_detail::GenericSetter<mozilla::dom::binding_detail::NormalThisPolicy> (c:\Users\jyavenard\Work\Mozilla\gecko\dom\bindings\BindingUtils.cpp:3151)
#17: CallJSNative (c:\Users\jyavenard\Work\Mozilla\gecko\js\src\vm\Interpreter.cpp:493)
#18: js::InternalCallOrConstruct (c:\Users\jyavenard\Work\Mozilla\gecko\js\src\vm\Interpreter.cpp:585)
#19: InternalCall (c:\Users\jyavenard\Work\Mozilla\gecko\js\src\vm\Interpreter.cpp:648)
#20: js::Call (c:\Users\jyavenard\Work\Mozilla\gecko\js\src\vm\Interpreter.cpp:665)
#21: js::CallSetter (c:\Users\jyavenard\Work\Mozilla\gecko\js\src\vm\Interpreter.cpp:803)
#22: SetExistingProperty (c:\Users\jyavenard\Work\Mozilla\gecko\js\src\vm\NativeObject.cpp:2809)
#23: js::NativeSetProperty<js::Qualified> (c:\Users\jyavenard\Work\Mozilla\gecko\js\src\vm\NativeObject.cpp:2838)
#24: js::SetProperty (c:\Users\jyavenard\Work\Mozilla\gecko\js\src\vm\ObjectOperations-inl.h:283)
#25: SetPropertyOperation (c:\Users\jyavenard\Work\Mozilla\gecko\js\src\vm\Interpreter.cpp:277)
#26: Interpret (c:\Users\jyavenard\Work\Mozilla\gecko\js\src\vm\Interpreter.cpp:3071)
#27: js::RunScript (c:\Users\jyavenard\Work\Mozilla\gecko\js\src\vm\Interpreter.cpp:465)
#28: js::InternalCallOrConstruct (c:\Users\jyavenard\Work\Mozilla\gecko\js\src\vm\Interpreter.cpp:620)
#29: InternalCall (c:\Users\jyavenard\Work\Mozilla\gecko\js\src\vm\Interpreter.cpp:648)
#30: js::Call (c:\Users\jyavenard\Work\Mozilla\gecko\js\src\vm\Interpreter.cpp:665)
#31: JS_CallFunctionValue (c:\Users\jyavenard\Work\Mozilla\gecko\js\src\jsapi.cpp:2777)
#32: nsXPCWrappedJS::CallMethod (c:\Users\jyavenard\Work\Mozilla\gecko\js\xpconnect\src\XPCWrappedJSClass.cpp:964)
#33: PrepareAndDispatch (c:\Users\jyavenard\Work\Mozilla\gecko\xpcom\reflect\xptcall\md\win32\xptcstubs_x86_64.cpp:181)
#34: SharedStub[c:\Users\jyavenard\Work\Mozilla\obj-ff-dbg\dist\bin\xul.dll +0x10c08869]
#35: nsObserverList::NotifyObservers (c:\Users\jyavenard\Work\Mozilla\gecko\xpcom\ds\nsObserverList.cpp:64)
#36: nsObserverService::NotifyObservers (c:\Users\jyavenard\Work\Mozilla\gecko\xpcom\ds\nsObserverService.cpp:291)
#37: XPTC__InvokebyIndex[c:\Users\jyavenard\Work\Mozilla\obj-ff-dbg\dist\bin\xul.dll +0x10c08812]
#38: NS_InvokeByIndex (c:\Users\jyavenard\Work\Mozilla\gecko\xpcom\reflect\xptcall\md\win32\xptcinvoke_x86_64.cpp:57)
#39: CallMethodHelper::Invoke (c:\Users\jyavenard\Work\Mozilla\gecko\js\xpconnect\src\XPCWrappedNative.cpp:1632)
#40: CallMethodHelper::Call (c:\Users\jyavenard\Work\Mozilla\gecko\js\xpconnect\src\XPCWrappedNative.cpp:1175)
#41: XPCWrappedNative::CallMethod (c:\Users\jyavenard\Work\Mozilla\gecko\js\xpconnect\src\XPCWrappedNative.cpp:1141)
#42: XPC_WN_CallMethod (c:\Users\jyavenard\Work\Mozilla\gecko\js\xpconnect\src\XPCWrappedNativeJSOps.cpp:946)
#43: CallJSNative (c:\Users\jyavenard\Work\Mozilla\gecko\js\src\vm\Interpreter.cpp:493)
#44: js::InternalCallOrConstruct (c:\Users\jyavenard\Work\Mozilla\gecko\js\src\vm\Interpreter.cpp:585)
#45: InternalCall (c:\Users\jyavenard\Work\Mozilla\gecko\js\src\vm\Interpreter.cpp:648)
#46: js::CallFromStack (c:\Users\jyavenard\Work\Mozilla\gecko\js\src\vm\Interpreter.cpp:652)
#47: Interpret (c:\Users\jyavenard\Work\Mozilla\gecko\js\src\vm\Interpreter.cpp:3312)
#48: js::RunScript (c:\Users\jyavenard\Work\Mozilla\gecko\js\src\vm\Interpreter.cpp:465)
#49: js::InternalCallOrConstruct (c:\Users\jyavenard\Work\Mozilla\gecko\js\src\vm\Interpreter.cpp:620)
#50: InternalCall (c:\Users\jyavenard\Work\Mozilla\gecko\js\src\vm\Interpreter.cpp:648)
#51: js::Call (c:\Users\jyavenard\Work\Mozilla\gecko\js\src\vm\Interpreter.cpp:665)
#52: js::CallSelfHostedFunction (c:\Users\jyavenard\Work\Mozilla\gecko\js\src\vm\SelfHosting.cpp:1674)
#53: js::jit::InterpretResume (c:\Users\jyavenard\Work\Mozilla\gecko\js\src\jit\VMFunctions.cpp:997)
#54: ??? (???:???)
Flags: needinfo?(fbraun)

Nightly updates are frozen to the nightly prior to this regression (20200519094847).

The patch from bug 1613609 was backed out. Seems like I can close this one here?

Flags: needinfo?(fbraun)
Status: NEW → RESOLVED
Closed: 4 years ago
Keywords: regression
Resolution: --- → FIXED
Target Milestone: --- → Firefox 78
Severity: -- → S1

Can we come up with a test which would have caught this?

Assignee: nobody → fbraun
Flags: needinfo?(fbraun)

(In reply to Ryan VanderMeulen [:RyanVM] from comment #8)

Can we come up with a test which would have caught this?

We held a retrospective meeting and came to the conclusion that there was a bug that made the code behave differently when under tests. TLDR, iterating over many other test failures before pushing this gave us a wrong feeling of test compliance. Now, taking a step, we'll make sure that our code will not show so radically different behavior when under test. The existing tests would have caught this and follow-up patches here will get more scrutiny. Specifically, we'll collect Telemetry in Nightly before setting our check to enforce mode. I hope that answers your question.

Flags: needinfo?(fbraun)
Has Regression Range: --- → yes
You need to log in before you can comment on or make changes to this bug.