Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Process Hanging on large project #1284

Closed
Stemirabo opened this issue Dec 19, 2018 · 15 comments
Closed

Process Hanging on large project #1284

Stemirabo opened this issue Dec 19, 2018 · 15 comments
Labels
⁉ Question Further information is requested

Comments

@Stemirabo
Copy link

Stemirabo commented Dec 19, 2018

Summary

Hi. I'm working on a fairly large Typescript project (~1000 files, ~half being test files) with ~5000 tests and I'm trying to get Stryker running. When I try to add too many files to be mutated the number of mutants gets to a point that the process seems to just sit there grinding away on nothing for hours. The last output I see on screen is "40055 Mutant(s) generated". The Node process doesn't seem to be stuck as it's using up CPU cycles and memory usage changes. I just never get to the next step where it fires up the TestRunners and starts the real work. Do I just have to wait it out?

Even if I try to lower the number of files to be mutated down so that ~20000 mutants are generated it still hangs... the largest number of mutants generated I've seen run is around 13000. The project is private so I can't share much, but hopefully there's a solution. I fully expect this to take a long time. It will be run on a CI instance over the weekend once I can get it working.

Any help would be appreciated.

Stryker config

I've tried with and without the transpiler and I don't see a difference. Aside from being able to do coverageAnalysis, but that has other issues for me.

module.exports = function (config)
{
	config.set({
		mutator: "typescript",
		packageManager: "npm",
		reporters: ["html", "clear-text", 'progress'],
		testRunner: "mocha",
		//transpilers: ["typescript"],
		testFramework: "mocha",
		coverageAnalysis: "off",
		tsconfigFile: "tsconfig.json",
		mutate: [
			"ts/**/!(*.tests).ts",
		],
		files: ["ts/**/*.ts", "lib/**/*.js"],
		mochaOptions: {
			require: [
				"ts-node/register",
				"reflect-metadata",
			],
			timeout: 0,
			files: ["ts/**/*.tests.ts"]
		}
	});
};

Stryker environment

+-- stryker@0.33.2
+-- stryker-api@0.22.1
+-- stryker-baseline-reporter@1.0.3
+-- stryker-html-reporter@0.16.10
+-- stryker-mocha-framework@0.13.3
+-- stryker-mocha-runner@0.15.3
+-- stryker-typescript@0.16.2
+-- mocha@5.2.0

System Environment

software version(s)
node 8.10.0
npm 5.6.0
Operating System windows 10 (CI on windows 2012 R2)

stryker.log

16:31:53 (31620) INFO ConfigReader Using stryker.conf.js in the current working directory.
16:31:53 (31620) DEBUG PluginLoader Loading stryker-* from C:\...\node_modules
16:31:53 (31620) DEBUG Stryker Using config: {"logLevel":"info","fileLogLevel":"trace","timeoutMS":5000,"timeoutFactor":1.5,"plugins":["stryker-*"],"port":9234,"reporter":[],"reporters":["html","clear-text","progress"],"coverageAnalysis":"off","testRunner":"mocha","mutator":"typescript","transpilers":[],"maxConcurrentTestRunners":6,"symlinkNodeModules":true,"thresholds":{"break":null,"high":80,"low":60},"allowConsoleColors":true,"packageManager":"npm","testFramework":"mocha","tsconfigFile":"tsconfig.json","mutate":["ts/**/!(*.tests).ts"],"files":["ts/**/*.ts","lib/**/*.js"],"mochaOptions":{"require":["ts-node/register","reflect-metadata"],"timeout":0,"files":["ts/**/*.tests.ts"]},"configFile":"stryker.conf.js","tsconfig":{"options":{"removeComments":true,"sourceMap":true,"target":1,"noImplicitAny":true,"module":1,"declaration":true,"noEmitOnError":true,"preserveConstEnums":true,"typeRoots":["C:/.../node_modules/@types","C:/.../node_modules"],"emitDecoratorMetadata":true,"types":["reflect-metadata","jquery","jqueryui","datejs"],"experimentalDecorators":true,"lib":["lib.es2017.d.ts","lib.dom.d.ts"],"configFilePath":"C:/.../tsconfig.json","project":"C:/...","allowUnreachableCode":true,"noUnusedLocals":false,"noUnusedParameters":false},"fileNames":[... removed listed files ...],"typeAcquisition":{"enable":false,"include":[],"exclude":[]},"raw":{"compilerOptions":{"removeComments":true,"sourceMap":true,"target":"es5","noImplicitAny":true,"module":"commonjs","declaration":true,"noEmitOnError":true,"preserveConstEnums":true,"typeRoots":["node_modules/@types","node_modules"],"emitDecoratorMetadata":true,"types":["reflect-metadata","jquery","jqueryui","datejs"],"experimentalDecorators":true,"lib":["es2017","dom"]},"include":["./demo","./resiliency","./ts"],"exclude":["./ts/typings","node_modules"],"compileOnSave":false},"errors":[],"wildcardDirectories":{"C:/.../ts":1},"compileOnSave":false,"configFileSpecs":{"includeSpecs":["./demo","./resiliency","./ts"],"excludeSpecs":["./ts/typings","node_modules"],"validatedIncludeSpecs":["./demo","./resiliency","./ts"],"validatedExcludeSpecs":["./ts/typings","node_modules"],"wildcardDirectories":{"C:/.../ts":1}}}}
16:31:53 (31620) DEBUG ConfigReader Loading config stryker.conf.js
16:31:53 (31620) DEBUG PluginLoader Loading plugins stryker-baseline-reporter (matched with expression stryker-*)
16:31:53 (31620) DEBUG PluginLoader Loading plugins stryker-html-reporter (matched with expression stryker-*)
16:31:53 (31620) DEBUG PluginLoader Loading plugins stryker-javascript-mutator (matched with expression stryker-*)
16:31:53 (31620) DEBUG PluginLoader Loading plugins stryker-mocha-framework (matched with expression stryker-*)
16:31:53 (31620) DEBUG PluginLoader Loading plugins stryker-mocha-runner (matched with expression stryker-*)
16:31:53 (31620) DEBUG PluginLoader Loading plugins stryker-typescript (matched with expression stryker-*)
16:31:53 (31620) DEBUG PluginLoader Loading plugins stryker-baseline-reporter
16:31:53 (31620) DEBUG PluginLoader Loading plugins stryker-html-reporter
16:31:53 (31620) DEBUG PluginLoader Loading plugins stryker-javascript-mutator
16:31:53 (31620) DEBUG PluginLoader Loading plugins stryker-mocha-framework
16:31:53 (31620) DEBUG PluginLoader Loading plugins stryker-mocha-runner
16:31:53 (31620) DEBUG PluginLoader Loading plugins stryker-typescript
16:31:53 (31620) DEBUG MochaOptionsLoader No mocha opts file found, not loading additional mocha options (mochaOptions.opts was not defined).
16:31:53 (31620) INFO TypescriptConfigEditor Loading tsconfig file C:\...\tsconfig.json
16:31:53 (31620) DEBUG TestFrameworkOrchestrator The `coverageAnalysis` setting is "off", not hooking into the test framework to achieve performance benefits.
16:31:54 (31620) INFO InputFileResolver Found 477 of 1033 file(s) to be mutated.
16:31:54 (31620) DEBUG InputFileResolver All input files: [
... removed listed files ...
]
16:31:54 (31620) DEBUG InputFileResolver Files to mutate: [
... removed listed files ...
]
16:31:54 (31620) INFO InitialTestExecutor Starting initial test run. This may take a while.
16:31:54 (31620) DEBUG Sandbox Creating a sandbox for files in C:\...\.stryker-tmp\sandbox9959195
16:31:54 (31620) DEBUG Sandbox Creating test runner 0 using settings {port: 9234}
16:31:54 (31620) DEBUG ChildProcessProxy Starting C:\...\node_modules\stryker\src\test-runner\ChildProcessTestRunnerWorker.js in child process 4196
16:31:55 (31620) DEBUG TimeoutDecorator Starting timeout timer (300000 ms) for a test run
16:31:54 (4196) DEBUG PluginLoader Loading stryker-* from C:\...\node_modules
16:31:54 (4196) DEBUG PluginLoader Loading plugins stryker-baseline-reporter (matched with expression stryker-*)
16:31:54 (4196) DEBUG PluginLoader Loading plugins stryker-html-reporter (matched with expression stryker-*)
16:31:54 (4196) DEBUG PluginLoader Loading plugins stryker-javascript-mutator (matched with expression stryker-*)
16:31:54 (4196) DEBUG PluginLoader Loading plugins stryker-mocha-framework (matched with expression stryker-*)
16:31:54 (4196) DEBUG PluginLoader Loading plugins stryker-mocha-runner (matched with expression stryker-*)
16:31:54 (4196) DEBUG PluginLoader Loading plugins stryker-typescript (matched with expression stryker-*)
16:31:54 (4196) DEBUG PluginLoader Loading plugins stryker-baseline-reporter
16:31:54 (4196) DEBUG PluginLoader Loading plugins stryker-html-reporter
16:31:54 (4196) DEBUG PluginLoader Loading plugins stryker-javascript-mutator
16:31:54 (4196) DEBUG PluginLoader Loading plugins stryker-mocha-framework
16:31:54 (4196) DEBUG PluginLoader Loading plugins stryker-mocha-runner
16:31:55 (4196) DEBUG PluginLoader Loading plugins stryker-typescript
16:31:55 (4196) DEBUG ChildProcessProxyWorker Changing current working directory for this process to C:\...\.stryker-tmp\sandbox9959195
16:31:55 (4196) DEBUG MochaTestRunner Using files: [
... removed listed files ...
]
16:31:58 (4196) DEBUG StrykerMochaReporter Starting Mocha test run
16:32:05 (31620) TRACE ChildProcessProxy handleOrientationChange

