-
Notifications
You must be signed in to change notification settings - Fork 3.4k
Description
Current behavior
Cypress interactive mode (cypress open) becomes completely unusable with 100% CPU usage on macOS 15.x when at least one spec files is present in the project. With zero specs, CPU usage is normal. The moment a single spec file is added, CPU instantly spikes to 100% and stays there, making the UI unresponsive.
Environment
Operating System:
macOS 15.6.1 (24G90) - Confirmed
macOS 15.7.3 (24G419) - Confirmed
All macOS 15.x versions appear affected
Hardware:
Apple Silicon (ARM64) - Confirmed
Intel Macs - Needs confirmation
Cypress Versions Tested (ALL affected):
15.9.0
13.15.2
12.17.4
10.11.0 (untested but likely affected)
Node.js:
22.19.0
18.x (untested but likely affected)
Electron Versions:
37.6.0 (Cypress 15.9.0)
27.x (Cypress 13.15.2)
Steps to Reproduce
- Install Cypress (any version) on macOS 15.x
- Create a basic Cypress project with configuration:
javascript// cypress.config.js
const { defineConfig } = require("cypress");
module.exports = defineConfig({
e2e: {
baseUrl: "https://example.com/",
watchForFileChanges: false, // Even with this disabled
},
});
- Add at least one spec file to
cypress/e2e/(even an empty test file) - Run
npx cypress open - Observe Activity Monitor
Actual Behavior
- CPU usage immediately spikes to 100% and stays there
- Cypress UI becomes unresponsive
- Issue occurs even with:
watchForFileChanges: falsesupportFile: false- Empty or minimal spec files
- No plugins or custom code
- Clean Cypress cache
- Fresh Node.js installation
Main thread stuck in infinite loop:
CFRunLoopRun (CoreFoundation event loop)
→ uv__io_poll (libuv I/O polling)
→ V8 string comparisons (v8::Value::ToNumber, _platform_memcmp)
→ Infinite loop in JavaScript execution
_Key observations:_
The main thread is stuck in CFRunLoopRun waiting for events
V8 is performing repeated string comparisons in a tight loop
The issue appears to be related to spec file discovery/indexing
Thread count is abnormally high (160 threads in some samples)
_Root Cause_
The bug appears to be a macOS 15.x CoreFoundation event loop issue that's triggered when Cypress attempts to detect/index spec files. The event loop enters a busy-wait state performing excessive string comparisons, likely comparing file paths repeatedly.
This is not a traditional file watching issue - it occurs even with file watching completely disabled. The bug is triggered by Cypress's spec file discovery mechanism interacting with macOS 15.x's file system event handling.
**What Works**
✅ Headed run mode works perfectly:
bashnpx cypress run --headed --browser electron
✅ Docker (Linux) works perfectly:
bashdocker run -it -v $PWD:/e2e -w /e2e cypress/included:13.15.2 open --project .
✅ macOS 14.x and earlier - no issues
**What Doesn't Work**
❌ cypress open on macOS 15.x with any spec files present
❌ watchForFileChanges: false
❌ supportFile: false
❌ Disabling all plugins
❌ Environment variables (CHOKIDAR_USEPOLLING, etc.)
❌ Clearing Cypress cache
❌ Different Node.js versions
❌ Different Cypress versions
❌ defaults write com.electron.cypress NSAppSleepDisabled -bool YES
❌ Increasing file descriptor limits
❌ Disabling Spotlight indexing
❌ Browser flags (--disable-backgrounding-occluded-windows, etc.)
Stack Trace Sample: (full file attached in dedicated field)
<details>
<summary>Click to expand full stack trace</summary>
Analysis of sampling Cypress (pid 11790) every 1 millisecond
Process: Cypress [11790]
Version: 15.9.0 (15.9.0.3410010)
Code Type: ARM64
OS Version: macOS 15.7.3 (24G419)
Call graph:
1531 Thread_69617 DispatchQueue_1: com.apple.main-thread (serial)
+ 1531 CFRunLoopRunSpecific (in CoreFoundation) + 572
+ 1531 __CFRunLoopRun (in CoreFoundation) + 840
+ 1531 uv_run (in Electron Framework) + 376
+ 1531 uv__io_poll (in Electron Framework) + 1488
+ 1531 v8::Value::ToNumber (String comparisons in tight loop)
+ 672 _platform_memcmp (Excessive memory comparisons)
This is a critical issue affecting all macOS 15.x users and requires urgent attention.
Desired behavior
Cypress should open with normal CPU usage (< 10% when idle)
Test code to reproduce
//config.cypress.js
javascript// cypress.config.js
const { defineConfig } = require("cypress");
module.exports = defineConfig({
e2e: {
baseUrl: "https://example.com/",
watchForFileChanges: false, // Even with this disabled
},
});
//todo.cy.js test taken from Cypress official doc
/// <reference types="cypress" />
// Welcome to Cypress!
//
// This spec file contains a variety of sample tests
// for a todo list app that are designed to demonstrate
// the power of writing tests in Cypress.
//
// To learn more about how Cypress works and
// what makes it such an awesome testing tool,
// please read our getting started guide:
// https://on.cypress.io/introduction-to-cypress
describe('example to-do app', () => {
beforeEach(() => {
// Cypress starts out with a blank slate for each test
// so we must tell it to visit our website with the `cy.visit()` command.
// Since we want to visit the same URL at the start of all our tests,
// we include it in our beforeEach function so that it runs before each test
cy.visit('https://example.cypress.io/todo')
})
it('displays two todo items by default', () => {
// We use the `cy.get()` command to get all elements that match the selector.
// Then, we use `should` to assert that there are two matched items,
// which are the two default items.
cy.get('.todo-list li').should('have.length', 2)
// We can go even further and check that the default todos each contain
// the correct text. We use the `first` and `last` functions
// to get just the first and last matched elements individually,
// and then perform an assertion with `should`.
cy.get('.todo-list li').first().should('have.text', 'Pay electric bill')
cy.get('.todo-list li').last().should('have.text', 'Walk the dog')
})
it('can add new todo items', () => {
// We'll store our item text in a variable so we can reuse it
const newItem = 'Feed the cat'
// Let's get the input element and use the `type` command to
// input our new list item. After typing the content of our item,
// we need to type the enter key as well in order to submit the input.
// This input has a data-test attribute so we'll use that to select the
// element in accordance with best practices:
// https://on.cypress.io/selecting-elements
cy.get('[data-test=new-todo]').type(`${newItem}{enter}`)
// Now that we've typed our new item, let's check that it actually was added to the list.
// Since it's the newest item, it should exist as the last element in the list.
// In addition, with the two default items, we should have a total of 3 elements in the list.
// Since assertions yield the element that was asserted on,
// we can chain both of these assertions together into a single statement.
cy.get('.todo-list li')
.should('have.length', 3)
.last()
.should('have.text', newItem)
})
it('can check off an item as completed', () => {
// In addition to using the `get` command to get an element by selector,
// we can also use the `contains` command to get an element by its contents.
// However, this will yield the <label>, which is lowest-level element that contains the text.
// In order to check the item, we'll find the <input> element for this <label>
// by traversing up the dom to the parent element. From there, we can `find`
// the child checkbox <input> element and use the `check` command to check it.
cy.contains('Pay electric bill')
.parent()
.find('input[type=checkbox]')
.check()
// Now that we've checked the button, we can go ahead and make sure
// that the list element is now marked as completed.
// Again we'll use `contains` to find the <label> element and then use the `parents` command
// to traverse multiple levels up the dom until we find the corresponding <li> element.
// Once we get that element, we can assert that it has the completed class.
cy.contains('Pay electric bill')
.parents('li')
.should('have.class', 'completed')
})
context('with a checked task', () => {
beforeEach(() => {
// We'll take the command we used above to check off an element
// Since we want to perform multiple tests that start with checking
// one element, we put it in the beforeEach hook
// so that it runs at the start of every test.
cy.contains('Pay electric bill')
.parent()
.find('input[type=checkbox]')
.check()
})
it('can filter for uncompleted tasks', () => {
// We'll click on the "active" button in order to
// display only incomplete items
cy.contains('Active').click()
// After filtering, we can assert that there is only the one
// incomplete item in the list.
cy.get('.todo-list li')
.should('have.length', 1)
.first()
.should('have.text', 'Walk the dog')
// For good measure, let's also assert that the task we checked off
// does not exist on the page.
cy.contains('Pay electric bill').should('not.exist')
})
it('can filter for completed tasks', () => {
// We can perform similar steps as the test above to ensure
// that only completed tasks are shown
cy.contains('Completed').click()
cy.get('.todo-list li')
.should('have.length', 1)
.first()
.should('have.text', 'Pay electric bill')
cy.contains('Walk the dog').should('not.exist')
})
it('can delete all completed tasks', () => {
// First, let's click the "Clear completed" button
// `contains` is actually serving two purposes here.
// First, it's ensuring that the button exists within the dom.
// This button only appears when at least one task is checked
// so this command is implicitly verifying that it does exist.
// Second, it selects the button so we can click it.
cy.contains('Clear completed').click()
// Then we can make sure that there is only one element
// in the list and our element does not exist
cy.get('.todo-list li')
.should('have.length', 1)
.should('not.have.text', 'Pay electric bill')
// Finally, make sure that the clear button no longer exists.
cy.contains('Clear completed').should('not.exist')
})
})
})
Cypress Version
Cypress Versions Tested (ALL affected): 15.9.0 13.15.2 12.17.4 10.11.0 (untested but likely affected)
Debug Logs
Analysis of sampling Cypress (pid 20640) every 1 millisecond
Process: Cypress [20640]
Path: /Users/USER/Library/Caches/*/Cypress.app/Contents/MacOS/Cypress
Load Address: 0x1024c4000
Identifier: com.electron.cypress
Version: 13.15.2 (13.15.2.2717037)
Code Type: ARM64
Platform: macOS
Parent Process: launchd [1]
Target Type: live task
Date/Time: 2026-01-29 21:19:44.713 +0200
Launch Time: 2026-01-29 21:17:18.458 +0200
OS Version: macOS 15.6.1 (24G90)
Report Version: 7
Analysis Tool: /usr/bin/sample
Physical footprint: 606.0M
Physical footprint (peak): 607.0M
Idle exit: untracked
----
Call graph:
3669 Thread_125010 DispatchQueue_1: com.apple.main-thread (serial)
+ 3669 start (in dyld) + 6076 [0x193982b98]
+ 3669 ElectronMain (in Electron Framework) + 128 [0x10b49c3cc]
+ 3669 v8::internal::compiler::BasicBlock::set_loop_header(v8::internal::compiler::BasicBlock*) (in Electron Framework) + 12216 [0x10b7943f0]
+ 3669 v8::internal::compiler::BasicBlock::set_loop_header(v8::internal::compiler::BasicBlock*) (in Electron Framework) + 11944 [0x10b7942e0]
+ 3669 v8::internal::compiler::BasicBlock::set_loop_header(v8::internal::compiler::BasicBlock*) (in Electron Framework) + 17120 [0x10b795718]
+ 3669 v8::internal::compiler::BasicBlock::set_loop_header(v8::internal::compiler::BasicBlock*) (in Electron Framework) + 17552 [0x10b7958c8]
+ 3669 v8::internal::compiler::BasicBlock::set_loop_header(v8::internal::compiler::BasicBlock*) (in Electron Framework) + 13756 [0x10b7949f4]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 3894536 [0x10d6f7ebc]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 3910492 [0x10d6fbd10]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 3903924 [0x10d6fa368]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 18698760 [0x10e5163bc]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 18910968 [0x10e54a0ac]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 19181512 [0x10e58c17c]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 19189456 [0x10e58e084]
+ 3669 -[NSApplication run] (in AppKit) + 480 [0x197d24be4]
+ 3669 -[NSApplication(NSEventRouting) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] (in AppKit) + 688 [0x1986d0940]
+ 3669 _DPSNextEvent (in AppKit) + 684 [0x197d31a34]
+ 3669 _BlockUntilNextEventMatchingListInModeWithFilter (in HIToolbox) + 76 [0x19fa3d484]
+ 3669 ReceiveNextEventCommon (in HIToolbox) + 676 [0x19f8b24e8]
+ 3669 RunCurrentEventLoopInMode (in HIToolbox) + 324 [0x19f8af27c]
+ 3669 CFRunLoopRunSpecific (in CoreFoundation) + 572 [0x193e0ca98]
+ 3669 __CFRunLoopRun (in CoreFoundation) + 840 [0x193e0d468]
+ 3669 __CFRunLoopDoSources0 (in CoreFoundation) + 232 [0x193e0e814]
+ 3669 __CFRunLoopDoSource0 (in CoreFoundation) + 172 [0x193e0eaa8]
+ 3669 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ (in CoreFoundation) + 28 [0x193e0eb14]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 19182860 [0x10e58c6c0]
+ 3669 ??? (in Electron Framework) load address 0x10b248000 + 0x1c4010 [0x10b40c010]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 19186392 [0x10e58d48c]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 18909620 [0x10e549b68]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 18908504 [0x10e54970c]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 18811952 [0x10e531de4]
+ 3669 node::FreeArrayBufferAllocator(node::ArrayBufferAllocator*) (in Electron Framework) + 16704 [0x10b625a3c]
+ 3669 uv_run (in Electron Framework) + 272 [0x10b48afcc]
+ 3669 uv_free_interface_addresses (in Electron Framework) + 1912 [0x10b49bcf0]
+ 3669 uv_poll_start (in Electron Framework) + 700 [0x10b491968]
+ 3669 node::PromiseRejectCallback(v8::PromiseRejectMessage) (in Electron Framework) + 208564 [0x111db3928]
+ 3669 node::EmitAsyncDestroy(node::Environment*, node::async_context) (in Electron Framework) + 61448 [0x111c477d0]
+ 3669 node::CallbackScope::~CallbackScope() (in Electron Framework) + 1800 [0x111c33788]
+ 3669 node::CallbackScope::~CallbackScope() (in Electron Framework) + 1140 [0x111c334f4]
+ 3669 v8::Function::Call(v8::Local<v8::Context>, v8::Local<v8::Value>, int, v8::Local<v8::Value>*) (in Electron Framework) + 508 [0x10c4f6b20]
+ 3669 v8::internal::Execution::Call(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, int, v8::internal::Handle<v8::internal::Object>*) (in Electron Framework) + 476 [0x10c60e828]
+ 3669 ??? (in <unknown binary>) [0x16064adf8]
+ 3669 ??? (in <unknown binary>) [0x16064b108]
+ 3669 ??? (in <unknown binary>) [0x158db0494]
+ 3669 ??? (in <unknown binary>) [0x16064fc70]
+ 3669 v8::internal::MicrotaskQueue::get(long) const (in Electron Framework) + 416 [0x10c6412a0]
+ 3669 v8::internal::Execution::TryCall(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, int, v8::internal::Handle<v8::internal::Object>*, v8::internal::Execution::MessageHandling, v8::internal::MaybeHandle<v8::internal::Object>*, bool) (in Electron Framework) + 200 [0x10c6102b0]
+ 3669 v8::internal::Execution::TryCallScript(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSFunction>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::FixedArray>, v8::internal::Execution::MessageHandling, v8::internal::MaybeHandle<v8::internal::Object>*, bool) (in Electron Framework) + 288 [0x10c610144]
+ 3669 v8::internal::Execution::Call(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, int, v8::internal::Handle<v8::internal::Object>*) (in Electron Framework) + 3624 [0x10c60f474]
+ 3669 ??? (in <unknown binary>) [0x16064aff8]
+ 3669 ??? (in <unknown binary>) [0x160674aa8]
+ 3669 ??? (in <unknown binary>) [0x160747458]
+ 3669 ??? (in <unknown binary>) [0x1589e1b38]
+ 3669 ??? (in <unknown binary>) [0x160688d68]
+ 3669 ??? (in <unknown binary>) [0x16064d71c]
+ 3669 ??? (in <unknown binary>) [0x16064d71c]
+ 3669 ??? (in <unknown binary>) [0x16064d71c]
+ 3665 ??? (in <unknown binary>) [0x158db6cdc]
+ ! 1026 ??? (in <unknown binary>) [0x16067e190]
+ ! : 976 ??? (in <unknown binary>) [0x1606dec74]
+ ! : | 910 v8::internal::Runtime::SetPrivateMember(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object>) (in Electron Framework) + 62188 [0x10caecc54]
+ ! : | + 277 v8::internal::String::SlowEquals(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>) (in Electron Framework) + 304,660,... [0x10c9d2868,0x10c9d29cc,...]
+ ! : | + 245 v8::internal::String::SlowEquals(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>) (in Electron Framework) + 332 [0x10c9d2884]
+ ! : | + ! 155 v8::internal::Accessors::MakeAccessor(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Name>, void (*)(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&), void (*)(v8::Local<v8::Name>, v8::Local<v8::Value>, v8::PropertyCallbackInfo<v8::Boolean> const&)) (in Electron Framework) + 67976 [0x10c5571ac]
+ ! : | + ! : 100 v8::internal::SlicedString::Get(int, v8::internal::PtrComprCageBase, v8::internal::SharedStringAccessGuardIfNeeded const&) const (in Electron Framework) + 48,76,... [0x10c9d773c,0x10c9d7758,...]
+ ! : | + ! : 43 v8::internal::SlicedString::Get(int, v8::internal::PtrComprCageBase, v8::internal::SharedStringAccessGuardIfNeeded const&) const (in Electron Framework) + 100 [0x10c9d7770]
+ ! : | + ! : | 43 v8::internal::Accessors::MakeAccessor(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Name>, void (*)(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&), void (*)(v8::Local<v8::Name>, v8::Local<v8::Value>, v8::PropertyCallbackInfo<v8::Boolean> const&)) (in Electron Framework) + 67836,67736,... [0x10c557120,0x10c5570bc,...]
+ ! : | + ! : 12 v8::internal::Accessors::MakeAccessor(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Name>, void (*)(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&), void (*)(v8::Local<v8::Name>, v8::Local<v8::Value>, v8::PropertyCallbackInfo<v8::Boolean> const&)) (in Electron Framework) + 67772 [0x10c5570e0]
+ ! : | + ! 90 v8::internal::Accessors::MakeAccessor(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Name>, void (*)(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&), void (*)(v8::Local<v8::Name>, v8::Local<v8::Value>, v8::PropertyCallbackInfo<v8::Boolean> const&)) (in Electron Framework) + 67964,67960,... [0x10c5571a0,0x10c55719c,...]
+ ! : | + 161 v8::internal::String::SlowEquals(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>) (in Electron Framework) + 248 [0x10c9d2830]
+ ! : | + ! 122 v8::internal::Accessors::MakeAccessor(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Name>, void (*)(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&), void (*)(v8::Local<v8::Name>, v8::Local<v8::Value>, v8::PropertyCallbackInfo<v8::Boolean> const&)) (in Electron Framework) + 67976 [0x10c5571ac]
+ ! : | + ! : 47 v8::internal::Accessors::MakeAccessor(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Name>, void (*)(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&), void (*)(v8::Local<v8::Name>, v8::Local<v8::Value>, v8::PropertyCallbackInfo<v8::Boolean> const&)) (in Electron Framework) + 67772,67720,... [0x10c5570e0,0x10c5570ac,...]
+ ! : | + ! : 41 v8::internal::SlicedString::Get(int, v8::internal::PtrComprCageBase, v8::internal::SharedStringAccessGuardIfNeeded const&) const (in Electron Framework) + 100 [0x10c9d7770]
+ ! : | + ! : | 41 v8::internal::Accessors::MakeAccessor(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Name>, void (*)(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&), void (*)(v8::Local<v8::Name>, v8::Local<v8::Value>, v8::PropertyCallbackInfo<v8::Boolean> const&)) (in Electron Framework) + 68020,67836,... [0x10c5571d8,0x10c557120,...]
+ ! : | + ! : 34 v8::internal::SlicedString::Get(int, v8::internal::PtrComprCageBase, v8::internal::SharedStringAccessGuardIfNeeded const&) const (in Electron Framework) + 76,100,... [0x10c9d7758,0x10c9d7770,...]
+ ! : | + ! 39 v8::internal::Accessors::MakeAccessor(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Name>, void (*)(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&), void (*)(v8::Local<v8::Name>, v8::Local<v8::Value>, v8::PropertyCallbackInfo<v8::Boolean> const&)) (in Electron Framework) + 67976,67836,... [0x10c5571ac,0x10c557120,...]
+ ! : | + 88 v8::internal::String::SlowEquals(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>) (in Electron Framework) + 1320 [0x10c9d2c60]
+ ! : | + ! 88 v8::internal::String::SlowGetFlatContent(v8::internal::CombinationAssertScope<v8::internal::PerThreadAssertScopeDebugOnly<(v8::internal::PerThreadAssertType)0, false>, v8::internal::PerThreadAssertScopeDebugOnly<(v8::internal::PerThreadAssertType)1, false>> const&, v8::internal::SharedStringAccessGuardIfNeeded const&) (in Electron Framework) + 96,52,... [0x10c9cfb9c,0x10c9cfb70,...]
+ ! : | + 51 v8::internal::String::SlowEquals(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>) (in Electron Framework) + 1144 [0x10c9d2bb0]
+ ! : | + ! 51 v8::internal::String::SlowGetFlatContent(v8::internal::CombinationAssertScope<v8::internal::PerThreadAssertScopeDebugOnly<(v8::internal::PerThreadAssertType)0, false>, v8::internal::PerThreadAssertScopeDebugOnly<(v8::internal::PerThreadAssertType)1, false>> const&, v8::internal::SharedStringAccessGuardIfNeeded const&) (in Electron Framework) + 96,228,... [0x10c9cfb9c,0x10c9cfc20,...]
+ ! : | + 41 v8::internal::String::SlowEquals(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>) (in Electron Framework) + 808 [0x10c9d2a60]
+ ! : | + ! 34 _platform_memcmp (in libsystem_platform.dylib) + 56,48,... [0x193d5aec8,0x193d5aec0,...]
+ ! : | + ! 7 DYLD-STUB$$memcmp (in Electron Framework) + 4,8 [0x111fdd534,0x111fdd538]
+ ! : | + 36 v8::internal::String::SlowGetFlatContent(v8::internal::CombinationAssertScope<v8::internal::PerThreadAssertScopeDebugOnly<(v8::internal::PerThreadAssertType)0, false>, v8::internal::PerThreadAssertScopeDebugOnly<(v8::internal::PerThreadAssertType)1, false>> const&, v8::internal::SharedStringAccessGuardIfNeeded const&) (in Electron Framework) + 200,196 [0x10c9cfc04,0x10c9cfc00]
+ ! : | + 11 v8::internal::Accessors::MakeAccessor(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Name>, void (*)(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&), void (*)(v8::Local<v8::Name>, v8::Local<v8::Value>, v8::PropertyCallbackInfo<v8::Boolean> const&)) (in Electron Framework) + 67772,67728 [0x10c5570e0,0x10c5570b4]
+ ! : | 42 v8::internal::Runtime::SetPrivateMember(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object>) (in Electron Framework) + 62192,62136,... [0x10caecc58,0x10caecc20,...]
+ ! : | 24 v8::internal::String::SlowEquals(v8::internal::Isolate*, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::String>) (in Electron Framework) + 1040,1036 [0x10c9d2b48,0x10c9d2b44]
+ ! : 22 ??? (in <unknown binary>) [0x1606dec6c]
+ ! : 8 ??? (in <unknown binary>) [0x1606dec98]
+ ! : 7 ??? (in <unknown binary>) [0x1606dec74]
+ ! : 6 ??? (in <unknown binary>) [0x1606dec50]
+ ! : 5 v8::internal::Runtime::SetPrivateMember(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object>) (in Electron Framework) + 62248 [0x10caecc90]
+ ! : 2 ??? (in <unknown binary>) [0x1606dec3c]
+ ! 784 ??? (in <unknown binary>) [0x16067dd1c]
+ ! 450 ??? (in <unknown binary>) [0x16067dce0]
+ ! 343 ??? (in <unknown binary>) [0x16067dcf4]
+ ! 317 ??? (in <unknown binary>) [0x16067dd10]
+ ! 311 ??? (in <unknown binary>) [0x16067dd00]
+ ! 292 ??? (in <unknown binary>) [0x16067dd28]
+ ! 28 ??? (in <unknown binary>) [0x16067dce4]
+ ! 21 ??? (in <unknown binary>) [0x16067dd08]
+ ! 18 ??? (in <unknown binary>) [0x16067dce8]
+ ! 16 ??? (in <unknown binary>) [0x16067dd18]
+ ! 11 ??? (in <unknown binary>) [0x16067dcf8]
+ ! 11 ??? (in <unknown binary>) [0x16067e188]
+ ! 10 ??? (in <unknown binary>) [0x16067dcec]
+ ! 8 ??? (in <unknown binary>) [0x16067dd20]
+ ! 7 ??? (in <unknown binary>) [0x16067dd14]
+ ! 4 ??? (in <unknown binary>) [0x16067dcfc]
+ ! 4 ??? (in <unknown binary>) [0x16067dd04]
+ ! 4 ??? (in <unknown binary>) [0x16067e190]
+ 2 ??? (in <unknown binary>) [0x158db6bd0]
+ ! 1 ??? (in <unknown binary>) [0x1606a7768]
+ ! : 1 v8::internal::OrderedHashMap::GetHash(v8::internal::Isolate*, unsigned long) (in Electron Framework) + 0 [0x10c9aff90]
+ ! 1 ??? (in <unknown binary>) [0x1606a7398]
+ 1 ??? (in <unknown binary>) [0x158db7530]
+ ! 1 ??? (in <unknown binary>) [0x160640e70]
+ 1 ??? (in <unknown binary>) [0x158db6820]
3669 Thread_125028: ThreadPoolServiceThread
+ 3669 thread_start (in libsystem_pthread.dylib) + 8 [0x193d1eb80]
+ 3669 _pthread_start (in libsystem_pthread.dylib) + 136 [0x193d23c0c]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 19113764 [0x10e57b8d8]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 19036528 [0x10e568b24]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 18944512 [0x10e5523b4]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 19036120 [0x10e56898c]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 18698760 [0x10e5163bc]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 18910968 [0x10e54a0ac]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 19225288 [0x10e596c7c]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 19227412 [0x10e5974c8]
+ 3669 kevent64 (in libsystem_kernel.dylib) + 8 [0x193ced95c]
3669 Thread_125029: ThreadPoolForegroundWorker
+ 3669 thread_start (in libsystem_pthread.dylib) + 8 [0x193d1eb80]
+ 3669 _pthread_start (in libsystem_pthread.dylib) + 136 [0x193d23c0c]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 19113764 [0x10e57b8d8]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 19006640 [0x10e561664]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 19006936 [0x10e56178c]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 19007468 [0x10e5619a0]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 19005092 [0x10e561058]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 18800280 [0x10e52f04c]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 19200872 [0x10e590d1c]
+ 3669 mach_msg (in libsystem_kernel.dylib) + 24 [0x193ce1fa8]
+ 3669 mach_msg_overwrite (in libsystem_kernel.dylib) + 484 [0x193cea764]
+ 3669 mach_msg2_internal (in libsystem_kernel.dylib) + 76 [0x193cf43a0]
+ 3669 mach_msg2_trap (in libsystem_kernel.dylib) + 8 [0x193ce1c34]
3669 Thread_125030: ThreadPoolBackgroundWorker
+ 3669 thread_start (in libsystem_pthread.dylib) + 8 [0x193d1eb80]
+ 3669 _pthread_start (in libsystem_pthread.dylib) + 136 [0x193d23c0c]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 19113764 [0x10e57b8d8]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 19006692 [0x10e561698]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 19006804 [0x10e561708]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 19007468 [0x10e5619a0]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 19005092 [0x10e561058]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 18800280 [0x10e52f04c]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 19200872 [0x10e590d1c]
+ 3669 mach_msg (in libsystem_kernel.dylib) + 24 [0x193ce1fa8]
+ 3669 mach_msg_overwrite (in libsystem_kernel.dylib) + 484 [0x193cea764]
+ 3669 mach_msg2_internal (in libsystem_kernel.dylib) + 76 [0x193cf43a0]
+ 3669 mach_msg2_trap (in libsystem_kernel.dylib) + 8 [0x193ce1c34]
3669 Thread_125031: ThreadPoolForegroundWorker
+ 3669 thread_start (in libsystem_pthread.dylib) + 8 [0x193d1eb80]
+ 3669 _pthread_start (in libsystem_pthread.dylib) + 136 [0x193d23c0c]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 19113764 [0x10e57b8d8]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 19006640 [0x10e561664]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 19006936 [0x10e56178c]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 19007468 [0x10e5619a0]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 19005092 [0x10e561058]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 18800280 [0x10e52f04c]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 19200872 [0x10e590d1c]
+ 3669 mach_msg (in libsystem_kernel.dylib) + 24 [0x193ce1fa8]
+ 3669 mach_msg_overwrite (in libsystem_kernel.dylib) + 484 [0x193cea764]
+ 3669 mach_msg2_internal (in libsystem_kernel.dylib) + 76 [0x193cf43a0]
+ 3669 mach_msg2_trap (in libsystem_kernel.dylib) + 8 [0x193ce1c34]
3669 Thread_125032: Chrome_IOThread
+ 3669 thread_start (in libsystem_pthread.dylib) + 8 [0x193d1eb80]
+ 3669 _pthread_start (in libsystem_pthread.dylib) + 136 [0x193d23c0c]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 19113764 [0x10e57b8d8]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 19036528 [0x10e568b24]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 3913920 [0x10d6fca74]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (in Electron Framework) + 19036120 [0x10e56898c]
+ 3669 v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool) (inOther
