Closed Bug 1734434 Opened 3 years ago Closed 3 years ago

Upgrading Firefox 92.0.1 to 93.0 hangs on startup, uses gigabytes of memory

Categories

(Core :: Internationalization: Localization, defect)

Firefox 93
x86_64
Windows 10
defect

Tracking

()

RESOLVED DUPLICATE of bug 1642415

People

(Reporter: gcp, Unassigned)

References

(Regression)

Details

(Keywords: regression)

Reported on IRC:
"Firefox updated from 92.x to 93.0 and it breaks on launch. Consumes a core and memory usage is now at 25 GB. Installing the same version over didn't help. Uninstall and then reinstalling did. I didn't see any temp versions in the install dir, the exe was the same as it is now. I can reproduce the issue by upgrading from 92.0.1 to 93.0. But now it only triggers on first start. If I kill the process and restart, everything seems fine."
...
"I actually test-installed the English version after the first uninstall, as I suspected it's language related. But then when I uninstalled that and reinstalled the Finnish version, everything was still OK."

The user assisted in getting us a minidump, gsvelto has a copy and produced the following stack:
https://pastebin.mozilla.org/YsLVtTD7

mozglue.dll!je_malloc(unsigned __int64 arg1) Line 51	C++
[Inline Frame] xul.dll!alloc::alloc::alloc(core::alloc::layout::Layout layout) Line 86	Unknown
[Inline Frame] xul.dll!alloc::alloc::Global::alloc_impl(core::alloc::layout::Layout self, bool layout) Line 166	Unknown
[Inline Frame] xul.dll!alloc::alloc::{{impl}}::allocate(alloc::alloc::Global * self, core::alloc::layout::Layout layout) Line 226	Unknown
[Inline Frame] xul.dll!alloc::raw_vec::RawVec<u8, alloc::alloc::Global>::allocate_in(unsigned __int64 capacity, alloc::raw_vec::AllocInit init, alloc::alloc::Global) Line 203	Unknown
[Inline Frame] xul.dll!alloc::raw_vec::RawVec<u8, alloc::alloc::Global>::with_capacity_in(unsigned __int64 capacity, alloc::alloc::Global) Line 142	Unknown
[Inline Frame] xul.dll!alloc::vec::Vec<u8, alloc::alloc::Global>::with_capacity_in(unsigned __int64 capacity, alloc::alloc::Global) Line 604	Unknown
[Inline Frame] xul.dll!alloc::slice::hack::{{impl}}::to_vec(slice<u8>) Line 223	Unknown
[Inline Frame] xul.dll!alloc::slice::hack::to_vec(slice<u8>) Line 172	Unknown
[Inline Frame] xul.dll!alloc::slice::{{impl}}::to_vec_in(slice<u8>) Line 494	Unknown
[Inline Frame] xul.dll!alloc::slice::{{impl}}::to_vec(slice<u8>) Line 470	Unknown
[Inline Frame] xul.dll!alloc::slice::{{impl}}::to_owned(slice<u8>) Line 834	Unknown
[Inline Frame] xul.dll!alloc::str::{{impl}}::to_owned(str) Line 219	Unknown
[Inline Frame] xul.dll!alloc::string::{{impl}}::to_string(enum$<alloc::borrow::Cow<str>> * self) Line 2454	Unknown
xul.dll!fluent_fallback::bundles::Bundles<l10nregistry::registry::L10nRegistry<l10nregistry_ffi::env::GeckoEnvironment, l10nregistry_ffi::registry::GeckoBundleAdapter>>::format_messages_from_iter<l10nregistry::registry::L10nRegistry<l10nregistry_ffi::env::GeckoEnvironment, l10nregistry_ffi::registry::GeckoBundleAdapter>>(slice<fluent_fallback::types::L10nKey> cache, alloc::vec::Vec<enum$<fluent_fallback::errors::LocalizationError>, alloc::alloc::Global> * errors) Line 414	Unknown
[Inline Frame] xul.dll!fluent_fallback::bundles::Bundles<l10nregistry::registry::L10nRegistry<l10nregistry_ffi::env::GeckoEnvironment, l10nregistry_ffi::registry::GeckoBundleAdapter>>::format_messages_sync(slice<fluent_fallback::types::L10nKey> self, alloc::vec::Vec<enum$<fluent_fallback::errors::LocalizationError>, alloc::alloc::Global> * errors) Line 138	Unknown
xul.dll!localization_ffi::LocalizationRc::format_messages_sync(thin_vec::ThinVec<localization_ffi::L10nKey> * self, thin_vec::ThinVec<localization_ffi::OptionalL10nMessage> * keys, thin_vec::ThinVec<nsstring::nsCString> * ret_val) Line 252	Unknown
xul.dll!mozilla::intl::Localization::FormatMessagesSync(const mozilla::dom::Sequence<mozilla::dom::OwningUTF8StringOrL10nIdArgs> & aKeys, nsTArray<mozilla::dom::Nullable<mozilla::dom::L10nMessage>> & aRetVal, mozilla::ErrorResult & aRv) Line 439	C++
xul.dll!mozilla::dom::DOMLocalization::TranslateElements(const mozilla::dom::Sequence<mozilla::OwningNonNull<mozilla::dom::Element>> & aElements, nsXULPrototypeDocument * aProto, mozilla::ErrorResult & aRv) Line 346	C++
[Inline Frame] xul.dll!mozilla::dom::DocumentL10n::TranslateDocument(mozilla::ErrorResult & aRv) Line 200	C++
xul.dll!mozilla::dom::DocumentL10n::TriggerInitialTranslation() Line 107	C++
[Inline Frame] xul.dll!mozilla::dom::PrototypeDocumentContentSink::MaybeDoneWalking() Line 639	C++
xul.dll!mozilla::dom::PrototypeDocumentContentSink::StyleSheetLoaded(mozilla::StyleSheet * aSheet, bool aWasDeferred, nsresult aStatus) Line 719	C++
xul.dll!mozilla::css::Loader::NotifyObservers(mozilla::css::SheetLoadData & aData, nsresult aStatus) Line 1570	C++
xul.dll!mozilla::SharedStyleSheetCache::LoadCompleted(mozilla::SharedStyleSheetCache * aCache, mozilla::css::SheetLoadData & aData, nsresult aStatus) Line 334	C++
[Inline Frame] xul.dll!mozilla::css::Loader::SheetComplete(mozilla::css::SheetLoadData & aLoadData, nsresult aStatus) Line 1598	C++
[Inline Frame] xul.dll!mozilla::css::SheetLoadData::SheetFinishedParsingAsync() Line 247	C++
[Inline Frame] xul.dll!mozilla::css::Loader::ParseSheet::<unnamed-tag>::operator()(bool aDummy) Line 1547	C++
[Inline Frame] xul.dll!mozilla::MozPromise<bool,bool,1>::InvokeMethod(mozilla::css::Loader::ParseSheet::<unnamed-tag> * aThisVal, void(const mozilla::css::Loader::ParseSheet::<unnamed-tag>::*)(bool) aValue, bool &&) Line 630	C++
[Inline Frame] xul.dll!mozilla::MozPromise<bool,bool,1>::InvokeCallbackMethod(mozilla::css::Loader::ParseSheet::<unnamed-tag> * aThisVal, void(const mozilla::css::Loader::ParseSheet::<unnamed-tag>::*)(bool) aValue, bool && aCompletionPromise, RefPtr<mozilla::MozPromise<bool,bool,1>::Private> &&) Line 661	C++
xul.dll!mozilla::MozPromise<bool,bool,1>::ThenValue<`lambda at /builds/worker/checkouts/gecko/layout/style/Loader.cpp:1545:11',`lambda at /builds/worker/checkouts/gecko/layout/style/Loader.cpp:1549:11'>::DoResolveOrRejectInternal(mozilla::MozPromise<bool,bool,1>::ResolveOrRejectValue & aValue) Line 859	C++
[Inline Frame] xul.dll!mozilla::MozPromise<bool,nsresult,1>::ThenValueBase::DoResolveOrReject(mozilla::MozPromise<bool,nsresult,1>::ResolveOrRejectValue & aValue) Line 608	C++
xul.dll!mozilla::MozPromise<bool,nsresult,1>::ThenValueBase::ResolveOrRejectRunnable::Run() Line 488	C++
[Inline Frame] xul.dll!mozilla::RunnableTask::Run() Line 502	C++
xul.dll!mozilla::TaskController::DoExecuteNextTaskOnlyMainThreadInternal(const mozilla::detail::BaseAutoLock<mozilla::Mutex &> & aProofOfLock) Line 805	C++
[Inline Frame] xul.dll!mozilla::TaskController::ExecuteNextTaskOnlyMainThreadInternal(const mozilla::detail::BaseAutoLock<mozilla::Mutex &> & aProofOfLock) Line 641	C++
[Inline Frame] xul.dll!mozilla::TaskController::ProcessPendingMTTask(bool aMayWait) Line 425	C++
[Inline Frame] xul.dll!mozilla::TaskController::InitializeInternal::<unnamed-tag>::operator()() Line 135	C++
[Inline Frame] xul.dll!mozilla::detail::RunnableFunction<`lambda at /builds/worker/checkouts/gecko/xpcom/threads/TaskController.cpp:135:7'>::Run() Line 531	C++
xul.dll!nsThread::ProcessNextEvent(bool aMayWait, bool * aResult) Line 1148	C++
[Inline Frame] xul.dll!NS_ProcessNextEvent(nsIThread * aThread, bool aMayWait) Line 466	C++
xul.dll!mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate * aDelegate) Line 85	C++
[Inline Frame] xul.dll!MessageLoop::RunInternal() Line 331	C++
xul.dll!MessageLoop::RunHandler() Line 325	C++
xul.dll!MessageLoop::Run() Line 307	C++
xul.dll!nsBaseAppShell::Run() Line 139	C++
xul.dll!nsAppShell::Run() Line 603	C++
xul.dll!nsAppStartup::Run() Line 285	C++
xul.dll!XREMain::XRE_mainRun() Line 5291	C++
xul.dll!XREMain::XRE_main(int argc, char * * argv, const mozilla::BootstrapConfig & aConfig) Line 5476	C++
xul.dll!XRE_main(int argc, char * * argv, const mozilla::BootstrapConfig & aConfig) Line 5535	C++
Severity: -- → S2

To make it clear: the user originally tried to update the Finnish version of FIrefox.

This seems almost certain to be a regression from Bug 1560038.

Regressed by: 1560038
Has Regression Range: --- → yes
Keywords: regression

I dunno, I kinda suspect this is "just" bug 1642415, which is fixed in 94.

Per conversation on Matrix, the user is on a Finnish build, with a Finnish language pack on top.

Relevant bits


    {
      "name": "Finnish Language Pack",
      "type": "locale",
      "version": "93.0buildid20210927210923",
      "isActive": false,
      "id": "langpack-fi@firefox.mozilla.org"
    }

  "intl": {
    "localeService": {
      "requested": [
        "fi",
        "en-US"
      ],
      "available": [
        "fi",
        "en-US"
      ],
      "supported": [
        "fi",
        "en-US"
      ],
      "regionalPrefs": [
        "fi-FI"
      ],
      "defaultLocale": "fi"
    },
,

I'm going to mark it as dupe of bug 1642415.

What's interesting is that it was almost impossible for me to replicate that bug with 92+. I wonder if it's more likely to happen on less powerful machine (although mine is already 3y old).

Status: NEW → RESOLVED
Closed: 3 years ago
Resolution: --- → DUPLICATE
You need to log in before you can comment on or make changes to this bug.