16:32:05 (31620) TRACE ChildProcessProxy handleOrientationChange

16:32:05 (31620) TRACE ChildProcessProxy getChildIds did not return an array. Removing all child items.

16:32:14 (4196) DEBUG StrykerMochaReporter Mocha test run completed: 5029/5029 passed
16:32:14 (31620) DEBUG ChildProcessProxy Disposing of worker process 4196
16:32:14 (31620) DEBUG ChildProcessProxy Kill 4196
@nicojs
Copy link
Member

nicojs commented Dec 22, 2018

Thanks a lot @Stemirabo for opening this issue. We don't have access to these scale of projects, so this is greatly appreciated.

For starters, could you try to reduce the number of concurrent test runners? For example: maxConcurrentTestRunners: 2. It should at least proceed to the next step (showing a progress bar and an ETC), as the initial test run succeeded and Stryker was able to generate mutants. Indeed it will take a long time, but once we know it works, we can change up your configuration to improve performance.

@Stemirabo
Copy link
Author

Thanks for the response. Now that I'm back from holiday I've updated to the latest versions of stryker...

+-- stryker@0.34.0
+-- stryker-api@0.23.0
+-- stryker-baseline-reporter@1.0.3
+-- stryker-html-reporter@0.17.0
+-- stryker-mocha-framework@0.14.0
+-- stryker-mocha-runner@0.16.0
+-- stryker-typescript@0.17.0

I also tried lowering the number of concurrent test runners. I tried lowering the number of Concurrent Test Runners and left it run over the weekend. This was with a smaller number of files to be mutated and it eventually made it to the ETC / progress phase. Unfortunately I didn't have logging turned on for this run (which I'm trying to recreate now, but here is the dump it spit out when it died...

<--- Last few GCs --->

[17196:0000022D2991E050]  3910324 ms: Mark-sweep 2352.0 (2397.6) -> 2352.0 (2397.6) MB, 1725.2 / 0.0 ms  last resort GC in old space requested


<--- JS stacktrace --->

==== JS stack trace =========================================

Security context: 0000035C420257C1 <JSObject>
    0: builtin exit frame: parse(this=0000035C42008FF1 <Object map = 00000262F1B02BA1>,000001E834DFAAD1 <Very long string[273779]>)

    1: onread [internal/child_process.js:470] [bytecode=0000013CE59F8549 offset=148](this=0000031B9D3C82A9 <Pipe map = 00000191A6E33A01>,nread=273780,pool=000001E834DFAA21 <Uint8Array map = 000003C55C6B4C39>,recvHandle=0000022E73E022D1 <undefined>)

==== Details ...

FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
 1: node_module_register
 2: v8::internal::FatalProcessOutOfMemory
 3: v8::internal::FatalProcessOutOfMemory
 4: v8::internal::Factory::NewRawOneByteString
 5: v8_inspector::protocol::Schema::API::Domain::fromJSONString
 6: v8_inspector::protocol::Schema::API::Domain::fromJSONString
 7: v8_inspector::protocol::Schema::API::Domain::fromJSONString
 8: v8_inspector::protocol::Schema::API::Domain::fromJSONString
 9: v8_inspector::protocol::Schema::API::Domain::fromJSONString
