Closed Bug 932736 Opened 11 years ago Closed 11 years ago

GenerationalGC: Worker thread assertion failure: !cx->isHeapBusy() in browser tests

Categories

(Core :: JavaScript Engine, defect)

x86_64
macOS
defect
Not set
normal

Tracking

()

RESOLVED DUPLICATE of bug 928050

People

(Reporter: jonco, Assigned: jonco)

References

Details

Attachments

(1 file)

There are occacsional assertion failures in browser builds like this: 12:55:51 INFO - Assertion failure: !cx->isHeapBusy(), at ../../../js/src/jsgc.cpp:1520 12:55:51 INFO - WARNING: shutting down early because of crash!: file ../../../../dom/plugins/ipc/PluginModuleChild.cpp, line 697 12:55:51 INFO - WARNING: plugin process _exit()ing: file ../../../../dom/plugins/ipc/PluginModuleChild.cpp, line 662 12:55:51 WARNING - TEST-UNEXPECTED-FAIL | chrome://mochitests/content/chrome/dom/plugins/test/mochitest/test_privatemode_perwindowpb.xul | application terminated with exit code 256 12:55:51 INFO - INFO | runtests.py | Application ran for: 0:05:44.184714 12:55:51 INFO - INFO | zombiecheck | Reading PID log: /var/folders/41/l9ff8g1n5_5bqz6g9l0vmccm00000w/T/tmp0Q8spepidlog 12:56:05 WARNING - PROCESS-CRASH | chrome://mochitests/content/chrome/dom/plugins/test/mochitest/test_privatemode_perwindowpb.xul | application crashed [@ void* js::gc::ArenaLists::refillFreeList<(js::AllowGC)1>(js::ThreadSafeContext*, js::gc::AllocKind)] 12:56:05 INFO - Crash dump filename: /var/folders/41/l9ff8g1n5_5bqz6g9l0vmccm00000w/T/tmpmoBSmA/minidumps/9F5F6C3F-AEDB-4EA7-BF86-D4A5EC00C70D.dmp 12:56:05 INFO - Operating system: Mac OS X 12:56:05 INFO - 10.8.0 12A269 12:56:05 INFO - CPU: amd64 12:56:05 INFO - family 6 model 42 stepping 7 12:56:05 INFO - 8 CPUs 12:56:05 INFO - Crash reason: EXC_BAD_ACCESS / KERN_INVALID_ADDRESS 12:56:05 INFO - Crash address: 0x0 12:56:05 INFO - Thread 16 (crashed) 12:56:05 INFO - 0 XUL!void* js::gc::ArenaLists::refillFreeList<(js::AllowGC)1>(js::ThreadSafeContext*, js::gc::AllocKind) [jsgcinlines.h:333718aa86a2 : 48 + 0x0] 12:56:05 INFO - rbx = 0x00007fff799a4c68 r12 = 0x000000015649d000 12:56:05 INFO - r13 = 0x0000000130a8d0f0 r14 = 0x00000000000000c0 12:56:05 INFO - r15 = 0x000000000000000c rip = 0x000000010370e6da 12:56:05 INFO - rsp = 0x000000010f701fa0 rbp = 0x000000010f702000 12:56:05 INFO - Found by: given as instruction pointer in context 12:56:05 INFO - 1 XUL!JSScript* js::gc::NewGCThing<JSScript, (js::AllowGC)1>(js::ThreadSafeContext*, js::gc::AllocKind, unsigned long, js::gc::InitialHeap) [jsgcinlines.h:333718aa86a2 : 441 + 0xa] 12:56:05 INFO - rbx = 0x000000016400be30 r12 = 0x000000015649d000 12:56:05 INFO - r13 = 0x0000000130a8d0f0 r14 = 0x000000016400bef8 12:56:05 INFO - r15 = 0x00000000000000c0 rip = 0x00000001037c2c10 12:56:05 INFO - rsp = 0x000000010f702010 rbp = 0x000000010f702050 12:56:05 INFO - Found by: call frame info 12:56:05 INFO - 2 XUL!JSScript::Create(js::ExclusiveContext*, JS::Handle<JSObject*>, bool, JS::CompileOptions const&, unsigned int, JS::Handle<js::ScriptSourceObject*>, unsigned int, unsigned int) [jsgcinlines.h:333718aa86a2 : 491 + 0x16] 12:56:05 INFO - rbx = 0x0000000130a8d108 r12 = 0x000000010f7023a0 12:56:05 INFO - r13 = 0x000000010f7023b0 r14 = 0x0000000130a8d0f0 12:56:05 INFO - r15 = 0x000000010f7023b0 rip = 0x00000001037b0168 12:56:05 INFO - rsp = 0x000000010f702060 rbp = 0x000000010f7020c0 12:56:05 INFO - Found by: call frame info 12:56:05 INFO - 3 XUL!EmitFunc [BytecodeEmitter.cpp:333718aa86a2 : 4839 + 0x26] 12:56:05 INFO - rbx = 0x0000000130a8d108 r12 = 0x0000000130a8d0f0 12:56:05 INFO - r13 = 0x000000010f702d98 r14 = 0x000000012a905f00 12:56:05 INFO - r15 = 0x000000010f7023b0 rip = 0x00000001036106b7 12:56:05 INFO - rsp = 0x000000010f7020d0 rbp = 0x000000010f702460 12:56:05 INFO - Found by: call frame info ... 12:56:05 INFO - Thread 0 12:56:05 INFO - 0 XUL!js::gc::Cell::arenaHeader() const [HeapAPI.h:333718aa86a2 : 128 + 0x7] 12:56:05 INFO - rbx = 0x000000011a03acb8 r12 = 0x0000000104010162 12:56:05 INFO - r13 = 0x000000010ae013c0 r14 = 0x00007fff5fbfd1c0 12:56:05 INFO - r15 = 0x0000000109829b58 rip = 0x00000001036f3576 12:56:05 INFO - rsp = 0x00007fff5fbfd010 rbp = 0x00007fff5fbfd020 12:56:05 INFO - Found by: given as instruction pointer in context 12:56:05 INFO - 1 XUL!js::gc::Cell::tenuredZone() const [Heap.h:333718aa86a2 : 1020 + 0x4] 12:56:05 INFO - rbx = 0x000000011a03acb8 r12 = 0x0000000104010162 12:56:05 INFO - r13 = 0x000000010ae013c0 r14 = 0x00007fff5fbfd1c0 12:56:05 INFO - r15 = 0x0000000109829b58 rip = 0x00000001036f281f 12:56:05 INFO - rsp = 0x00007fff5fbfd030 rbp = 0x00007fff5fbfd040 12:56:05 INFO - Found by: call frame info 12:56:05 INFO - 2 XUL!js::Nursery::moveToTenured(js::gc::MinorCollectionTracer*, JSObject*) [Barrier.h:333718aa86a2 : 153 + 0x4] 12:56:05 INFO - rbx = 0x0000000157ac2730 r12 = 0x0000000104010162 12:56:05 INFO - r13 = 0x000000010ae013c0 r14 = 0x00007fff5fbfd1c0 12:56:05 INFO - r15 = 0x0000000109829b58 rip = 0x000000010366b8d0 12:56:05 INFO - rsp = 0x00007fff5fbfd050 rbp = 0x00007fff5fbfd080 12:56:05 INFO - Found by: call frame info 12:56:05 INFO - 3 XUL!js::Nursery::MinorGCCallback(JSTracer*, void**, JSGCTraceKind) [Nursery.cpp:333718aa86a2 : 574 + 0xe] 12:56:05 INFO - rbx = 0x0000000157ac2730 r12 = 0x0000000104010162 12:56:05 INFO - r13 = 0x000000010ae013c0 r14 = 0x00007fff5fbfd1c0 12:56:05 INFO - r15 = 0x00007fff5fbfd1c8 rip = 0x000000010366c32c 12:56:05 INFO - rsp = 0x00007fff5fbfd090 rbp = 0x00007fff5fbfd0a0 12:56:05 INFO - Found by: call frame info
Off thread compilation is trying to allocate a JSScript while a minor GC is happening on the main thread. There is currently no protection against this happening.
Attached patch bug932736-pause-workers (deleted) — Splinter Review
Here's a small patch to pause workers while we run minor GC. If it becomes the case that workers don't allocate any more we can take this out again.
Assignee: nobody → jcoppeard
Attachment #825431 - Flags: review?(terrence)
Comment on attachment 825431 [details] [diff] [review] bug932736-pause-workers Review of attachment 825431 [details] [diff] [review]: ----------------------------------------------------------------- It makes sense to me, but Brian is really the person to ask.
Attachment #825431 - Flags: review?(terrence) → review?(bhackett1024)
Comment on attachment 825431 [details] [diff] [review] bug932736-pause-workers Yeah, can this wait for bug 928050?
Attachment #825431 - Flags: review?(bhackett1024)
(In reply to Brian Hackett (:bhackett) from comment #5) Sure.
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → DUPLICATE
I just noticed that this pauses workers for minor GC. That happened accidentally when the off-main-thread ion builder went in and it killed ggc performance so hard that it brought down AWFY for four days. I expect that the timeouts on [1] are probably due to this patch. 1 - https://tbpl.mozilla.org/?showall=1&tree=Try&rev=64651a1a79ca
(In reply to Terrence Cole [:terrence] from comment #7) Ah, thanks for that. I'm going to keep testing with this patch because it fixes the assertions, but I'll ignore the timeouts.
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: