@htekdev/actions-debugger 1.0.25 → 1.0.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,90 @@
1
+ id: runner-environment-078
2
+ title: "macOS Runner DOTNET_ROOT Environment Variable Removed — .NET SDK Path Discovery Fails"
3
+ category: runner-environment
4
+ severity: error
5
+ tags:
6
+ - macos
7
+ - dotnet
8
+ - dotnet-root
9
+ - environment-variable
10
+ - sdk-discovery
11
+ - breaking-change
12
+ - runner-images
13
+ patterns:
14
+ - regex: 'DOTNET_ROOT.*not set|DOTNET_ROOT.*undefined|DOTNET_ROOT.*empty'
15
+ flags: "i"
16
+ - regex: 'A compatible \.NET SDK was not found|It was not possible to find any installed \.NET'
17
+ flags: "i"
18
+ - regex: 'dotnet.*not found|No \.NET SDKs were found'
19
+ flags: "i"
20
+ error_messages:
21
+ - "A compatible .NET SDK was not found."
22
+ - "It was not possible to find any installed .NET Core SDKs."
23
+ - "No .NET SDKs were found."
24
+ - "DOTNET_ROOT is not set."
25
+ root_cause: |
26
+ Starting January 12, 2026, GitHub removed the DOTNET_ROOT environment variable from
27
+ all macOS runner images: macOS-14, macOS-14-arm64, macOS-15, macOS-15-arm64,
28
+ macOS-26, and macOS-26-arm64 (runner-images#13470, driven by #13365).
29
+
30
+ The variable was previously predefined in the runner image environment to help
31
+ .NET tooling locate installed SDKs. It was removed because modern .NET SDK versions
32
+ can discover installations without it, and keeping the hardcoded path caused
33
+ inconsistent behavior when multiple .NET versions were installed side-by-side.
34
+
35
+ Workflows affected:
36
+ 1. Custom scripts that use $DOTNET_ROOT or $env:DOTNET_ROOT to invoke the dotnet CLI
37
+ without first running actions/setup-dotnet.
38
+ 2. Docker containers started from the runner that inherit the host environment
39
+ and previously relied on DOTNET_ROOT being present.
40
+ 3. Third-party .NET tools or build scripts that call into the .NET host resolver
41
+ and expect the environment to provide a root path.
42
+
43
+ Note: Windows and Ubuntu runner images are NOT affected by this change — only macOS.
44
+ Workflows using actions/setup-dotnet are unaffected as it sets DOTNET_ROOT itself.
45
+ fix: |
46
+ Set DOTNET_ROOT manually in the job env block, OR use actions/setup-dotnet which
47
+ sets it correctly as part of its own setup. For most GitHub Actions workflows that
48
+ install .NET via setup-dotnet, no change is needed. Custom scripts that reference
49
+ $DOTNET_ROOT directly must set it explicitly.
50
+
51
+ The canonical path for user-scoped .NET installs is $HOME/.dotnet (Unix) or
52
+ $env:USERPROFILE\.dotnet (Windows). actions/setup-dotnet uses $RUNNER_TOOL_CACHE.
53
+ fix_code:
54
+ - language: yaml
55
+ label: "Set DOTNET_ROOT manually in the job env block"
56
+ code: |
57
+ jobs:
58
+ build:
59
+ runs-on: macos-latest
60
+ env:
61
+ DOTNET_ROOT: ${{ runner.home }}/.dotnet
62
+ steps:
63
+ - uses: actions/checkout@v4
64
+ - name: Build
65
+ run: dotnet build src/MyApp.csproj
66
+ - language: yaml
67
+ label: "Use actions/setup-dotnet — sets DOTNET_ROOT automatically"
68
+ code: |
69
+ jobs:
70
+ build:
71
+ runs-on: macos-latest
72
+ steps:
73
+ - uses: actions/checkout@v4
74
+ - uses: actions/setup-dotnet@v4
75
+ with:
76
+ dotnet-version: '9.x'
77
+ # DOTNET_ROOT is now set by setup-dotnet automatically
78
+ - run: dotnet test --configuration Release
79
+ prevention:
80
+ - "Use actions/setup-dotnet in all .NET workflows on macOS — it sets DOTNET_ROOT and handles version management."
81
+ - "Audit scripts for direct $DOTNET_ROOT or $env:DOTNET_ROOT references and add explicit env: blocks for macOS jobs."
82
+ - "Test .NET workflows on macOS runner versions after image update cycles."
83
+ - "Subscribe to runner-images pinned announcements to stay ahead of environment variable removals."
84
+ docs:
85
+ - url: "https://github.com/actions/runner-images/issues/13470"
86
+ label: "runner-images#13470: DOTNET_ROOT environment variable will be removed from macOS on January 12th, 2026"
87
+ - url: "https://github.com/actions/setup-dotnet"
88
+ label: "actions/setup-dotnet: Installs .NET SDK and sets DOTNET_ROOT correctly"
89
+ - url: "https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-environment-variables#dotnet_root-dotnet_rootx86"
90
+ label: "Microsoft Docs: DOTNET_ROOT environment variable reference"
@@ -0,0 +1,109 @@
1
+ id: runner-environment-079
2
+ title: "PowerShell 7.6 on Runners Ships .NET 10 Runtime — HttpWebRequest and WebClient Throw NotSupportedException"
3
+ category: runner-environment
4
+ severity: error
5
+ tags:
6
+ - powershell
7
+ - powershell-76
8
+ - dotnet-10
9
+ - dotnet-8
10
+ - runner-images
11
+ - breaking-change
12
+ - httpclient
13
+ - webclient
14
+ patterns:
15
+ - regex: 'NotSupportedException.*HttpWebRequest|WebClient.*NotSupportedException'
16
+ flags: "i"
17
+ - regex: 'ServicePointManager.*SecurityProtocol.*not supported|The method or operation is not implemented'
18
+ flags: "i"
19
+ - regex: 'MissingMethodException.*ServicePointManager|System\.Net\.WebException.*NotSupported'
20
+ flags: "i"
21
+ - regex: 'WildcardPattern\.Escape.*backtick|Join-Path.*ChildPath.*string\[\]'
22
+ flags: "i"
23
+ error_messages:
24
+ - "System.NotSupportedException: WebClient has been removed from .NET"
25
+ - "System.NotSupportedException: HttpWebRequest is not supported on this platform"
26
+ - "System.MissingMethodException: Method not found: 'Void System.Net.ServicePointManager.set_SecurityProtocol'"
27
+ root_cause: |
28
+ PowerShell 7.4 was built on .NET 8. PowerShell 7.6 is built on .NET 10.
29
+ Beginning June 8-15, 2026, all GitHub-hosted runner images upgraded from PS 7.4
30
+ to PS 7.6 LTS (runner-images#14150). This introduces several .NET 10 breaking changes:
31
+
32
+ 1. HttpWebRequest and WebClient have been fully removed in .NET 10.
33
+ Any PowerShell script that uses New-Object System.Net.WebClient or
34
+ [System.Net.HttpWebRequest]::Create() now throws NotSupportedException.
35
+ Both classes were deprecated in .NET 5 and are gone in .NET 10.
36
+
37
+ 2. ServicePointManager.SecurityProtocol setter is not supported in .NET 10.
38
+ Workflows that manually set TLS protocol versions with
39
+ [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12
40
+ now throw MissingMethodException. .NET 10 negotiates TLS automatically.
41
+
42
+ 3. WildcardPattern.Escape now correctly escapes lone backtick characters (PS #25211).
43
+ Scripts that relied on the previous (incorrect) unescaped behavior may match
44
+ different patterns than expected.
45
+
46
+ 4. Join-Path -ChildPath parameter changed from string to string[]. Code that relied
47
+ on positional argument behavior for this parameter may bind differently.
48
+
49
+ This is distinct from the ThreadJob module rename (runner-environment-075 entry).
50
+ These are .NET runtime-level breaking changes, not module renames.
51
+ fix: |
52
+ Replace HttpWebRequest / WebClient with Invoke-RestMethod or Invoke-WebRequest,
53
+ which are the PowerShell-native HTTP clients backed by HttpClient (supported in all
54
+ .NET versions). Remove ServicePointManager.SecurityProtocol assignments entirely;
55
+ .NET 10 negotiates TLS 1.2/1.3 automatically and no longer accepts manual overrides.
56
+ fix_code:
57
+ - language: yaml
58
+ label: "Replace WebClient (removed in .NET 10) with Invoke-WebRequest"
59
+ code: |
60
+ steps:
61
+ - name: Download file
62
+ shell: pwsh
63
+ run: |
64
+ # BEFORE (.NET 10 throws NotSupportedException):
65
+ # $wc = New-Object System.Net.WebClient
66
+ # $wc.DownloadFile($env:URL, $env:DEST)
67
+
68
+ # AFTER — use Invoke-WebRequest (works across .NET 6/8/10)
69
+ Invoke-WebRequest -Uri $env:ARTIFACT_URL -OutFile $env:DEST_PATH -UseBasicParsing
70
+ env:
71
+ ARTIFACT_URL: 'https://example.com/artifact.zip'
72
+ DEST_PATH: 'artifact.zip'
73
+ - language: yaml
74
+ label: "Remove ServicePointManager.SecurityProtocol (not needed in .NET 10)"
75
+ code: |
76
+ steps:
77
+ - name: Call API
78
+ shell: pwsh
79
+ run: |
80
+ # BEFORE (.NET 10 throws MissingMethodException):
81
+ # [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12
82
+
83
+ # AFTER — .NET 10 negotiates TLS 1.3/1.2 automatically, no manual override needed
84
+ $response = Invoke-RestMethod -Uri 'https://api.example.com/data' -Method Get
85
+ $response | ConvertTo-Json
86
+ - language: yaml
87
+ label: "Check PowerShell version in workflow to detect the upgrade"
88
+ code: |
89
+ steps:
90
+ - name: Verify PowerShell version and .NET runtime
91
+ shell: pwsh
92
+ run: |
93
+ $PSVersionTable
94
+ [System.Environment]::Version
95
+ prevention:
96
+ - "Audit all PowerShell scripts in workflows for WebClient and HttpWebRequest usage before the June 8-15 image rollout."
97
+ - "Replace New-Object System.Net.WebClient with Invoke-WebRequest or Invoke-RestMethod throughout."
98
+ - "Remove all [System.Net.ServicePointManager]::SecurityProtocol assignments — they are no-ops at best in .NET 10."
99
+ - "Test workflows locally with PowerShell 7.6 (winget install Microsoft.PowerShell) before the image rollout completes."
100
+ - "The ThreadJob module rename is a separate issue — see runner-environment-075 entry for that breaking change."
101
+ docs:
102
+ - url: "https://github.com/actions/runner-images/issues/14150"
103
+ label: "runner-images#14150: PowerShell will be updated from 7.4 to 7.6 LTS on all runner images"
104
+ - url: "https://learn.microsoft.com/en-us/powershell/scripting/whats-new/what-s-new-in-powershell-76"
105
+ label: "Microsoft Docs: What's new in PowerShell 7.6"
106
+ - url: "https://learn.microsoft.com/en-us/dotnet/core/whats-new/dotnet-10/overview"
107
+ label: "Microsoft Docs: Breaking changes in .NET 10"
108
+ - url: "https://github.com/PowerShell/PowerShell/releases/tag/v7.6.0"
109
+ label: "PowerShell 7.6.0 Release Notes"
@@ -0,0 +1,91 @@
1
+ id: runner-environment-077
2
+ title: "Chrome 148.0.7778.178 on Ubuntu 24.04 Causes WebdriverIO and Browser Tests to Hang"
3
+ category: runner-environment
4
+ severity: error
5
+ tags:
6
+ - ubuntu-24.04
7
+ - chrome
8
+ - chromium
9
+ - webdriverio
10
+ - browser-testing
11
+ - regression
12
+ - selenium
13
+ - playwright
14
+ patterns:
15
+ - regex: 'Failed to create session|chrome not reachable|connect ECONNREFUSED.*9515'
16
+ flags: "i"
17
+ - regex: 'ChromeDriver.*unable to receive message|WebDriver.*timed out'
18
+ flags: "i"
19
+ - regex: 'google-chrome.*148\.0\.7778\.17[89]|148\.0\.7778\.17[89]'
20
+ flags: "i"
21
+ error_messages:
22
+ - "Error: Failed to create session."
23
+ - "Error: chrome not reachable"
24
+ - "Error: connect ECONNREFUSED 127.0.0.1:9515"
25
+ - "DevTools protocol message timeout"
26
+ root_cause: |
27
+ Chrome 148.0.7778.178 was shipped in ubuntu-24.04 runner image 20260525.161.1
28
+ (May 25, 2026). This build introduced an upstream regression that causes WebdriverIO,
29
+ Selenium, and other CDP-based browser automation frameworks to hang indefinitely
30
+ when launching Chrome. The Chrome process starts but the DevTools Protocol endpoint
31
+ never becomes reachable, causing session creation to time out.
32
+
33
+ GitHub installs Chrome from the official stable channel on each image build and does
34
+ not pin versions. The previous image (20260518.149.1) shipped Chrome 148.0.7778.167
35
+ which was unaffected. GitHub confirmed they will not roll back the image and are
36
+ waiting for an upstream Google Chrome fix (tracked as Chromium issue #517079992).
37
+
38
+ WebdriverIO tests that previously ran reliably on GitHub-hosted ubuntu-24.04 runners
39
+ will hang silently or time out after this image version update. Switching to
40
+ ubuntu-22.04 does not guarantee relief as it also installs stable Chrome.
41
+ fix: |
42
+ Pin Chrome to version 148.0.7778.167 (the last known-good stable build) using
43
+ browser-actions/setup-chrome, which installs from Chrome for Testing CDN — an
44
+ immutable, version-pinned registry that does not auto-update. Point WebdriverIO at
45
+ the pinned Chrome binary via environment variables rather than using system Chrome.
46
+ fix_code:
47
+ - language: yaml
48
+ label: "Pin Chrome to last known-good build (runner-images#14169 workaround)"
49
+ code: |
50
+ jobs:
51
+ e2e:
52
+ runs-on: ubuntu-24.04
53
+ steps:
54
+ - uses: actions/checkout@v4
55
+
56
+ - name: Install pinned Chrome (workaround for runner-images#14169)
57
+ id: setup-chrome
58
+ uses: browser-actions/setup-chrome@v1
59
+ with:
60
+ chrome-version: '148.0.7778.167'
61
+ install-dependencies: true
62
+ install-chromedriver: true
63
+
64
+ - name: Run E2E tests with pinned Chrome
65
+ env:
66
+ CHROME_BIN: ${{ steps.setup-chrome.outputs.chrome-path }}
67
+ CHROMEWEBDRIVER: ${{ steps.setup-chrome.outputs.chromedriver-path }}
68
+ run: npx wdio run wdio.conf.js
69
+ - language: yaml
70
+ label: "WebdriverIO capability config pointing to pinned Chrome binary"
71
+ code: |
72
+ # wdio.conf.js — use CHROME_BIN from the setup-chrome step, not system Chrome
73
+ capabilities: [{
74
+ browserName: 'chrome',
75
+ 'goog:chromeOptions': {
76
+ binary: process.env.CHROME_BIN,
77
+ args: ['--headless=new', '--no-sandbox', '--disable-dev-shm-usage'],
78
+ },
79
+ }]
80
+ prevention:
81
+ - "Never rely on the system Chrome version in CI — pin via browser-actions/setup-chrome for reproducible builds."
82
+ - "Configure WebdriverIO to use CHROME_BIN environment variable instead of auto-detecting /usr/bin/google-chrome."
83
+ - "Subscribe to actions/runner-images#14169 to learn when a fixed Chrome stable is shipped."
84
+ - "Consider Playwright (brings its own browser binaries) as a long-term alternative to avoid runner image Chrome updates."
85
+ docs:
86
+ - url: "https://github.com/actions/runner-images/issues/14169"
87
+ label: "runner-images#14169: Ubuntu 24.04 image update causes WebdriverIO tests with updated Chrome to hang"
88
+ - url: "https://github.com/browser-actions/setup-chrome"
89
+ label: "browser-actions/setup-chrome: Install pinned Chrome for Testing builds"
90
+ - url: "https://googlechromelabs.github.io/chrome-for-testing/"
91
+ label: "Chrome for Testing: Immutable Chrome binaries by version (CDN)"
@@ -0,0 +1,94 @@
1
+ id: runner-environment-076
2
+ title: "Ubuntu 24.04 Kernel read_ahead_kb Regression Causes I/O Thrashing and Workflow Hangs"
3
+ category: runner-environment
4
+ severity: error
5
+ tags:
6
+ - ubuntu-24.04
7
+ - kernel
8
+ - io-thrashing
9
+ - memory
10
+ - docker
11
+ - read-ahead
12
+ - performance
13
+ patterns:
14
+ - regex: 'The hosted runner lost communication with the server'
15
+ flags: "i"
16
+ - regex: 'Free memory is lower than 5%|Currently used: 9[0-9]\.[0-9]+%'
17
+ flags: "i"
18
+ - regex: 'Out of memory, malloc failed|fatal: the remote end hung up unexpectedly'
19
+ flags: "i"
20
+ error_messages:
21
+ - "The hosted runner lost communication with the server. Anything in your workflow that terminates the runner process, starves it for CPU/Memory, or blocks its network access can cause this error."
22
+ - "##[warning]Free memory is lower than 5%; Currently used: 95.55%"
23
+ - "fatal: Out of memory, malloc failed (tried to allocate 217 bytes)"
24
+ - "fatal: the remote end hung up unexpectedly"
25
+ root_cause: |
26
+ Starting with kernel 6.14.0-1017-azure (shipped in ubuntu-24.04 image 20260224.36.1
27
+ and continuing with 6.17.0-1008-azure in 20260302.42.1 through current), the default
28
+ read_ahead_kb block device value was changed from 128 KB to 4096 KB. This causes
29
+ the Linux page cache to speculatively read 32x more data from disk for each I/O
30
+ operation, flooding available RAM with unused prefetched data.
31
+
32
+ The effect is severe for workloads with large files accessed non-sequentially
33
+ (many build systems, compilation), Docker-in-Docker setups, database integration
34
+ tests (Postgres, MySQL, Redis) under I/O load, and large repository operations.
35
+
36
+ The page cache exhaustion triggers OOM conditions, process starvation, and eventually
37
+ causes the Actions runner process to lose connectivity to the GitHub Actions broker,
38
+ manifesting as "The hosted runner lost communication with the server."
39
+
40
+ GitHub confirmed this is a kernel-level change they do not control and cannot roll
41
+ back. The fix must be applied in the workflow. Independently documented by the
42
+ RavenDB team for the same Azure kernel change.
43
+ fix: |
44
+ Add a step at the beginning of the job to reset read_ahead_kb to 128 KB (the
45
+ safe pre-regression value). This must run before any I/O-intensive steps.
46
+ The step requires sudo access, which is available on all GitHub-hosted runners.
47
+ fix_code:
48
+ - language: yaml
49
+ label: "Reset read_ahead_kb before I/O-intensive steps (kernel regression workaround)"
50
+ code: |
51
+ jobs:
52
+ build:
53
+ runs-on: ubuntu-24.04
54
+ steps:
55
+ - name: Reset block device read-ahead (kernel regression workaround for runner-images#13770)
56
+ run: |
57
+ for dev in /sys/block/sd*/queue/read_ahead_kb; do
58
+ echo 128 | sudo tee "$dev" > /dev/null
59
+ done
60
+ echo "read_ahead_kb reset to 128 on all block devices"
61
+
62
+ - uses: actions/checkout@v4
63
+ - name: Build
64
+ run: make
65
+ - language: yaml
66
+ label: "Diagnose memory pressure before applying the workaround"
67
+ code: |
68
+ jobs:
69
+ build:
70
+ runs-on: ubuntu-24.04
71
+ steps:
72
+ - name: Show current read_ahead_kb and available memory
73
+ run: |
74
+ cat /sys/block/sda/queue/read_ahead_kb || true
75
+ free -h
76
+
77
+ - name: Reset read_ahead_kb to safe value
78
+ run: |
79
+ for dev in /sys/block/sd*/queue/read_ahead_kb; do
80
+ echo 128 | sudo tee "$dev" > /dev/null
81
+ done
82
+ cat /sys/block/sda/queue/read_ahead_kb
83
+ prevention:
84
+ - "Always reset read_ahead_kb to 128 on ubuntu-24.04 runners for workflows with Docker containers or database integration tests."
85
+ - "Use ubuntu-22.04 as a temporary mitigation — kernel 6.8.0 is unaffected by this regression."
86
+ - "Add memory diagnostics (free -h) before heavy build steps to catch exhaustion early."
87
+ - "Monitor actions/runner-images#13770 for a permanent kernel fix from Canonical and GitHub."
88
+ docs:
89
+ - url: "https://github.com/actions/runner-images/issues/13770"
90
+ label: "runner-images#13770: ubuntu-latest builds hanging in 20260302.42.1 runner image (kernel regression)"
91
+ - url: "https://github.com/ravendb/ravendb/discussions/22410"
92
+ label: "RavenDB: Azure kernel read_ahead_kb change causing I/O thrashing"
93
+ - url: "https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners"
94
+ label: "GitHub Docs: GitHub-hosted runner hardware resources"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@htekdev/actions-debugger",
3
- "version": "1.0.25",
3
+ "version": "1.0.26",
4
4
  "description": "65+ real GitHub Actions errors, queryable by agents. MCP server + Copilot skills + error database.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",