10: v8_inspector::protocol::Schema::API::Domain::fromJSONString
11: v8_inspector::protocol::Schema::API::Domain::fromJSONString
12: v8_inspector::protocol::Schema::API::Domain::fromJSONString
13: v8_inspector::protocol::Schema::API::Domain::fromJSONString
14: v8_inspector::protocol::Schema::API::Domain::fromJSONString
15: v8_inspector::protocol::Schema::API::Domain::fromJSONString
16: v8_inspector::protocol::Schema::API::Domain::fromJSONString
17: v8_inspector::protocol::Schema::API::Domain::fromJSONString
18: v8_inspector::protocol::Schema::API::Domain::fromJSONString
19: v8_inspector::protocol::Schema::API::Domain::fromJSONString
20: v8_inspector::protocol::Schema::API::Domain::fromJSONString
21: v8_inspector::protocol::Schema::API::Domain::fromJSONString
22: v8::internal::DeferredHandles::Iterate
23: v8_inspector::protocol::Debugger::API::SearchMatch::fromJSONString
24: v8_inspector::protocol::Debugger::API::SearchMatch::fromJSONString
25: 000002D6EA486B21

Not sure how helpful this is, but I'll try and update when I recreate with the file logging on.

@nicojs
Copy link
Member

nicojs commented Jan 10, 2019

I've discussed this case with @simondel . We think the problem is the way we transpile and test the mutants. The process looks like this:

  1. Generate all the mutants
  2. Transpile each mutant (in a child process)
  3. Test each mutant (in a child process)

The problem is that transpiling each mutant is generally a lot faster than testing it. So the amount of work keeps piling up. Each transpile result contains the content of one or more js output files. This essentially is a memory leak.

@Stemirabo could you please help to verify this for us? I've altered the file "MutationTestExecutor.js" with memory logging. It also logs the amount of transpiled mutants (both on level DEBUG). Would you please replace file node_modules/stryker/src/process/MutationTestExecutor.js with the attached file? Please set fileLogLevel: 'debug' in order to assure it is logged to the file. Thanks in advance!

MutationTestExecutor.zip

@Stemirabo
Copy link
Author

Stemirabo commented Jan 10, 2019

EDIT: Sorry I missed your update before posting this one... I'll give that a shot and see what happens.

Here's the trace log file contents for the previous error dump

16:04:13 (29832) INFO ConfigReader Using stryker.conf.js in the current working directory.
16:04:13 (29832) DEBUG PluginLoader Loading stryker-* from C:\.....\node_modules
16:04:13 (29832) DEBUG Stryker Using config: {"mutate":["ts/integration/ui/!(*.tests).ts"],"logLevel":"info","fileLogLevel":"trace","timeoutMS":10000,"timeoutFactor":10,"plugins":["stryker-*"],"port":9234,"reporter":[],"reporters":["html","clear-text","progress"],"coverageAnalysis":"off","testRunner":"mocha","mutator":"typescript","transpilers":[],"maxConcurrentTestRunners":1,"symlinkNodeModules":true,"thresholds":{"break":null,"high":80,"low":60},"allowConsoleColors":true,"packageManager":"npm","htmlReporter":{"baseDir":".stryker-report"},"testFramework":"mocha","tsconfigFile":"tsconfig.json","files":["ts/**/*.ts","lib/**/*.js"],"mochaOptions":{"require":["ts-node/register","reflect-metadata"],"timeout":0,"files":["ts/**/*.tests.ts"]},"configFile":"stryker.conf.js","tsconfig":{"options":{"removeComments":true,"sourceMap":true,"target":1,"noImplicitAny":true,"module":1,"declaration":true,"noEmitOnError":true,"preserveConstEnums":true,"typeRoots":["C:/...../node_modules/@types","C:/...../node_modules"],"emitDecoratorMetadata":true,"types":["reflect-metadata","jquery","jqueryui","datejs"],"experimentalDecorators":true,"lib":["lib.es2017.d.ts","lib.dom.d.ts"],"configFilePath":"C:/...../tsconfig.json","project":"C:/.....","allowUnreachableCode":true,"noUnusedLocals":false,"noUnusedParameters":false},"fileNames":[File List],"typeAcquisition":{"enable":false,"include":[],"exclude":[]},"raw":{"compilerOptions":{"removeComments":true,"sourceMap":true,"target":"es5","noImplicitAny":true,"module":"commonjs","declaration":true,"noEmitOnError":true,"preserveConstEnums":true,"typeRoots":["node_modules/@types","node_modules"],"emitDecoratorMetadata":true,"types":["reflect-metadata","jquery","jqueryui","datejs"],"experimentalDecorators":true,"lib":["es2017","dom"]},"include":["./demo","./resiliency","./ts"],"exclude":["./ts/typings","node_modules"],"compileOnSave":false},"errors":[],"wildcardDirectories":{"C:/...../demo":1,"C:/...../resiliency":1,"C:/...../ts":1},"compileOnSave":false,"configFileSpecs":{"includeSpecs":["./demo","./resiliency","./ts"],"excludeSpecs":["./ts/typings","node_modules"],"validatedIncludeSpecs":["./demo","./resiliency","./ts"],"validatedExcludeSpecs":["./ts/typings","node_modules"],"wildcardDirectories":{"C:/...../demo":1,"C:/...../resiliency":1,"C:/...../ts":1}}}}
16:04:13 (29832) DEBUG ConfigReader Loading config stryker.conf.js
16:04:13 (29832) DEBUG PluginLoader Loading plugins stryker-baseline-reporter (matched with expression stryker-*)
16:04:13 (29832) DEBUG PluginLoader Loading plugins stryker-html-reporter (matched with expression stryker-*)
16:04:13 (29832) DEBUG PluginLoader Loading plugins stryker-mocha-framework (matched with expression stryker-*)
16:04:13 (29832) DEBUG PluginLoader Loading plugins stryker-mocha-runner (matched with expression stryker-*)
16:04:13 (29832) DEBUG PluginLoader Loading plugins stryker-typescript (matched with expression stryker-*)
16:04:13 (29832) DEBUG PluginLoader Loading plugins stryker-baseline-reporter
16:04:13 (29832) DEBUG TestFrameworkOrchestrator The `coverageAnalysis` setting is "off", not hooking into the test framework to achieve performance benefits.
16:04:13 (29832) DEBUG PluginLoader Loading plugins stryker-html-reporter
16:04:13 (29832) DEBUG PluginLoader Loading plugins stryker-mocha-framework
16:04:13 (29832) DEBUG PluginLoader Loading plugins stryker-mocha-runner
16:04:13 (29832) DEBUG PluginLoader Loading plugins stryker-typescript
16:04:13 (29832) DEBUG MochaOptionsLoader No mocha opts file found, not loading additional mocha options (mochaOptions.opts was not defined).
16:04:13 (29832) INFO TypescriptConfigEditor Loading tsconfig file C:\.....\tsconfig.json
16:04:14 (29832) INFO InputFileResolver Found 103 of 967 file(s) to be mutated.
16:04:14 (29832) DEBUG InputFileResolver All input files: [
  File List
]
16:04:14 (29832) DEBUG InputFileResolver Files to mutate: [
  File List
]
16:04:14 (29832) INFO InitialTestExecutor Starting initial test run. This may take a while.
16:04:14 (29832) DEBUG Sandbox Creating a sandbox for files in C:\.....\.stryker-tmp\sandbox2800862
16:04:14 (29832) DEBUG Sandbox Creating test runner 0 using settings {port: 9234}
16:04:14 (29832) DEBUG ChildProcessProxy Starting C:\.....\node_modules\stryker\src\test-runner\ChildProcessTestRunnerWorker.js in child process 38868
16:04:15 (38868) DEBUG PluginLoader Loading stryker-* from C:\.....\node_modules
16:04:15 (38868) DEBUG PluginLoader Loading plugins stryker-baseline-reporter (matched with expression stryker-*)
16:04:15 (38868) DEBUG PluginLoader Loading plugins stryker-html-reporter (matched with expression stryker-*)
16:04:15 (38868) DEBUG PluginLoader Loading plugins stryker-mocha-framework (matched with expression stryker-*)
16:04:15 (38868) DEBUG PluginLoader Loading plugins stryker-mocha-runner (matched with expression stryker-*)
16:04:15 (38868) DEBUG PluginLoader Loading plugins stryker-typescript (matched with expression stryker-*)
16:04:15 (38868) DEBUG PluginLoader Loading plugins stryker-baseline-reporter
16:04:15 (38868) DEBUG PluginLoader Loading plugins stryker-html-reporter
16:04:15 (38868) DEBUG PluginLoader Loading plugins stryker-mocha-framework
16:04:15 (38868) DEBUG PluginLoader Loading plugins stryker-mocha-runner
16:04:15 (38868) DEBUG PluginLoader Loading plugins stryker-typescript
16:04:15 (38868) DEBUG ChildProcessProxyWorker Changing current working directory for this process to C:\.....\.stryker-tmp\sandbox2800862
16:04:15 (38868) DEBUG MochaTestRunner Using files: [
  File List
]
16:04:15 (29832) DEBUG TimeoutDecorator Starting timeout timer (300000 ms) for a test run
16:04:19 (29832) TRACE ChildProcessProxy `sandbox.create()` is deprecated. Use default sandbox at `sinon.sandbox` or create new sandboxes with `sinon.createSandbox()`

16:04:19 (38868) DEBUG StrykerMochaReporter Starting Mocha test run
16:04:27 (29832) TRACE ChildProcessProxy handleOrientationChange

16:04:27 (29832) TRACE ChildProcessProxy handleOrientationChange

16:04:28 (29832) TRACE ChildProcessProxy getChildIds did not return an array. Removing all child items.

16:04:38 (38868) DEBUG StrykerMochaReporter Mocha test run completed: 5120/5120 passed
16:04:38 (29832) DEBUG ChildProcessProxy Disposing of worker process 38868
16:04:38 (29832) DEBUG ChildProcessProxy Kill 38868
16:04:38 (29832) INFO InitialTestExecutor Initial test run succeeded. Ran 5120 tests in 24 seconds (net 19180 ms, overhead 3748 ms).
16:04:39 (29832) INFO Stryker 9043 Mutant(s) generated
17:13:01 (29832) INFO SandboxPool Creating 1 test runners (based on maxConcurrentTestRunners config)
17:13:01 (29832) DEBUG Sandbox Creating a sandbox for files in C:\.....\.stryker-tmp\sandbox8524868
17:13:47 (29832) DEBUG Sandbox Creating test runner 0 using settings {port: 9234}
17:13:47 (29832) DEBUG ChildProcessProxy Starting C:\.....\node_modules\stryker\src\test-runner\ChildProcessTestRunnerWorker.js in child process 18812
17:13:48 (18812) DEBUG PluginLoader Loading stryker-* from C:\.....\node_modules
17:13:48 (18812) DEBUG PluginLoader Loading plugins stryker-baseline-reporter (matched with expression stryker-*)
17:13:48 (18812) DEBUG PluginLoader Loading plugins stryker-html-reporter (matched with expression stryker-*)
17:13:48 (18812) DEBUG PluginLoader Loading plugins stryker-mocha-framework (matched with expression stryker-*)
17:13:48 (18812) DEBUG PluginLoader Loading plugins stryker-mocha-runner (matched with expression stryker-*)
17:13:48 (18812) DEBUG PluginLoader Loading plugins stryker-typescript (matched with expression stryker-*)
17:13:48 (18812) DEBUG PluginLoader Loading plugins stryker-baseline-reporter
17:13:48 (18812) DEBUG PluginLoader Loading plugins stryker-html-reporter
17:13:48 (18812) DEBUG PluginLoader Loading plugins stryker-mocha-framework
17:13:48 (18812) DEBUG PluginLoader Loading plugins stryker-mocha-runner
17:13:48 (18812) DEBUG PluginLoader Loading plugins stryker-typescript
17:13:48 (18812) DEBUG ChildProcessProxyWorker Changing current working directory for this process to C:\.....\.stryker-tmp\sandbox8524868
17:13:49 (18812) DEBUG MochaTestRunner Using files: [
  File List
]
17:13:57 (29832) DEBUG TimeoutDecorator Starting timeout timer (205548 ms) for a test run

17:14:00 (18812) DEBUG StrykerMochaReporter Starting Mocha test run
17:14:07 (18812) TRACE StrykerMochaReporter Test failed: AppStyler Debug should add the class when BUILD_TYPE is debug. Error: expected [] to include 'debug'
17:14:07 (18812) DEBUG StrykerMochaReporter Mocha test run completed: 2163/2164 passed

@Stemirabo
Copy link
Author

Ok I ran it again with your modified file like you requested. Same output except it spit out: "DEBUG MutationTestExecutor Transpiled mutants: 1. Memory: 2376.39 MB" after the first mutant test run and then the process died/ran out of memory.

Here's the full logfile:

