diff --git a/.gitignore b/.gitignore index 411fe4011a5..a7a57dc42bd 100644 --- a/.gitignore +++ b/.gitignore @@ -27,4 +27,5 @@ TestResults TestLogs .DS_Store .mono -**/*.DotSettings.user \ No newline at end of file +**/*.DotSettings.user +**/*.lscache \ No newline at end of file diff --git a/src/Runner.Worker/Handlers/NodeScriptActionHandler.cs b/src/Runner.Worker/Handlers/NodeScriptActionHandler.cs index 668ca95f6df..29def039f99 100644 --- a/src/Runner.Worker/Handlers/NodeScriptActionHandler.cs +++ b/src/Runner.Worker/Handlers/NodeScriptActionHandler.cs @@ -12,6 +12,7 @@ using GitHub.Runner.Sdk; using GitHub.Runner.Worker.Container; using GitHub.Runner.Worker.Container.ContainerHooks; +using GitHub.Services.Common; namespace GitHub.Runner.Worker.Handlers { @@ -128,6 +129,15 @@ public async Task RunAsync(ActionRunStage stage) // file name character on Linux. string arguments = StepHost.ResolvePathForStepHost(ExecutionContext, StringUtil.Format(@"""{0}""", target.Replace(@"""", @"\"""))); + // Disable maglev jit compiler in node.js 24.x.x on x64 Windows until the node.js bug is fixed. + // https://github.com/nodejs/node/issues/62260 + if (nodeRuntimeVersion.StartsWith("node24", StringComparison.OrdinalIgnoreCase) && + (StringUtil.ConvertToBoolean(System.Environment.GetEnvironmentVariable("ACTIONS_RUNNER_DISABLE_NODE_MAGLEV")) || StringUtil.ConvertToBoolean(Environment.GetValueOrDefault("ACTIONS_RUNNER_DISABLE_NODE_MAGLEV")))) + { + Trace.Info("Disable maglev jit compiler in node.js"); + arguments = $"--no-maglev {arguments}"; + } + #if OS_WINDOWS // It appears that node.exe outputs UTF8 when not in TTY mode. Encoding outputEncoding = Encoding.UTF8;