Closed
Bug 1331606
Opened 9 years ago
Closed 9 years ago
Crash in OOM | unknown | js::AutoEnterOOMUnsafeRegion::crash | JSRuntime::createJitRuntime
Categories
(Core :: JavaScript Engine, defect)
Tracking
()
RESOLVED
FIXED
mozilla53
People
(Reporter: philipp, Assigned: jandem)
Details
(Keywords: crash, regression)
Crash Data
Attachments
(3 files)
|
10.04 KB,
patch
|
luke
:
review+
|
Details | Diff | Splinter Review |
|
10.18 KB,
patch
|
jandem
:
review+
ritu
:
approval-mozilla-aurora+
ritu
:
approval-mozilla-beta+
|
Details | Diff | Splinter Review |
|
10.08 KB,
patch
|
jandem
:
review+
ritu
:
approval-mozilla-esr45+
|
Details | Diff | Splinter Review |
[Tracking Requested - why for this release]:
another late breaking crash regression in the 51 beta channel. it's accounting for 1.2% of all crashes in 51.0b14 at the moment.
This bug was filed from the Socorro interface and is
report bp-2f7738ea-90ac-4012-a31f-345db2170117.
=============================================================
Crashing Thread (22)
Frame Module Signature Source
0 xul.dll js::AutoEnterOOMUnsafeRegion::crash(char const*) js/src/jscntxt.cpp:1188
1 xul.dll JSRuntime::createJitRuntime(JSContext*) js/src/jscompartment.cpp:182
2 xul.dll JS::Zone::createJitZone(JSContext*) js/src/gc/Zone.cpp:283
3 xul.dll JSCompartment::ensureJitCompartmentExists(JSContext*) js/src/jscompartment.cpp:195
4 xul.dll js::jit::CanEnterBaselineMethod(JSContext*, js::RunState&) js/src/jit/BaselineJIT.cpp:397
5 xul.dll js::RunScript(JSContext*, js::RunState&) js/src/vm/Interpreter.cpp:390
6 xul.dll js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct) js/src/vm/Interpreter.cpp:476
7 xul.dll js::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>) js/src/vm/Interpreter.cpp:522
8 xul.dll IntlInitialize js/src/builtin/Intl.cpp:546
9 xul.dll CreateCollatorPrototype js/src/builtin/Intl.cpp:857
10 xul.dll js::GlobalObject::initIntlObject(JSContext*, JS::Handle<js::GlobalObject*>) js/src/builtin/Intl.cpp:2505
11 xul.dll js::InitIntlClass(JSContext*, JS::Handle<JSObject*>) js/src/builtin/Intl.cpp:2549
12 xul.dll js::GlobalObject::resolveConstructor(JSContext*, JS::Handle<js::GlobalObject*>, JSProtoKey) js/src/vm/GlobalObject.cpp:170
13 xul.dll js::GlobalObject::initStandardClasses(JSContext*, JS::Handle<js::GlobalObject*>) js/src/vm/GlobalObject.cpp:429
14 xul.dll JS_InitStandardClasses(JSContext*, JS::Handle<JSObject*>) js/src/jsapi.cpp:941
15 xul.dll mozilla::dom::CreateGlobal<mozilla::dom::DedicatedWorkerGlobalScope, &mozilla::dom::DedicatedWorkerGlobalScopeBinding::GetProtoObjectHandle(JSContext*)>(JSContext*, mozilla::dom::DedicatedWorkerGlobalScope*, nsWrapperCache*, JSClass const*, JS::CompartmentOptions&, JSPrincipals*, bool, JS::MutableHandle<JSObject*>) obj-firefox/dist/include/mozilla/dom/BindingUtils.h:2954
16 xul.dll mozilla::dom::DedicatedWorkerGlobalScopeBinding::Wrap(JSContext*, mozilla::dom::DedicatedWorkerGlobalScope*, nsWrapperCache*, JS::CompartmentOptions&, JSPrincipals*, bool, JS::MutableHandle<JSObject*>) obj-firefox/dom/bindings/DedicatedWorkerGlobalScopeBinding.cpp:425
17 xul.dll mozilla::dom::DedicatedWorkerGlobalScope::WrapGlobalObject(JSContext*, JS::MutableHandle<JSObject*>) dom/workers/WorkerScope.cpp:513
18 xul.dll mozilla::dom::workers::WorkerPrivate::GetOrCreateGlobalScope(JSContext*) dom/workers/WorkerPrivate.cpp:6481
19 xul.dll `anonymous namespace'::ScriptExecutorRunnable::PreRun dom/workers/ScriptLoader.cpp:1878
20 xul.dll mozilla::dom::workers::WorkerRunnable::Run() dom/workers/WorkerRunnable.cpp:268
21 xul.dll nsThread::ProcessNextEvent(bool, bool*) xpcom/threads/nsThread.cpp:1067
22 xul.dll NS_ProcessNextEvent(nsIThread*, bool) xpcom/glue/nsThreadUtils.cpp:311
23 xul.dll mozilla::dom::workers::WorkerPrivate::RunCurrentSyncLoop() dom/workers/WorkerPrivate.cpp:5403
24 xul.dll `anonymous namespace'::LoadAllScripts dom/workers/ScriptLoader.cpp:2116
25 xul.dll mozilla::dom::workers::scriptloader::LoadMainScript(mozilla::dom::workers::WorkerPrivate*, nsAString_internal const&, mozilla::dom::workers::WorkerScriptType, mozilla::ErrorResult&) dom/workers/ScriptLoader.cpp:2232
26 xul.dll `anonymous namespace'::CompileScriptRunnable::WorkerRun dom/workers/WorkerPrivate.cpp:518
27 xul.dll mozilla::dom::workers::WorkerRunnable::Run() dom/workers/WorkerRunnable.cpp:375
28 xul.dll nsThread::ProcessNextEvent(bool, bool*) xpcom/threads/nsThread.cpp:1067
29 xul.dll NS_ProcessNextEvent(nsIThread*, bool) xpcom/glue/nsThreadUtils.cpp:311
30 xul.dll mozilla::dom::workers::WorkerPrivate::DoRunLoop(JSContext*) dom/workers/WorkerPrivate.cpp:4568
31 xul.dll `anonymous namespace'::WorkerThreadPrimaryRunnable::Run dom/workers/RuntimeService.cpp:2861
32 xul.dll nsThread::ProcessNextEvent(bool, bool*) xpcom/threads/nsThread.cpp:1067
33 xul.dll NS_ProcessNextEvent(nsIThread*, bool) xpcom/glue/nsThreadUtils.cpp:311
34 xul.dll mozilla::ipc::MessagePumpForNonMainThreads::Run(base::MessagePump::Delegate*) ipc/glue/MessagePump.cpp:368
35 xul.dll MessageLoop::RunHandler() ipc/chromium/src/base/message_loop.cc:225
36 xul.dll MessageLoop::Run() ipc/chromium/src/base/message_loop.cc:205
37 xul.dll nsThread::ThreadFunc(void*) xpcom/threads/nsThread.cpp:465
38 nss3.dll _PR_NativeRunThread nsprpub/pr/src/threads/combined/pruthr.c:397
39 nss3.dll pr_root nsprpub/pr/src/md/windows/w95thred.c:95
40 ucrtbase.dll _o__CIpow
41 kernel32.dll BaseThreadInitThunk
42 ntdll.dll __RtlUserThreadStart
43 ntdll.dll _RtlUserThreadStart
this cross-platform crash signature has been around for a while, but spiked up in volume since 51.0b14, 52.0a2 build 20170113004016 and 53.0a1 build 20170113030227.
this would be the pushlogs for those builds:
* https://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=97d6f73643940256c0eb61e384c49bf6f6c49847&tochange=91f5293e9a89056565493ed5073c3842b0ee9fdc
* https://hg.mozilla.org/releases/mozilla-aurora/pushloghtml?fromchange=1abb4b193740653f1161d86f38dbb79287e7d69b&tochange=1e322cd9c7410917d4c5f1fa5b2cd78eb4a79ec6
* https://hg.mozilla.org/releases/mozilla-beta/pushloghtml?fromchange=FIREFOX_51_0b13_RELEASE&tochange=FIREFOX_51_0b14_RELEASE
this is a very similar pattern of a regression-ranges like in bug 1331193, which makes me think those crashes might be related...
| Assignee | ||
Comment 1•9 years ago
|
||
This could be from bug 1325200; users running into the executable code limit we now have per process...
We could double the limit on beta for now, it's a bit less secure but should be low risk. In addition we could work on handling these "OOMs" more gracefully...
Flags: needinfo?(luke)
| Assignee | ||
Comment 2•9 years ago
|
||
Another low risk option is to check in JSRuntime::createJitRuntime that we have at least a few MB of executable memory available, and if not we just return OOM instead of creating a JitRuntime and potentially MOZ_CRASH'ing.
I think this will mostly affect power users with many tabs open. Unfortunately that information isn't on crash-stats.
| Assignee | ||
Comment 3•9 years ago
|
||
This bumps the limit on 32-bit from 128 MB to 160 MB, and on 64-bit from 512 MB to 640 MB.
Furthermore, when we are within 16 MB of this limit, we stop compiling Baseline/Ion/regexp/constructor code and in JSRuntime::createJitRuntime we will report OOM instead of calling jitRuntime_->initialize and potentially MOZ_CRASHing after that.
These heuristics should be sufficient to prevent the majority of crashes and this is very low risk.
Comment 4•9 years ago
|
||
Track 51+ as there is a spike in 51.0b14. Let's see if we can get this in 51 RC2.
Updated•9 years ago
|
Attachment #8827443 -
Flags: review?(luke) → review+
Updated•9 years ago
|
Flags: needinfo?(luke)
Pushed by jandemooij@gmail.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/3e2eddbfeaef
Avoid OOM crashes when we reach the executable code limit. r=luke
| Reporter | ||
Comment 6•9 years ago
|
||
thanks. do you think that bug 1331193 could be related or are the similar regression ranges just a coincidence?
Flags: needinfo?(jdemooij)
| Assignee | ||
Comment 7•9 years ago
|
||
(In reply to [:philipp] from comment #6)
> thanks. do you think that bug 1331193 could be related or are the similar
> regression ranges just a coincidence?
I'm not familiar with that code, but I don't think these crashes are related. Maybe another patch landed and was backported around the same time?
Flags: needinfo?(jdemooij)
| Assignee | ||
Comment 8•9 years ago
|
||
In bug 1325200 we added a limit on the amount of executable code we allow per process. As I mentioned there, this had some risk of causing OOMs and that's what's happening here :/
The patch here increases our limit quite a bit and this alone will make crashes less likely. Furthermore, if we get close to this limit, we now try harder to avoid OOM and crashing on OOM.
This patch should be very safe. It only affects cases where we allocate a lot of JIT code. That does happen (see the crashes here) but most users won't run into this I expect.
Approval Request Comment
[Feature/Bug causing the regression]: Bug 1325200.
[User impact if declined]: OOM crashes.
[Is this code covered by automated tests?]: Yes.
[Has the fix been verified in Nightly?]: Not yet.
[Needs manual test from QE? If yes, steps to reproduce]: No.
[List of other uplifts needed for the feature/fix]: None.
[Is the change risky?]: See above.
[Why is the change risky/not risky?]: See above.
[String changes made/needed]: None.
Attachment #8827550 -
Flags: review+
Attachment #8827550 -
Flags: approval-mozilla-beta?
Attachment #8827550 -
Flags: approval-mozilla-aurora?
| Assignee | ||
Comment 9•9 years ago
|
||
See comment 8.
Attachment #8827553 -
Flags: review+
Attachment #8827553 -
Flags: approval-mozilla-esr45?
Comment on attachment 8827550 [details] [diff] [review]
Patch for Aurora and Beta
Given the possible increased likelihood of OOMs without this fix, I think it meets the criteria for inclusion in RC2 (got a second opinion from DVeditz). Let's uplift this to all affected branches once it's on m-central.
Attachment #8827550 -
Flags: approval-mozilla-beta?
Attachment #8827550 -
Flags: approval-mozilla-beta+
Attachment #8827550 -
Flags: approval-mozilla-aurora?
Attachment #8827550 -
Flags: approval-mozilla-aurora+
Comment on attachment 8827553 [details] [diff] [review]
Patch for ESR45
Should be in ESR45.7
Attachment #8827553 -
Flags: approval-mozilla-esr45? → approval-mozilla-esr45+
Hi Gerry, Liz, I am not aware of RC2 drivers at this point (but something always shows up). I approved this one for all branches assuming it's a good one to include in an RC2. Just FYI!
Flags: needinfo?(lhenry)
Flags: needinfo?(gchang)
Comment 13•9 years ago
|
||
| bugherder uplift | ||
Comment 14•9 years ago
|
||
| bugherder uplift | ||
Comment 15•9 years ago
|
||
| bugherder uplift | ||
status-firefox-esr45:
--- → fixed
Updated•9 years ago
|
Flags: needinfo?(gchang)
Comment 16•9 years ago
|
||
| bugherder | ||
Status: ASSIGNED → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla53
Updated•9 years ago
|
Flags: needinfo?(lhenry)
Comment 17•9 years ago
|
||
The error is not fixed. In the Nightly 22-01-2017. When trying to view a video on Facebook, the program was closed by marking an exception code c0000409 and with error in module "ucrtbase.dll".
Comment 18•9 years ago
|
||
That's probably bug 1332905, which first appeared in yesterday's Nightly.
Comment 19•9 years ago
|
||
(In reply to Emanuel Hoogeveen [:ehoogeveen] from comment #18)
> That's probably bug 1332905, which first appeared in yesterday's Nightly.
Yes, it is very likely. Thank you.
Greetings.
Comment 20•8 years ago
|
||
Should this issue be reopened? The crash reports that has the same signature incease a lot after FF 59 release.
You need to log in
before you can comment on or make changes to this bug.
Description
•