17:48:00 (34092) INFO ConfigReader Using stryker.conf.js in the current working directory.
17:48:00 (34092) DEBUG PluginLoader Loading stryker-* from C:\.....\node_modules
17:48:00 (34092) DEBUG Stryker Using config: {"mutate":["ts/integration/ui/!(*.tests).ts"],"logLevel":"info","fileLogLevel":"debug","timeoutMS":10000,"timeoutFactor":10,"plugins":["stryker-*"],"port":9234,"reporter":[],"reporters":["html","clear-text","progress"],"coverageAnalysis":"off","testRunner":"mocha","mutator":"typescript","transpilers":[],"maxConcurrentTestRunners":1,"symlinkNodeModules":true,"thresholds":{"break":null,"high":80,"low":60},"allowConsoleColors":true,"packageManager":"npm","htmlReporter":{"baseDir":".stryker-report"},"testFramework":"mocha","tsconfigFile":"tsconfig.json","files":["ts/**/*.ts","lib/**/*.js","!ts/test/calculator.*"],"mochaOptions":{"require":["ts-node/register","reflect-metadata"],"timeout":0,"files":["ts/**/*.tests.ts"]},"configFile":"stryker.conf.js","tsconfig":{"options":{"removeComments":true,"sourceMap":true,"target":1,"noImplicitAny":true,"module":1,"declaration":true,"noEmitOnError":true,"preserveConstEnums":true,"typeRoots":["C:/...../node_modules/@types","C:/...../node_modules"],"emitDecoratorMetadata":true,"types":["reflect-metadata","jquery","jqueryui","datejs"],"experimentalDecorators":true,"lib":["lib.es2017.d.ts","lib.dom.d.ts"],"configFilePath":"C:/...../tsconfig.json","project":"C:/.....","allowUnreachableCode":true,"noUnusedLocals":false,"noUnusedParameters":false},"fileNames":[File List],"typeAcquisition":{"enable":false,"include":[],"exclude":[]},"raw":{"compilerOptions":{"removeComments":true,"sourceMap":true,"target":"es5","noImplicitAny":true,"module":"commonjs","declaration":true,"noEmitOnError":true,"preserveConstEnums":true,"typeRoots":["node_modules/@types","node_modules"],"emitDecoratorMetadata":true,"types":["reflect-metadata","jquery","jqueryui","datejs"],"experimentalDecorators":true,"lib":["es2017","dom"]},"include":["./demo","./resiliency","./ts"],"exclude":["./ts/typings","node_modules"],"compileOnSave":false},"errors":[],"wildcardDirectories":{"C:/...../demo":1,"C:/...../resiliency":1,"C:/...../ts":1},"compileOnSave":false,"configFileSpecs":{"includeSpecs":["./demo","./resiliency","./ts"],"excludeSpecs":["./ts/typings","node_modules"],"validatedIncludeSpecs":["./demo","./resiliency","./ts"],"validatedExcludeSpecs":["./ts/typings","node_modules"],"wildcardDirectories":{"C:/...../demo":1,"C:/...../resiliency":1,"C:/...../ts":1}}}}
17:48:00 (34092) DEBUG ConfigReader Loading config stryker.conf.js
17:48:00 (34092) DEBUG PluginLoader Loading plugins stryker-baseline-reporter (matched with expression stryker-*)
17:48:00 (34092) DEBUG PluginLoader Loading plugins stryker-html-reporter (matched with expression stryker-*)
17:48:00 (34092) DEBUG PluginLoader Loading plugins stryker-mocha-framework (matched with expression stryker-*)
17:48:00 (34092) DEBUG PluginLoader Loading plugins stryker-mocha-runner (matched with expression stryker-*)
17:48:00 (34092) DEBUG PluginLoader Loading plugins stryker-typescript (matched with expression stryker-*)
17:48:00 (34092) DEBUG PluginLoader Loading plugins stryker-baseline-reporter
17:48:00 (34092) DEBUG PluginLoader Loading plugins stryker-html-reporter
17:48:00 (34092) DEBUG PluginLoader Loading plugins stryker-mocha-framework
17:48:00 (34092) DEBUG PluginLoader Loading plugins stryker-mocha-runner
17:48:00 (34092) DEBUG PluginLoader Loading plugins stryker-typescript
17:48:00 (34092) DEBUG MochaOptionsLoader No mocha opts file found, not loading additional mocha options (mochaOptions.opts was not defined).
17:48:00 (34092) INFO TypescriptConfigEditor Loading tsconfig file C:\.....\tsconfig.json
17:48:00 (34092) DEBUG TestFrameworkOrchestrator The `coverageAnalysis` setting is "off", not hooking into the test framework to achieve performance benefits.
17:48:01 (34092) INFO InputFileResolver Found 103 of 967 file(s) to be mutated.
17:48:01 (34092) DEBUG InputFileResolver All input files: [
  File List
]
17:48:01 (34092) DEBUG InputFileResolver Files to mutate: [
  File List
]
17:48:01 (34092) INFO InitialTestExecutor Starting initial test run. This may take a while.
17:48:01 (34092) DEBUG Sandbox Creating a sandbox for files in C:\.....\.stryker-tmp\sandbox6550540
17:48:01 (34092) DEBUG Sandbox Creating test runner 0 using settings {port: 9234}
17:48:01 (34092) DEBUG ChildProcessProxy Starting C:\.....\node_modules\stryker\src\test-runner\ChildProcessTestRunnerWorker.js in child process 8724
17:48:01 (8724) DEBUG PluginLoader Loading stryker-* from C:\.....\node_modules
17:48:01 (8724) DEBUG PluginLoader Loading plugins stryker-baseline-reporter (matched with expression stryker-*)
17:48:01 (8724) DEBUG PluginLoader Loading plugins stryker-html-reporter (matched with expression stryker-*)
17:48:01 (8724) DEBUG PluginLoader Loading plugins stryker-mocha-framework (matched with expression stryker-*)
17:48:01 (8724) DEBUG PluginLoader Loading plugins stryker-mocha-runner (matched with expression stryker-*)
17:48:01 (8724) DEBUG PluginLoader Loading plugins stryker-typescript (matched with expression stryker-*)
17:48:01 (8724) DEBUG PluginLoader Loading plugins stryker-baseline-reporter
17:48:01 (8724) DEBUG PluginLoader Loading plugins stryker-html-reporter
17:48:01 (8724) DEBUG PluginLoader Loading plugins stryker-mocha-framework
17:48:01 (8724) DEBUG PluginLoader Loading plugins stryker-mocha-runner
17:48:01 (8724) DEBUG PluginLoader Loading plugins stryker-typescript
17:48:02 (8724) DEBUG ChildProcessProxyWorker Changing current working directory for this process to C:\.....\.stryker-tmp\sandbox6550540
17:48:02 (8724) DEBUG MochaTestRunner Using files: [
  File List
]
17:48:02 (34092) DEBUG TimeoutDecorator Starting timeout timer (300000 ms) for a test run
17:48:05 (8724) DEBUG StrykerMochaReporter Starting Mocha test run
17:48:22 (8724) DEBUG StrykerMochaReporter Mocha test run completed: 5120/5120 passed
17:48:22 (34092) DEBUG ChildProcessProxy Disposing of worker process 8724
17:48:22 (34092) DEBUG ChildProcessProxy Kill 8724
17:48:22 (34092) INFO InitialTestExecutor Initial test run succeeded. Ran 5120 tests in 21 seconds (net 16985 ms, overhead 3078 ms).
17:48:23 (34092) INFO Stryker 9043 Mutant(s) generated
18:54:42 (34092) INFO SandboxPool Creating 1 test runners (based on maxConcurrentTestRunners config)
18:54:42 (34092) DEBUG Sandbox Creating a sandbox for files in C:\.....\.stryker-tmp\sandbox5922765
18:55:28 (34092) DEBUG Sandbox Creating test runner 0 using settings {port: 9234}
18:55:28 (34092) DEBUG ChildProcessProxy Starting C:\.....\node_modules\stryker\src\test-runner\ChildProcessTestRunnerWorker.js in child process 43432
18:55:28 (43432) DEBUG PluginLoader Loading stryker-* from C:\.....\node_modules
18:55:28 (43432) DEBUG PluginLoader Loading plugins stryker-baseline-reporter (matched with expression stryker-*)
18:55:28 (43432) DEBUG PluginLoader Loading plugins stryker-html-reporter (matched with expression stryker-*)
18:55:28 (43432) DEBUG PluginLoader Loading plugins stryker-mocha-framework (matched with expression stryker-*)
18:55:28 (43432) DEBUG PluginLoader Loading plugins stryker-mocha-runner (matched with expression stryker-*)
18:55:28 (43432) DEBUG PluginLoader Loading plugins stryker-typescript (matched with expression stryker-*)
18:55:28 (43432) DEBUG PluginLoader Loading plugins stryker-baseline-reporter
18:55:28 (43432) DEBUG PluginLoader Loading plugins stryker-html-reporter
18:55:28 (43432) DEBUG PluginLoader Loading plugins stryker-mocha-framework
18:55:28 (43432) DEBUG PluginLoader Loading plugins stryker-mocha-runner
18:55:28 (43432) DEBUG PluginLoader Loading plugins stryker-typescript
18:55:28 (43432) DEBUG ChildProcessProxyWorker Changing current working directory for this process to C:\.....\.stryker-tmp\sandbox5922765
18:55:29 (43432) DEBUG MochaTestRunner Using files: [
  File List
]
18:55:31 (34092) DEBUG MutationTestExecutor Transpiled mutants: 1. Memory: 2376.39 MB
18:55:37 (34092) DEBUG TimeoutDecorator Starting timeout timer (182928 ms) for a test run
18:55:40 (43432) DEBUG StrykerMochaReporter Starting Mocha test run
18:55:46 (43432) DEBUG StrykerMochaReporter Mocha test run completed: 2163/2164 passed

