Skip to content

Azure Devops builds failing - Javascript Heap out of memory #736

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

Closed
codehippie1 opened this issue Jul 31, 2019 · 9 comments
Closed

Azure Devops builds failing - Javascript Heap out of memory #736

codehippie1 opened this issue Jul 31, 2019 · 9 comments

Comments

@codehippie1
Copy link

codehippie1 commented Jul 31, 2019

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?

  1. I tried all steps listed on Issue 262
  2. Tried all solutions listed at https://developercommunity.visualstudio.com/content/problem/398343/azure-devops-pipeline-fatal-error-ineffective-mark.html
  3. Edited csproject msbuild task RunWebpack to add node --max_old_space_size=4096. I see this gets executed twice and max_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 
@alexbenitez
Copy link

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.

@codehippie1
Copy link
Author

codehippie1 commented Aug 1, 2019

@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?

@codehippie1
Copy link
Author

@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

@codehippie1
Copy link
Author

codehippie1 commented Aug 1, 2019

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

  1. 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

@strabek
Copy link

strabek commented Aug 14, 2019

@alexbenitez thanks for the tip NODE_OPTIONS=--max_old_space_size=16384. It worked perfectly.

@ali-asghar1
Copy link

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

  1. 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?

@MrzJkl
Copy link

MrzJkl commented Jan 25, 2021

Solution for Azure Pipeline in Azure DevOps:

- task: PowerShell@2
  displayName: Build
  env:
    NODE_OPTIONS: --max_old_space_size=16384

Set the Environment VariableNODE_OPTIONSwith value --max_old_space_size=16384 in your Build-Task.

@jn-royalticgroup
Copy link

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_OPTIONScon valor --max_old_space_size=16384en su Tarea de compilación.

No funciona, debo tener esta varible en el package

@advapiIT
Copy link

advapiIT commented Aug 5, 2023

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants