Azure Devops builds failing - Javascript Heap out of memory
codehippie1 opened this issue · 9 comments
Getting "Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory" on all azure builds. Local builds are fine.
PS: I have seen Issue# 262
What did I try?
- I tried all steps listed on Issue 262
- Tried all solutions listed at https://developercommunity.visualstudio.com/content/problem/398343/azure-devops-pipeline-fatal-error-ineffective-mark.html
- Edited csproject msbuild task
RunWebpack
to addnode --max_old_space_size=4096
. I see this gets executed twice andmax_old_space_size
is being ignored the second time. See below error.
<Target Name="RunWebpack" AfterTargets="ComputeFilesToPublish">
<Exec Command="npm install" />
<Exec Command="node --max_old_space_size=4096 node_modules/webpack/bin/webpack.js --config webpack.config.vendor.js --env.prod" />
<Exec Command="node --max_old_space_size=4096 node_modules/webpack/bin/webpack.js --env.prod" />
<!-- Include the newly-built files in the publish output -->
<ItemGroup>
<DistFiles Include="wwwroot\dist\**; ClientApp\dist\**" />
<ResolvedFileToPublish Include="@(DistFiles->'%(FullPath)')" Exclude="@(ResolvedFileToPublish)">
<RelativePath>%(DistFiles.Identity)</RelativePath>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</ResolvedFileToPublish>
</ItemGroup>
</Target>
Exact Error:
Getting error at "RunWebpackBuild"
EXEC(0,0): Error : Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
Web.csproj(119,5): Error MSB3073: The command "node node_modules/webpack/bin/webpack.js --env.prod" exited with code 134.
Process 'msbuild.exe' exited with code '1'.
Location of Error:
node node_modules/webpack/bin/webpack.js --config webpack.config.vendor.js --env.prod
env = {"prod":true}
Hash: 2e377ce94a017387bb5e67cbd26fb64a7dcb8f06
Version: webpack 4.20.2
Child
Hash: 2e377ce94a017387bb5e
Time: 2455ms
Built at: 07/31/2019 6:47:48 PM
Asset Size Chunks Chunk Names
vendor.js 273 KiB 0 [emitted] [big] vendor
Entrypoint vendor [big] = vendor.js
Child
Hash: 67cbd26fb64a7dcb8f06
Time: 17716ms
Built at: 07/31/2019 6:48:03 PM
Asset Size Chunks Chunk Names
vendor.js 1.9 MiB 0 [emitted] vendor
Entrypoint vendor = vendor.js
node node_modules/webpack/bin/webpack.js --env.prod
[error]EXEC(0,0): Error : Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
[debug]Processed: vso[task.logissue type=Error;sourcepath=EXEC;linenumber=0;columnnumber=0;code=;]Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
EXEC : FATAL error : Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory [D:\a\3\s\SCACostingProgram\MAIN\SCACP\SCACP.Web\SCACP.Web.csproj]
1: 00007FF79553C6AA v8::internal::GCIdleTimeHandler::GCIdleTimeHandler+4506
2: 00007FF795517416 node::MakeCallback+4534
3: 00007FF795517D90 node_module_register+2032
4: 00007FF79583189E v8::internal::FatalProcessOutOfMemory+846
5: 00007FF7958317CF v8::internal::FatalProcessOutOfMemory+639
6: 00007FF795A17F94 v8::internal::Heap::MaxHeapGrowingFactor+9620
7: 00007FF795A0EF76 v8::internal::ScavengeJob::operator=+24550
8: 00007FF795A0D5CC v8::internal::ScavengeJob::operator=+17980
9: 00007FF795A16317 v8::internal::Heap::MaxHeapGrowingFactor+2327
10: 00007FF795A16396 v8::internal::Heap::MaxHeapGrowingFactor+2454
11: 00007FF795B40637 v8::internal::Factory::NewFillerObject+55
12: 00007FF795BBD826 v8::internal::operator<<+73494
13: 000002B2769DC5C1
I do not know why but I got this error last week. I fixed our automated build by updating the webpack script as follows (I put a random higher number).
"build:webpack": "webpack --max_old_space_size=16384 --progress --color",
However, later I read that apparently, the correct approach is to set an environment variable
NODE_OPTIONS=--max_old_space_size=16384
Hope it helps.
@alexbenitez I have tried
"build:webpack": "webpack --max_old_space_size=16384 --progress --color",
and it didnt work.
How to set the environment variable for Azure DevOps build agents? Where does the line of code you show go, file, location etc?
@alexbenitez I just added a Azure powershell task to pipeline, just before build to set environment variable at machine level. It didn't work either.
See YAML below
steps:
- task: AzurePowerShell@3
displayName: 'Azure PowerShell script: InlineScript'
inputs:
azureSubscription: 'NYCSCA Azure Dev/Test (ea91a274-55c6-461c-a11d-758ef02c2698)'
ScriptType: InlineScript
Inline: '[Environment]::SetEnvironmentVariable("NODE_OPTIONS", "--max_old_space_size=4096", "Machine")'
FailOnStandardError: true
azurePowerShellVersion: LatestVersion
Update:
Anyone trying this on Azure build pipeline. I finally got it succeeded. Increased memory to 16384. Please note this step alone wasn't working. Needed same changes in csproj and package.json
Steps
- Add an
Azure build pipeline task
->Azure powershell script:Inlinescript
before Compile with below settings
steps:
- task: AzurePowerShell@3
displayName: 'Azure PowerShell script: InlineScript'
inputs:
azureSubscription: 'NYCSCA Azure Dev/Test (ea91a274-55c6-461c-a11d-758ef02c2698)'
ScriptType: InlineScript
Inline: '[Environment]::SetEnvironmentVariable("NODE_OPTIONS", "--max_old_space_size=16384", "Machine")'
FailOnStandardError: true
azurePowerShellVersion: LatestVersion
@alexbenitez thanks for the tip NODE_OPTIONS=--max_old_space_size=16384
. It worked perfectly.
Update:
Anyone trying this on Azure build pipeline. I finally got it succeeded. Increased memory to 16384. Please note this step alone wasn't working. Needed same changes in csproj and package.jsonSteps
- Add an
Azure build pipeline task
->Azure powershell script:Inlinescript
before Compile with below settings
steps:- task: AzurePowerShell@3 displayName: 'Azure PowerShell script: InlineScript' inputs: azureSubscription: 'NYCSCA Azure Dev/Test (ea91a274-55c6-461c-a11d-758ef02c2698)' ScriptType: InlineScript Inline: '[Environment]::SetEnvironmentVariable("NODE_OPTIONS", "--max_old_space_size=16384", "Machine")' FailOnStandardError: true azurePowerShellVersion: LatestVersion
@codehippie1 what changes are required for csproj and package.json files?
Solution for Azure Pipeline in Azure DevOps:
- task: PowerShell@2
displayName: Build
env:
NODE_OPTIONS: --max_old_space_size=16384
Set the Environment VariableNODE_OPTIONS
with value --max_old_space_size=16384
in your Build-Task.
Solución para Azure Pipeline en Azure DevOps:
- task: PowerShell@2 displayName: Build env: NODE_OPTIONS: --max_old_space_size=16384
Establezca la Variable de entorno
NODE_OPTIONS
con valor--max_old_space_size=16384
en su Tarea de compilación.
No funciona, debo tener esta varible en el package
I got this error when trying to run it
2023-08-05T07:55:39.1552140Z ##[section]Starting: PowerShell Script
2023-08-05T07:55:39.1998002Z ==============================================================================
2023-08-05T07:55:39.1998347Z Task : PowerShell
2023-08-05T07:55:39.1998582Z Description : Run a PowerShell script on Linux, macOS, or Windows
2023-08-05T07:55:39.1998804Z Version : 2.220.0
2023-08-05T07:55:39.1999026Z Author : Microsoft Corporation
2023-08-05T07:55:39.1999310Z Help : https://docs.microsoft.com/azure/devops/pipelines/tasks/utility/powershell
2023-08-05T07:55:39.1999663Z ==============================================================================
2023-08-05T07:55:41.2025679Z Generating script.
2023-08-05T07:55:41.2852176Z ========================== Starting Command Output ===========================
2023-08-05T07:55:41.3104082Z ##[command]"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command ". 'F:\Ag2_work_temp\73e90371-e9d8-4834-b4bf-6d8c9cf3f029.ps1'"
2023-08-05T07:55:42.0673357Z ##[error]Exception calling "SetEnvironmentVariable" with "3" argument(s): "Requested registry access is not allowed."
At F:\Ag2_work_temp\73e90371-e9d8-4834-b4bf-6d8c9cf3f029.ps1:4 char:1
- [Environment]::SetEnvironmentVariable("NODE_OPTIONS", "--max_old_spac ...
-
+ CategoryInfo : NotSpecified: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : SecurityException
2023-08-05T07:55:42.1487257Z ##[error]PowerShell exited with code '1'.
2023-08-05T07:55:42.1767622Z ##[section]Finishing: PowerShell Script
The strange thing is that no one changed the pipeline, as well running old build that were succeding bring the javascript error