Here's the console dump:

17:48:23 (34092) INFO Stryker 9043 Mutant(s) generated
18:54:42 (34092) INFO SandboxPool Creating 1 test runners (based on maxConcurrentTestRunners config)

<--- Last few GCs --->

[34092:000001F9370C9850]  4083969 ms: Mark-sweep 2377.1 (2424.1) -> 2377.1 (2424.1) MB, 1824.2 / 0.0 ms  last resort GC in old space requested


<--- JS stacktrace --->

==== JS stack trace =========================================

Security context: 00000334821257C1 <JSObject>
    0: builtin exit frame: parse(this=0000033482108FF1 <Object map = 000001A46F582BA1>,00000088B7AFF199 <Very long string[427885]>)

    1: onread [internal/child_process.js:470] [bytecode=000001E862DFC949 offset=148](this=00000152068C4A41 <Pipe map = 00000135B193AB19>,nread=427886,pool=00000088B7AFF0E9 <Uint8Array map = 0000012FF9FC2A49>,recvHandle=00000027118822D1 <undefined>)

==== Details ...

FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
 1: node_module_register
 2: v8::internal::FatalProcessOutOfMemory
 3: v8::internal::FatalProcessOutOfMemory
 4: v8::internal::Factory::NewRawOneByteString
 5: v8_inspector::protocol::Schema::API::Domain::fromJSONString
 6: v8_inspector::protocol::Schema::API::Domain::fromJSONString
 7: v8_inspector::protocol::Schema::API::Domain::fromJSONString
 8: v8_inspector::protocol::Schema::API::Domain::fromJSONString
 9: v8_inspector::protocol::Schema::API::Domain::fromJSONString
10: v8_inspector::protocol::Schema::API::Domain::fromJSONString
11: v8_inspector::protocol::Schema::API::Domain::fromJSONString
12: v8_inspector::protocol::Schema::API::Domain::fromJSONString
13: v8_inspector::protocol::Schema::API::Domain::fromJSONString
14: v8_inspector::protocol::Schema::API::Domain::fromJSONString
15: v8_inspector::protocol::Schema::API::Domain::fromJSONString
16: v8_inspector::protocol::Schema::API::Domain::fromJSONString
17: v8_inspector::protocol::Schema::API::Domain::fromJSONString
18: v8_inspector::protocol::Schema::API::Domain::fromJSONString
19: v8_inspector::protocol::Schema::API::Domain::fromJSONString
20: v8_inspector::protocol::Schema::API::Domain::fromJSONString
21: v8_inspector::protocol::Schema::API::Domain::fromJSONString
22: v8_inspector::protocol::Schema::API::Domain::fromJSONString
23: v8::internal::DeferredHandles::Iterate
24: v8_inspector::protocol::Debugger::API::SearchMatch::fromJSONString
25: v8_inspector::protocol::Debugger::API::SearchMatch::fromJSONString
26: 0000035E76006B21

@simondel
Copy link
Member

This may be fixed with the latest release. Could you try to upgrade to the latest v0.x release of Stryker?

@simondel simondel added the ⁉ Question Further information is requested label Feb 13, 2019
@Stemirabo
Copy link
Author

Hi. Sorry for the slow reply. I've updated to the latest packages...

"stryker": "0.35.1",
"stryker-api": "0.24.1",
"stryker-html-reporter": "0.18.1",
"stryker-mocha-framework": "0.15.1",
"stryker-mocha-runner": "0.17.1",
"stryker-typescript": "0.18.1",

...and reran the same build with "--fileLogLevel trace --logLevel debug". No noticeable difference on my end. Maybe something in the logs will help you guys though.

logfile:

