-
Notifications
You must be signed in to change notification settings - Fork 3.4k
Description
Test code to reproduce
I cannot provide the specific test code I am using to produce this, since it contains internal company data. However, what I can tell you is these tests run for quite a long time (5-10 minutes), as they contain a lot of steps through our E2E flow in our application.
Cypress Mode
cypress run
Cypress Version
12.13.0
Browser Version
Chrome 110.0.5481.96
Node version
v16.18.1
Operating System
Debian GNU/Linux 11 (Docker image cypress/browsers:node-16.18.1-chrome-110.0.5481.96-1-ff-109.0-edge-110.0.1587.41-1)
Memory Debug Logs
Only the end of the failing test results from the memory dump have been included due to limitations of this input form.
[
{
"checkMemoryPressureDuration": 7764.029118001461,
"testTitle": "Crashing test (example #1)",
"testOrder": 18.2,
"garbageCollected": true,
"timestamp": 1690553650738
},
...
{
"getRendererMemoryUsageDuration": 2.619260013103485,
"totalMemoryWorkingSetUsed": 6995816448,
"getAvailableMemoryDuration": 58.69076597690582,
"jsHeapSizeLimit": 4294705152,
"totalMemoryLimit": 9223372036854772000,
"rendererProcessMemRss": 5469155328,
"rendererUsagePercentage": 127.34646813770371,
"rendererMemoryThreshold": 2147352576,
"currentAvailableMemory": 9223372029858955000,
"maxAvailableRendererMemory": 4294705152,
"shouldCollectGarbage": true,
"timestamp": 1690553801030,
"calculateMemoryStatsDuration": 58.72436600923538
},
{
"getRendererMemoryUsageDuration": 2.208419978618622,
"totalMemoryWorkingSetUsed": 5089853440,
"getAvailableMemoryDuration": 61.31387501955032,
"jsHeapSizeLimit": 4294705152,
"totalMemoryLimit": 9223372036854772000,
"rendererProcessMemRss": 0,
"rendererUsagePercentage": 0,
"rendererMemoryThreshold": 2147352576,
"currentAvailableMemory": 9223372031764918000,
"maxAvailableRendererMemory": 4294705152,
"shouldCollectGarbage": false,
"timestamp": 1690553802092,
"calculateMemoryStatsDuration": 61.33369600772858
},
{
"getRendererMemoryUsageDuration": 2.69021999835968,
"totalMemoryWorkingSetUsed": 1682976768,
"getAvailableMemoryDuration": 50.05962598323822,
"jsHeapSizeLimit": 4294705152,
"totalMemoryLimit": 9223372036854772000,
"rendererProcessMemRss": 0,
"rendererUsagePercentage": 0,
"rendererMemoryThreshold": 2147352576,
"currentAvailableMemory": 9223372035171795000,
"maxAvailableRendererMemory": 4294705152,
"shouldCollectGarbage": false,
"timestamp": 1690553803143,
"calculateMemoryStatsDuration": 50.07922601699829
},
{
"getRendererMemoryUsageDuration": 2.889739990234375,
"totalMemoryWorkingSetUsed": 1682792448,
"getAvailableMemoryDuration": 60.31445497274399,
"jsHeapSizeLimit": 4294705152,
"totalMemoryLimit": 9223372036854772000,
"rendererProcessMemRss": 0,
"rendererUsagePercentage": 0,
"rendererMemoryThreshold": 2147352576,
"currentAvailableMemory": 9223372035171979000,
"maxAvailableRendererMemory": 4294705152,
"shouldCollectGarbage": false,
"timestamp": 1690553804204,
"calculateMemoryStatsDuration": 60.33361500501633
},
{
"getRendererMemoryUsageDuration": 2.6974300146102905,
"totalMemoryWorkingSetUsed": 1682558976,
"getAvailableMemoryDuration": 225.94400304555893,
"jsHeapSizeLimit": 4294705152,
"totalMemoryLimit": 9223372036854772000,
"rendererProcessMemRss": 0,
"rendererUsagePercentage": 0,
"rendererMemoryThreshold": 2147352576,
"currentAvailableMemory": 9223372035172213000,
"maxAvailableRendererMemory": 4294705152,
"shouldCollectGarbage": false,
"timestamp": 1690553805431,
"calculateMemoryStatsDuration": 225.9711429476738
}
]Other
Our test specs that contain multiple long running tests are prone to crashing mid-run in CI. This seems to be more likely when there are test retries in the run. We are running with both experimentalMemoryManagement set to true and numTestsKeptInMemory set to 0. We also have the memory and CPU allocation in our GitLab runners set quite high (see below). Despite this, we still get the crashes. Example:
Some top level test description
(Attempt 1 of 4) A test scenario containing a scenario outline template (example #1)
(Attempt 2 of 4) A test scenario containing a scenario outline template (example #1)
✓ A test scenario containing a scenario outline template (example #1) (849857ms)
✓ A test scenario containing a scenario outline template (example #2) (360954ms)
✓ A test scenario containing a scenario outline template (example #3) (556574ms)
(Attempt 1 of 4) A test scenario containing a scenario outline template (example #4)
We detected that the Chromium Renderer process just crashed.
This can happen for a number of different reasons.
If you're running lots of tests on a memory intense application.
- Try increasing the CPU/memory on the machine you're running on.
- Try enabling experimentalMemoryManagement in your config file.
- Try lowering numTestsKeptInMemory in your config file during 'cypress open'.
You can learn more here:
https://on.cypress.io/renderer-process-crashed
Here are the memory allocations we are providing in Gitlab CI:
KUBERNETES_CPU_REQUEST: "3"
KUBERNETES_CPU_LIMIT: "4"
KUBERNETES_MEMORY_REQUEST: "12Gi"
KUBERNETES_MEMORY_LIMIT: "32Gi"
It should be noted these tests run within docker in CI, and are running in the cypress/browsers:node-16.18.1-chrome-110.0.5481.96-1-ff-109.0-edge-110.0.1587.41-1 version of the cypress image.
We are utilizing the cypress-cucumber-preprocessor library, but I do not believe that is having any impact on this issue.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status