@htekdev/actions-debugger 1.0.71 → 1.0.72

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,100 @@
1
+ id: runner-environment-133
2
+ title: 'ARM64 runners: downloaded x86_64 binary fails with "Exec format error" — wrong architecture'
3
+ category: runner-environment
4
+ severity: error
5
+ tags:
6
+ - arm64
7
+ - aarch64
8
+ - binary
9
+ - exec-format-error
10
+ - ubuntu-arm
11
+ - architecture
12
+ patterns:
13
+ - regex: 'cannot execute binary file: Exec format error'
14
+ flags: 'i'
15
+ - regex: 'Exec format error'
16
+ flags: 'i'
17
+ - regex: 'exec.*format error'
18
+ flags: 'i'
19
+ error_messages:
20
+ - './my-tool: cannot execute binary file: Exec format error'
21
+ - '/usr/local/bin/kubectl: cannot execute binary file: Exec format error'
22
+ - 'bash: ./tool: cannot execute binary file: Exec format error'
23
+ root_cause: |
24
+ GitHub-hosted ubuntu-24.04-arm and ubuntu-22.04-arm runners use ARM64 (aarch64) CPUs.
25
+ The RUNNER_ARCH environment variable returns ARM64 on these runners, not X64.
26
+
27
+ Workflows that download pre-built binaries using hardcoded architecture suffixes like
28
+ linux-amd64, linux-x86_64, or linux-x64 download x86_64 binaries that cannot execute on
29
+ ARM64 hardware. The Linux kernel rejects the binary with "Exec format error" (ENOEXEC)
30
+ because the ELF architecture header in the binary does not match the host CPU.
31
+
32
+ Common patterns that break:
33
+ - Hardcoded URL: https://example.com/tool-linux-amd64.tar.gz
34
+ - Shell variable set once: ARCH="amd64" without checking RUNNER_ARCH
35
+ - Workflow matrix that includes ubuntu-24.04-arm without updating download URLs
36
+ - Third-party scripts that assume x86_64 without ARM64 support
37
+
38
+ This is a silent-ish failure — the binary downloads successfully (HTTP 200), extracts
39
+ without error, but fails only when executed.
40
+ fix: |
41
+ Use the RUNNER_ARCH environment variable or uname -m to detect architecture and select
42
+ the correct binary:
43
+
44
+ - RUNNER_ARCH is X64 on x86_64 runners, ARM64 on ARM64 runners
45
+ - uname -m returns x86_64 on x86_64, aarch64 on ARM64
46
+
47
+ Normalize to the convention used by the tool's release naming (amd64/arm64 or x86_64/aarch64).
48
+ Where possible, prefer using setup-* actions that handle multi-architecture automatically.
49
+ fix_code:
50
+ - language: yaml
51
+ label: 'Detect architecture and download correct binary'
52
+ code: |
53
+ jobs:
54
+ install-tool:
55
+ runs-on: ${{ matrix.runner }}
56
+ strategy:
57
+ matrix:
58
+ runner: [ubuntu-24.04, ubuntu-24.04-arm]
59
+ steps:
60
+ - name: Detect architecture and download tool
61
+ run: |
62
+ ARCH=$(uname -m)
63
+ case "$ARCH" in
64
+ x86_64) DL_ARCH="amd64" ;;
65
+ aarch64) DL_ARCH="arm64" ;;
66
+ *) echo "Unsupported arch: $ARCH"; exit 1 ;;
67
+ esac
68
+ curl -sSL "https://example.com/tool-linux-${DL_ARCH}.tar.gz" | tar xz
69
+ sudo mv tool /usr/local/bin/
70
+
71
+ - language: yaml
72
+ label: 'Use RUNNER_ARCH environment variable (GitHub-native)'
73
+ code: |
74
+ jobs:
75
+ install-tool:
76
+ runs-on: ubuntu-24.04-arm
77
+ steps:
78
+ - name: Install tool using RUNNER_ARCH
79
+ run: |
80
+ # RUNNER_ARCH is X64 or ARM64 (uppercase)
81
+ if [ "$RUNNER_ARCH" = "ARM64" ]; then
82
+ DL_ARCH="arm64"
83
+ else
84
+ DL_ARCH="amd64"
85
+ fi
86
+ curl -sSL "https://releases.example.com/tool-linux-${DL_ARCH}" -o /usr/local/bin/tool
87
+ chmod +x /usr/local/bin/tool
88
+ prevention:
89
+ - 'Never hardcode linux-amd64 or linux-x86_64 in binary download URLs — always parameterize by architecture'
90
+ - 'Prefer setup-* GitHub Actions (setup-node, setup-go, setup-java) over manual binary downloads — they handle ARM64 automatically'
91
+ - 'Add ubuntu-24.04-arm to your test matrix to catch architecture issues before they affect users'
92
+ - 'Check tool release pages for ARM64 availability before migrating to ARM64 runners — not all tools provide arm64 builds'
93
+ - 'Use RUNNER_ARCH (GitHub variable) or uname -m (portable) to detect architecture in shell scripts'
94
+ docs:
95
+ - url: 'https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources'
96
+ label: 'GitHub-hosted runners — supported runner types including ARM64'
97
+ - url: 'https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/store-information-in-variables#default-environment-variables'
98
+ label: 'Default environment variables — RUNNER_ARCH values'
99
+ - url: 'https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2404-ARM64-Readme.md'
100
+ label: 'ubuntu-24.04-arm runner software report'
@@ -0,0 +1,124 @@
1
+ id: runner-environment-135
2
+ title: 'ubuntu-24.04: no swap memory — memory-intensive builds killed with exit code 137 (OOM)'
3
+ category: runner-environment
4
+ severity: error
5
+ tags:
6
+ - oom
7
+ - memory
8
+ - swap
9
+ - ubuntu-24
10
+ - exit-137
11
+ - killed
12
+ patterns:
13
+ - regex: 'Error 137'
14
+ flags: 'i'
15
+ - regex: 'exit code 137'
16
+ flags: 'i'
17
+ - regex: '^Killed\s*$'
18
+ flags: 'm'
19
+ - regex: 'out of memory|OOM|oom.killer'
20
+ flags: 'i'
21
+ error_messages:
22
+ - 'make: *** [Makefile:42: build] Error 137'
23
+ - 'Killed'
24
+ - 'Process exited with code 137'
25
+ - 'error Command failed with exit code 137'
26
+ - 'npm ERR! code 137'
27
+ root_cause: |
28
+ GitHub-hosted ubuntu-24.04 runners provide approximately 29GB RAM but have no swap space.
29
+ Ubuntu 22.04 runners provided about 6GB of swap as overflow capacity. When a job exhausts
30
+ physical RAM, the Linux OOM killer terminates the offending process with SIGKILL (signal 9),
31
+ producing exit code 137 (128 + 9).
32
+
33
+ The killed process may be:
34
+ - Node.js during webpack/esbuild/rollup bundle generation for large frontend projects
35
+ - Gradle during Android AAB/APK build or large multi-module Java projects
36
+ - Electron Forge/Builder packaging step
37
+ - C/C++ linker (ld) linking large binaries with many object files
38
+ - Cargo (Rust) compiling with high parallelism or many dependencies
39
+
40
+ The failure is often hard to diagnose because:
41
+ - No explicit "Out of Memory" message appears in the workflow log
42
+ - The step log simply shows "Killed" and exit code 137
43
+ - The runner does not report memory usage in the workflow summary
44
+
45
+ If the same workflow runs on ubuntu-22.04 without issues, missing swap is the likely cause.
46
+ fix: |
47
+ Option A — Add a swap file manually before the memory-intensive step. This adds ~30 seconds
48
+ to job setup but provides 8GB of overflow capacity:
49
+
50
+ Option B — Reduce peak memory usage:
51
+ - Node.js: pass --max-old-space-size=N (MB) to node or set NODE_OPTIONS env var
52
+ - Gradle: reduce org.gradle.jvmargs heap in gradle.properties
53
+ - Cargo: set CARGO_BUILD_JOBS=2 to reduce parallel compilation
54
+ - webpack: use --parallel false or reduce splitChunks settings
55
+
56
+ Option C — Use a larger GitHub-hosted runner with more RAM (requires paid plan):
57
+ ubuntu-24.04 with 64GB RAM is available as a larger runner.
58
+ fix_code:
59
+ - language: yaml
60
+ label: 'Add 8GB swap file before memory-intensive build step'
61
+ code: |
62
+ jobs:
63
+ build:
64
+ runs-on: ubuntu-24.04
65
+ steps:
66
+ - uses: actions/checkout@v4
67
+
68
+ - name: Add swap space
69
+ run: |
70
+ sudo fallocate -l 8G /swapfile
71
+ sudo chmod 600 /swapfile
72
+ sudo mkswap /swapfile
73
+ sudo swapon /swapfile
74
+ swapon --show
75
+ free -h
76
+
77
+ - name: Build (memory-intensive)
78
+ run: npm run build
79
+
80
+ - language: yaml
81
+ label: 'Reduce Node.js memory usage with --max-old-space-size'
82
+ code: |
83
+ jobs:
84
+ build:
85
+ runs-on: ubuntu-24.04
86
+ env:
87
+ NODE_OPTIONS: '--max-old-space-size=6144'
88
+ steps:
89
+ - uses: actions/checkout@v4
90
+ - uses: actions/setup-node@v4
91
+ with:
92
+ node-version: '20'
93
+ - run: npm ci
94
+ - run: npm run build
95
+
96
+ - language: yaml
97
+ label: 'Reduce Gradle heap for Android/Java builds'
98
+ code: |
99
+ jobs:
100
+ build:
101
+ runs-on: ubuntu-24.04
102
+ steps:
103
+ - uses: actions/checkout@v4
104
+
105
+ - name: Set Gradle memory limits
106
+ run: |
107
+ mkdir -p ~/.gradle
108
+ echo 'org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=512m' >> ~/.gradle/gradle.properties
109
+
110
+ - name: Build APK
111
+ run: ./gradlew assembleRelease
112
+ prevention:
113
+ - 'Test builds on ubuntu-24.04 explicitly — do not assume ubuntu-22.04 memory behavior transfers'
114
+ - 'Add a swap file as a build step when migrating large builds to ubuntu-24.04'
115
+ - 'Set NODE_OPTIONS=--max-old-space-size as a job-level env var for Node.js heavy workflows'
116
+ - 'Monitor build memory usage locally: /usr/bin/time -v npm run build shows peak RSS'
117
+ - 'Exit code 137 with no explicit error is the canonical indicator of OOM kill — add this as a diagnostic check'
118
+ docs:
119
+ - url: 'https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources'
120
+ label: 'GitHub-hosted runner hardware specs — RAM and storage per runner type'
121
+ - url: 'https://github.com/actions/runner-images/issues'
122
+ label: 'runner-images issues — search "OOM" or "exit 137" for community reports'
123
+ - url: 'https://nodejs.org/api/cli.html#--max-old-space-sizesize-in-megabytes'
124
+ label: 'Node.js CLI docs — --max-old-space-size option'
@@ -0,0 +1,99 @@
1
+ id: runner-environment-134
2
+ title: 'ubuntu-24.04: openjdk-11-jdk has no installation candidate — Java 11 removed from Ubuntu 24 repos'
3
+ category: runner-environment
4
+ severity: error
5
+ tags:
6
+ - java
7
+ - openjdk
8
+ - ubuntu-24
9
+ - apt
10
+ - java-11
11
+ - noble
12
+ patterns:
13
+ - regex: 'Package .openjdk-11.*has no installation candidate'
14
+ flags: 'i'
15
+ - regex: 'openjdk-11-jdk.*no installation candidate'
16
+ flags: 'i'
17
+ - regex: 'E: Package .openjdk-11'
18
+ flags: 'i'
19
+ error_messages:
20
+ - 'E: Package ''openjdk-11-jdk'' has no installation candidate'
21
+ - 'E: Package ''openjdk-11-jre'' has no installation candidate'
22
+ - 'E: Unable to locate package openjdk-11-jdk'
23
+ root_cause: |
24
+ Ubuntu 24.04 LTS (Noble Numbat) dropped OpenJDK 11 from its official package repositories.
25
+ The minimum available Java version via apt on Ubuntu 24.04 is OpenJDK 17 (openjdk-17-jdk)
26
+ along with OpenJDK 21 (openjdk-21-jdk). OpenJDK 11 packages that existed in Ubuntu 22.04
27
+ (Jammy) are not present in Ubuntu 24.04 (Noble) main or universe repos.
28
+
29
+ Workflows that install Java via apt-get will fail:
30
+ sudo apt-get install -y openjdk-11-jdk # Fails on ubuntu-24.04
31
+ sudo apt-get install -y openjdk-11-jre # Fails on ubuntu-24.04
32
+
33
+ This affects workflows that:
34
+ - Directly install OpenJDK via apt without using actions/setup-java
35
+ - Use Docker images based on ubuntu:24.04 inside workflow steps
36
+ - Run scripts that call apt-get install openjdk-11* expecting Ubuntu 22 behavior
37
+
38
+ Note: Java 11 is still supported under long-term support plans but must be obtained from
39
+ third-party sources (Adoptium/Temurin, Amazon Corretto, Azul Zulu) rather than Ubuntu repos.
40
+ fix: |
41
+ Use actions/setup-java to install any Java version including 11. The action downloads from
42
+ a distribution vendor (Temurin, Corretto, Zulu, etc.) rather than Ubuntu packages, making
43
+ it distribution-independent and supporting Java 11 on ubuntu-24.04.
44
+
45
+ Never use apt-get to install Java on GitHub-hosted runners — always use actions/setup-java
46
+ which handles version discovery, caching, JAVA_HOME configuration, and multi-platform support.
47
+ fix_code:
48
+ - language: yaml
49
+ label: 'Use actions/setup-java to install Java 11 (works on ubuntu-24.04)'
50
+ code: |
51
+ jobs:
52
+ build:
53
+ runs-on: ubuntu-24.04
54
+ steps:
55
+ - uses: actions/checkout@v4
56
+
57
+ - uses: actions/setup-java@v4
58
+ with:
59
+ java-version: '11'
60
+ distribution: 'temurin'
61
+ cache: 'maven'
62
+
63
+ - name: Build with Maven
64
+ run: mvn -B package --file pom.xml
65
+
66
+ - language: yaml
67
+ label: 'Multi-version Java matrix — test across Java 11, 17, 21'
68
+ code: |
69
+ jobs:
70
+ test:
71
+ runs-on: ubuntu-24.04
72
+ strategy:
73
+ matrix:
74
+ java-version: ['11', '17', '21']
75
+ steps:
76
+ - uses: actions/checkout@v4
77
+
78
+ - uses: actions/setup-java@v4
79
+ with:
80
+ java-version: ${{ matrix.java-version }}
81
+ distribution: 'temurin'
82
+
83
+ - name: Run tests
84
+ run: mvn test
85
+ prevention:
86
+ - 'Always use actions/setup-java to install Java on GitHub-hosted runners — never rely on apt-get for Java'
87
+ - 'Pin the Java distribution explicitly (temurin, corretto, zulu) to avoid resolution differences across Ubuntu versions'
88
+ - 'Test workflows on ubuntu-24.04 explicitly when migrating from ubuntu-22.04 or ubuntu-20.04'
89
+ - 'Check Ubuntu package availability with https://packages.ubuntu.com before relying on apt for any tool installation'
90
+ - 'Validate Java availability in your workflow with: java -version && javac -version as an early smoke check'
91
+ docs:
92
+ - url: 'https://github.com/actions/setup-java'
93
+ label: 'actions/setup-java — install Java on any GitHub-hosted runner'
94
+ - url: 'https://packages.ubuntu.com/noble/'
95
+ label: 'Ubuntu 24.04 (Noble) package search — verify available package versions'
96
+ - url: 'https://adoptium.net/temurin/releases/?version=11'
97
+ label: 'Eclipse Temurin — Java 11 LTS builds for all platforms'
98
+ - url: 'https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2404-Readme.md'
99
+ label: 'ubuntu-24.04 runner software report — pre-installed Java versions'
@@ -0,0 +1,96 @@
1
+ id: runner-environment-132
2
+ title: 'windows-2025 runner: .NET 6 SDK removed — NETSDK1045 when targeting net6.0'
3
+ category: runner-environment
4
+ severity: error
5
+ tags:
6
+ - dotnet
7
+ - windows-2025
8
+ - net6
9
+ - sdk
10
+ - netsdk1045
11
+ - eol
12
+ patterns:
13
+ - regex: 'NETSDK1045.*\.NET 6\.0'
14
+ flags: 'i'
15
+ - regex: 'does not support targeting.*\.NET 6'
16
+ flags: 'i'
17
+ - regex: 'error NETSDK1045'
18
+ flags: 'i'
19
+ error_messages:
20
+ - 'error NETSDK1045: The current .NET SDK does not support targeting .NET 6.0.'
21
+ - 'error NETSDK1045: The current .NET SDK does not support targeting .NET 6.0. Either target .NET 8.0 or higher, or use a .NET SDK that supports .NET 6.0.'
22
+ root_cause: |
23
+ .NET 6 reached end-of-life on November 12, 2024. The windows-2025 runner image does not
24
+ include the .NET 6 SDK or runtime. Pre-installed .NET SDKs on windows-2025 are .NET 8
25
+ and .NET 9 only.
26
+
27
+ Workflows using dotnet build, dotnet test, or dotnet publish that target net6.0 TFM fail
28
+ with NETSDK1045 because no installed SDK can build or run .NET 6 targets. This affects:
29
+ - Projects with <TargetFramework>net6.0</TargetFramework> in their .csproj
30
+ - Multi-target projects including net6.0 in <TargetFrameworks>
31
+ - Workflows that run dotnet run with a net6.0 project
32
+
33
+ The windows-2022 runner still includes .NET 6 for legacy compatibility, so workflows using
34
+ runs-on: windows-2022 are unaffected. The breakage appears when migrating to windows-2025
35
+ or when windows-latest switches to windows-2025.
36
+ fix: |
37
+ Option A (recommended): Upgrade the project's TargetFramework to net8.0 or net9.0. .NET 8
38
+ is the current LTS release and is pre-installed on windows-2025.
39
+
40
+ Option B (legacy support): Use actions/setup-dotnet to explicitly install the .NET 6 SDK.
41
+ Note: .NET 6 is EOL and receives no security patches — this option is not recommended for
42
+ production workloads.
43
+
44
+ Option C (short-term): Pin to windows-2022 runner temporarily while upgrading.
45
+ fix_code:
46
+ - language: yaml
47
+ label: 'Option A — upgrade target framework to .NET 8 LTS (recommended)'
48
+ code: |
49
+ # In your .csproj, update:
50
+ # <TargetFramework>net8.0</TargetFramework>
51
+ # Then in your workflow:
52
+ jobs:
53
+ build:
54
+ runs-on: windows-2025
55
+ steps:
56
+ - uses: actions/checkout@v4
57
+
58
+ - uses: actions/setup-dotnet@v4
59
+ with:
60
+ dotnet-version: '8.0.x'
61
+
62
+ - name: Build
63
+ run: dotnet build --configuration Release
64
+
65
+ - language: yaml
66
+ label: 'Option B — explicitly install .NET 6 SDK (EOL, not recommended for production)'
67
+ code: |
68
+ jobs:
69
+ build:
70
+ runs-on: windows-2025
71
+ steps:
72
+ - uses: actions/checkout@v4
73
+
74
+ - uses: actions/setup-dotnet@v4
75
+ with:
76
+ dotnet-version: |
77
+ 6.0.x
78
+ 8.0.x
79
+
80
+ - name: Build
81
+ run: dotnet build --framework net6.0
82
+ prevention:
83
+ - 'Audit all TargetFramework and TargetFrameworks values before migrating to windows-2025'
84
+ - 'Monitor the .NET release lifecycle at https://dotnet.microsoft.com/platform/support/policy for upcoming EOL dates'
85
+ - 'Use Dependabot or Renovate to track .NET SDK versions referenced in global.json or setup-dotnet steps'
86
+ - 'Check the windows-2025 runner software report (runner-images/Windows2025-Readme.md) before migration to see pre-installed SDKs'
87
+ - 'Set up a CI matrix that tests both windows-2022 and windows-2025 during migration periods'
88
+ docs:
89
+ - url: 'https://github.com/actions/runner-images/blob/main/images/windows/Windows2025-Readme.md'
90
+ label: 'windows-2025 runner software report — pre-installed SDK versions'
91
+ - url: 'https://dotnet.microsoft.com/platform/support/policy/dotnet-core'
92
+ label: '.NET release lifecycle and EOL schedule'
93
+ - url: 'https://github.com/actions/setup-dotnet'
94
+ label: 'actions/setup-dotnet — install specific .NET SDK versions'
95
+ - url: 'https://github.com/actions/runner-images/discussions'
96
+ label: 'GitHub runner-images discussions — windows-2025 migration issues'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@htekdev/actions-debugger",
3
- "version": "1.0.71",
3
+ "version": "1.0.72",
4
4
  "description": "65+ real GitHub Actions errors, queryable by agents. CLI + MCP server + Copilot skills + error database.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",