17:12:46 (11836) INFO ConfigReader Using stryker.conf.js in the current working directory.
17:12:46 (11836) DEBUG BroadcastReporter Broadcasting to reporters ["html","clear-text","progress"]
17:12:46 (11836) DEBUG ConfigReader Loading config stryker.conf.js
17:12:46 (11836) DEBUG PluginLoader Loading stryker-* from C:\.....\node_modules
17:12:46 (11836) DEBUG PluginLoader Loading plugins stryker-html-reporter (matched with expression stryker-*)
17:12:46 (11836) DEBUG PluginLoader Loading plugins stryker-mocha-framework (matched with expression stryker-*)
17:12:46 (11836) DEBUG PluginLoader Loading plugins stryker-mocha-runner (matched with expression stryker-*)
17:12:46 (11836) DEBUG PluginLoader Loading plugins stryker-typescript (matched with expression stryker-*)
17:12:46 (11836) DEBUG PluginLoader Loading plugins stryker-html-reporter
17:12:46 (11836) DEBUG PluginLoader Loading plugins stryker-mocha-framework
17:12:46 (11836) DEBUG PluginLoader Loading plugins stryker-mocha-runner
17:12:46 (11836) DEBUG PluginLoader Loading plugins stryker-typescript
17:12:46 (11836) DEBUG PluginLoader Loading plugins C:\.....\node_modules\stryker\src\reporters\index.js
17:12:46 (11836) DEBUG PluginLoader Loading plugins C:\.....\node_modules\stryker\src\mutators\index.js
17:12:46 (11836) DEBUG MochaOptionsLoader No mocha opts file found, not loading additional mocha options (mochaOptions.opts was not defined).
17:12:46 (11836) INFO TypescriptConfigEditor Loading tsconfig file C:\.....\tsconfig.json
17:12:47 (11836) INFO InputFileResolver Found 103 of 982 file(s) to be mutated.
17:12:47 (11836) DEBUG InputFileResolver All input files: [
	File List
]
17:12:47 (11836) DEBUG InputFileResolver Files to mutate: [
	File List
]
17:12:47 (11836) DEBUG TestFrameworkOrchestrator The `coverageAnalysis` setting is "off", not hooking into the test framework to achieve performance benefits.
17:12:47 (11836) INFO InitialTestExecutor Starting initial test run. This may take a while.
17:12:47 (11836) DEBUG Sandbox Creating a sandbox for files in C:\.....\.stryker-tmp\sandbox5657331
17:12:47 (11836) DEBUG Sandbox Creating test runner 0
17:12:47 (11836) DEBUG ChildProcessProxy Starting C:\.....\node_modules\stryker\src\test-runner\ChildProcessTestRunnerWorker.js in child process 18860
17:12:48 (18860) DEBUG ChildProcessProxyWorker Changing current working directory for this process to C:\.....\.stryker-tmp\sandbox5657331
17:12:48 (18860) DEBUG PluginLoader Loading stryker-* from C:\.....\node_modules
17:12:48 (18860) DEBUG PluginLoader Loading plugins stryker-html-reporter (matched with expression stryker-*)
17:12:48 (18860) DEBUG PluginLoader Loading plugins stryker-mocha-framework (matched with expression stryker-*)
17:12:48 (18860) DEBUG PluginLoader Loading plugins stryker-mocha-runner (matched with expression stryker-*)
17:12:48 (18860) DEBUG PluginLoader Loading plugins stryker-typescript (matched with expression stryker-*)
17:12:48 (18860) DEBUG PluginLoader Loading plugins stryker-html-reporter
17:12:48 (18860) DEBUG PluginLoader Loading plugins stryker-mocha-framework
17:12:48 (18860) DEBUG PluginLoader Loading plugins stryker-mocha-runner
17:12:48 (18860) DEBUG PluginLoader Loading plugins stryker-typescript
17:12:48 (18860) DEBUG PluginLoader Loading plugins C:\.....\node_modules\stryker\src\reporters\index.js
17:12:48 (18860) DEBUG PluginLoader Loading plugins C:\.....\node_modules\stryker\src\mutators\index.js
17:12:48 (18860) DEBUG MochaTestRunner Using files: [
	File List
]
17:12:48 (11836) DEBUG TimeoutDecorator Starting timeout timer (300000 ms) for a test run
17:12:52 (18860) DEBUG MochaTestRunner Starting Mocha test run
17:13:00 (11836) TRACE ChildProcessProxy handleOrientationChange

17:13:00 (11836) TRACE ChildProcessProxy handleOrientationChange

17:13:00 (11836) TRACE ChildProcessProxy getChildIds did not return an array. Removing all child items.

17:13:11 (18860) DEBUG MochaTestRunner Mocha test run completed: 5213/5213 passed
17:13:11 (11836) DEBUG ChildProcessProxy Disposing of worker process 18860
17:13:11 (11836) DEBUG ChildProcessProxy Kill 18860
17:13:11 (11836) INFO InitialTestExecutor Initial test run succeeded. Ran 5213 tests in 24 seconds (net 18680 ms, overhead 3717 ms).
17:13:12 (11836) INFO MutatorFacade 9087 Mutant(s) generated
18:27:35 (11836) INFO SandboxPool Creating 1 test runners (based on maxConcurrentTestRunners config)
18:27:35 (11836) DEBUG Sandbox Creating a sandbox for files in C:\.....\.stryker-tmp\sandbox6791285
18:27:46 (11836) DEBUG Sandbox Creating test runner 0
18:27:46 (11836) DEBUG ChildProcessProxy Starting C:\.....\node_modules\stryker\src\test-runner\ChildProcessTestRunnerWorker.js in child process 22632
18:27:46 (22632) DEBUG ChildProcessProxyWorker Changing current working directory for this process to C:\.....\.stryker-tmp\sandbox6791285
18:27:46 (22632) DEBUG PluginLoader Loading stryker-* from C:\.....\node_modules
18:27:46 (22632) DEBUG PluginLoader Loading plugins stryker-html-reporter (matched with expression stryker-*)
18:27:46 (22632) DEBUG PluginLoader Loading plugins stryker-mocha-framework (matched with expression stryker-*)
18:27:46 (22632) DEBUG PluginLoader Loading plugins stryker-mocha-runner (matched with expression stryker-*)
18:27:46 (22632) DEBUG PluginLoader Loading plugins stryker-typescript (matched with expression stryker-*)
18:27:46 (22632) DEBUG PluginLoader Loading plugins stryker-html-reporter
18:27:46 (22632) DEBUG PluginLoader Loading plugins stryker-mocha-framework
18:27:46 (22632) DEBUG PluginLoader Loading plugins stryker-mocha-runner
18:27:46 (22632) DEBUG PluginLoader Loading plugins stryker-typescript

Console Dump

