Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
8c496de
Allow skipping oom_score_adj write via ACTIONS_RUNNER_DISABLE_OOM_SCO…
biagiopietro Jun 4, 2026
f5c8380
Merge branch 'main' into feat/disable-oom-score-adj-env-var
biagiopietro Jun 5, 2026
fc3ed8d
Merge branch 'main' into feat/disable-oom-score-adj-env-var
biagiopietro Jun 9, 2026
d45f584
Merge branch 'main' into feat/disable-oom-score-adj-env-var
biagiopietro Jun 20, 2026
229b922
Merge branch 'main' into feat/disable-oom-score-adj-env-var
biagiopietro Jun 23, 2026
0ff033c
Merge branch 'main' into feat/disable-oom-score-adj-env-var
biagiopietro Jun 29, 2026
28d0538
Merge branch 'main' into feat/disable-oom-score-adj-env-var
biagiopietro Jul 4, 2026
7068260
Merge branch 'main' into feat/disable-oom-score-adj-env-var
biagiopietro Jul 7, 2026
20db2e3
Merge branch 'main' into feat/disable-oom-score-adj-env-var
biagiopietro Jul 9, 2026
f96d101
Merge branch 'main' into feat/disable-oom-score-adj-env-var
biagiopietro Jul 10, 2026
bb93351
Merge branch 'main' into feat/disable-oom-score-adj-env-var
biagiopietro Jul 13, 2026
7930c8f
Merge branch 'main' into feat/disable-oom-score-adj-env-var
biagiopietro Jul 14, 2026
93637da
Merge branch 'main' into feat/disable-oom-score-adj-env-var
biagiopietro Jul 16, 2026
e329e43
Merge branch 'main' into feat/disable-oom-score-adj-env-var
biagiopietro Jul 17, 2026
88f796e
Merge branch 'main' into feat/disable-oom-score-adj-env-var
biagiopietro Jul 21, 2026
b963492
Merge branch 'main' into feat/disable-oom-score-adj-env-var
biagiopietro Jul 21, 2026
c226169
Merge branch 'main' into feat/disable-oom-score-adj-env-var
biagiopietro Jul 22, 2026
20f5111
Merge branch 'main' into feat/disable-oom-score-adj-env-var
biagiopietro Jul 24, 2026
0b3246b
Merge branch 'main' into feat/disable-oom-score-adj-env-var
biagiopietro Jul 28, 2026
119b8bc
Merge branch 'main' into feat/disable-oom-score-adj-env-var
biagiopietro Jul 29, 2026
43e1ffc
Merge branch 'main' into feat/disable-oom-score-adj-env-var
biagiopietro Jul 29, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions src/Runner.Sdk/ProcessInvoker.cs
Original file line number Diff line number Diff line change
Expand Up @@ -871,6 +871,14 @@ private void NixKillProcessTree()
#if OS_LINUX
private void WriteProcessOomScoreAdj(int processId, int oomScoreAdj)
{
var disableOomScoreAdj = Environment.GetEnvironmentVariable("ACTIONS_RUNNER_DISABLE_OOM_SCORE_ADJ");
if (string.Equals(disableOomScoreAdj, "true", StringComparison.OrdinalIgnoreCase) ||
string.Equals(disableOomScoreAdj, "1", StringComparison.OrdinalIgnoreCase))
{
Trace.Verbose("Skipping oom_score_adj write: ACTIONS_RUNNER_DISABLE_OOM_SCORE_ADJ is set (unprivileged container).");
return;
}

try
{
string procFilePath = $"/proc/{processId}/oom_score_adj";
Expand Down
47 changes: 47 additions & 0 deletions src/Test/L0/ProcessInvokerL0.cs
Original file line number Diff line number Diff line change
Expand Up @@ -510,6 +510,53 @@ public async Task OomScoreAdjIsInherited()
}
}
}

[Fact]
[Trait("Level", "L0")]
[Trait("Category", "Common")]
public async Task OomScoreAdjIsSkipped_WhenDisableEnvVarSet()
{
// Unprivileged containers (e.g. ARC runners) cannot write to /proc/<pid>/oom_score_adj.
// ACTIONS_RUNNER_DISABLE_OOM_SCORE_ADJ suppresses the write entirely so no exception is raised.
string testProcPath = $"/proc/{Process.GetCurrentProcess().Id}/oom_score_adj";
if (File.Exists(testProcPath))
{
Environment.SetEnvironmentVariable("ACTIONS_RUNNER_DISABLE_OOM_SCORE_ADJ", "true");
try
{
using (TestHostContext hc = new(this))
using (var tokenSource = new CancellationTokenSource())
{
Tracing trace = hc.GetTrace();
var processInvoker = new ProcessInvokerWrapper();
processInvoker.Initialize(hc);
int oomScoreAdj = -9999;
processInvoker.OutputDataReceived += (object sender, ProcessDataReceivedEventArgs e) =>
{
oomScoreAdj = int.Parse(e.Data);
tokenSource.Cancel();
};
try
{
// The child process should inherit the parent's oom_score_adj unchanged (not 500).
int parentOomScore = int.Parse(File.ReadAllText(testProcPath).Trim());
var proc = await processInvoker.ExecuteAsync("", "bash", "-c \"cat /proc/$$/oom_score_adj\"", null, false, null, false, null, false, false,
highPriorityProcess: false,
cancellationToken: tokenSource.Token);
Assert.Equal(parentOomScore, oomScoreAdj);
}
catch (OperationCanceledException)
{
trace.Info("Caught expected OperationCanceledException");
}
}
}
finally
{
Environment.SetEnvironmentVariable("ACTIONS_RUNNER_DISABLE_OOM_SCORE_ADJ", null);
}
}
}
#endif
}
}