17:13:12 (11836) INFO MutatorFacade 9087 Mutant(s) generated
18:27:35 (11836) INFO SandboxPool Creating 1 test runners (based on maxConcurrentTestRunners config)
18:27:35 (11836) DEBUG Sandbox Creating a sandbox for files in C:\Code\ice-stryker\FrontEnd\.stryker-tmp\sandbox6791285
18:27:46 (11836) DEBUG Sandbox Creating test runner 0
18:27:46 (11836) DEBUG ChildProcessProxy Starting C:\Code\ice-stryker\FrontEnd\node_modules\stryker\src\test-runner\ChildProcessTestRunnerWorker.js in child process 22632
18:27:46 (22632) DEBUG ChildProcessProxyWorker Changing current working directory for this process to C:\Code\ice-stryker\FrontEnd\.stryker-tmp\sandbox6791285
18:27:46 (22632) DEBUG PluginLoader Loading stryker-* from C:\Code\ice-stryker\FrontEnd\node_modules
18:27:46 (22632) DEBUG PluginLoader Loading plugins stryker-html-reporter (matched with expression stryker-*)
18:27:46 (22632) DEBUG PluginLoader Loading plugins stryker-mocha-framework (matched with expression stryker-*)
18:27:46 (22632) DEBUG PluginLoader Loading plugins stryker-mocha-runner (matched with expression stryker-*)
18:27:46 (22632) DEBUG PluginLoader Loading plugins stryker-typescript (matched with expression stryker-*)
18:27:46 (22632) DEBUG PluginLoader Loading plugins stryker-html-reporter
18:27:46 (22632) DEBUG PluginLoader Loading plugins stryker-mocha-framework
18:27:46 (22632) DEBUG PluginLoader Loading plugins stryker-mocha-runner
18:27:46 (22632) DEBUG PluginLoader Loading plugins stryker-typescript
18:27:47 (22632) DEBUG PluginLoader Loading plugins C:\Code\ice-stryker\FrontEnd\node_modules\stryker\src\reporters\index.js
18:27:47 (22632) DEBUG PluginLoader Loading plugins C:\Code\ice-stryker\FrontEnd\node_modules\stryker\src\mutators\index.js
18:27:50 (22632) DEBUG MochaTestRunner Using files: [
	File List
]
18:27:57 (11836) DEBUG TimeoutDecorator Starting timeout timer (200517 ms) for a test run
18:28:01 (22632) DEBUG MochaTestRunner Starting Mocha test run
18:28:07 (22632) DEBUG MochaTestRunner Mocha test run completed: 2235/2236 passed
18:28:07 (22632) DEBUG MochaTestRunner Mocha test run completed: 2235/2236 passed

<--- Last few GCs --->

[11836:00000259F2438EE0]  4532374 ms: Mark-sweep 2337.1 (2382.1) -> 2337.1 (2382.1) MB, 2389.5 / 0.0 ms  last resort GC in old space requested


<--- JS stacktrace --->

==== JS stack trace =========================================

Security context: 0000026FC63A57C1 <JSObject>
    0: builtin exit frame: parse(this=0000026FC6388FF1 <Object map = 0000033996A82BA1>,000000DFFF9EE501 <Very long string[331094]>)

    1: onread [internal/child_process.js:470] [bytecode=000001FBA117C751 offset=148](this=000000DFFF9A3231 <Pipe map = 000000E6FE0E59E9>,nread=331095,pool=000000DFFF9EE7D9 <Uint8Array map = 000002A06C384721>,recvHandle=0000017217E022D1 <undefined>)

==== Details ...

FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
 1: node_module_register
 2: v8::internal::FatalProcessOutOfMemory
 3: v8::internal::FatalProcessOutOfMemory
 4: v8::internal::Factory::NewRawOneByteString
 5: v8_inspector::protocol::Schema::API::Domain::fromJSONString
 6: v8_inspector::protocol::Schema::API::Domain::fromJSONString
 7: v8_inspector::protocol::Schema::API::Domain::fromJSONString
 8: v8_inspector::protocol::Schema::API::Domain::fromJSONString
 9: v8_inspector::protocol::Schema::API::Domain::fromJSONString
10: v8_inspector::protocol::Schema::API::Domain::fromJSONString
11: v8_inspector::protocol::Schema::API::Domain::fromJSONString
12: v8_inspector::protocol::Schema::API::Domain::fromJSONString
13: v8_inspector::protocol::Schema::API::Domain::fromJSONString
14: v8_inspector::protocol::Schema::API::Domain::fromJSONString
15: v8_inspector::protocol::Schema::API::Domain::fromJSONString
16: v8_inspector::protocol::Schema::API::Domain::fromJSONString
17: v8_inspector::protocol::Schema::API::Domain::fromJSONString
18: v8_inspector::protocol::Schema::API::Domain::fromJSONString
19: v8_inspector::protocol::Schema::API::Domain::fromJSONString
20: v8_inspector::protocol::Schema::API::Domain::fromJSONString
21: v8_inspector::protocol::Schema::API::Domain::fromJSONString
22: v8::internal::DeferredHandles::Iterate
23: v8_inspector::protocol::Debugger::API::SearchMatch::fromJSONString
24: v8_inspector::protocol::Debugger::API::SearchMatch::fromJSONString
25: 00000158D5B86B21

@brodycj
Copy link

brodycj commented Oct 18, 2019

I had similar troubles with the popular Prettier code formatting tool, see prettier/prettier#6681 (I limited it to CLI testing for now, as an unfortunate workaround). This was on a Vultr 16-CPU virtual server with 64 GB RAM, not good!

@brodycj
Copy link

brodycj commented Oct 18, 2019

This seems to help run Stryker on all source files in Prettier:

node --max-old-space-size=40000 ./node_modules/.bin/stryker run

ref: https://stackoverflow.com/questions/38558989/node-js-heap-out-of-memory

It may be possible to use NODE_OPTIONS instead, as documented in the second answer. For further investigation, when I get a chance.

@bartekleon
Copy link
Member

@brodybits It makes sense tho, since we store quite a lot of data, it may weight a lot. But 1.7GB, I dunno. There should be some tools to check how much data is used. I am really looking for your results!

@brodycj
Copy link

brodycj commented Oct 18, 2019

Yes but not such a good experience. I am discussing my progress in hopes that some others will start watching, experimenting, and contributing ideas to help us all find a good solution.

I have a feeling (and nothing more than a feeling) that Stryker could use some improvement in resource allocation and usage. I think it should be possible to break things into separate worker threads or processes that can work together through promises.

I also have a feeling that Node.js could be a little smarter about using the system resources available.

I will continue to experiment and explore as much as I can on this behavior.

@brodycj
Copy link

brodycj commented Oct 18, 2019 via email

@bartekleon
Copy link
Member

I guess the easiest way to get into stryker is to play with it just a bit. After doing several commits, and understanding what it is doing and how it works you will be pretty good at it. It isn't that hard to get I guess. While learning how stryker works I also managed to learn whole TS :P Also if you have questions you are more than welcome. We will teach / show how it works

brodycj pushed a commit to brodycj/prettier that referenced this issue Nov 4, 2019
as discussed in:

stryker-mutator/stryker-js#1284 (comment)

ref: https://stackoverflow.com/questions/38558989/node-js-heap-out-of-memory

This kind of a bug workaround was needed in some cases,
running Stryker on the following artifact for example:
src/language-js/printer-estree.js
@simondel
Copy link
Member

Hi! I'm closing this issue for now. If it still persists with Stryker version 4, please open a new issue. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
⁉ Question Further information is requested
Projects
None yet
Development

No branches or pull requests

5 participants