Skip to content

Fix elfkickers CI race by disabling parallel make#207

Merged
zardus merged 1 commit intomasterfrom
fix/elfkickers-build
Feb 22, 2026
Merged

Fix elfkickers CI race by disabling parallel make#207
zardus merged 1 commit intomasterfrom
fix/elfkickers-build

Conversation

@zardus
Copy link
Owner

@zardus zardus commented Feb 22, 2026

Summary

  • fix intermittent elfkickers build failure in CI (toolcheck (elfkickers)) caused by a parallel make race
  • serialize the ELFkickers build in elfkickers/install by changing make -j $(nproc) to make -j1

Why

rebind links against ../elfrw/libelfrw.a, but ELFkickers upstream Makefile does not fully express dependency ordering under parallel builds. In CI this can cause:

/usr/bin/ld: ../elfrw/libelfrw.a: error adding symbols: file format not recognized

Running make single-threaded in this installer removes the race deterministically.

Validation

  • bash -n elfkickers/install
  • cloned BR903/ELFkickers and ran make -j1 successfully
  • verified artifacts elfrw/libelfrw.a and bin/rebind are produced

Copilot AI review requested due to automatic review settings February 22, 2026 04:24
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR fixes an intermittent build failure in CI for the elfkickers tool by disabling parallel make. The issue stems from race conditions in the upstream ELFkickers Makefile that cause builds to fail non-deterministically when multiple jobs run simultaneously.

Changes:

  • Modified the elfkickers install script to use single-threaded make (-j1) instead of parallel make (-j $(nproc))

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@@ -2,6 +2,6 @@

git clone --depth 1 https://github.com/BR903/ELFkickers
cd ELFkickers
Copy link

Copilot AI Feb 22, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consider adding a comment explaining why -j1 is necessary here. Since this deviates from the repository's convention of using make -j $(nproc) for parallel builds (seen in gdb, qemu, valgrind, etc.), a brief comment would help future maintainers understand this is a workaround for upstream Makefile race conditions. For example: # Use -j1 to avoid race conditions in upstream ELFkickers Makefile

Suggested change
cd ELFkickers
cd ELFkickers
# Use -j1 to avoid race conditions in upstream ELFkickers Makefile

Copilot uses AI. Check for mistakes.
Comment on lines 3 to +5
git clone --depth 1 https://github.com/BR903/ELFkickers
cd ELFkickers
make -j $(nproc)
make -j1
Copy link

Copilot AI Feb 22, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This installer clones a third-party repository from https://github.com/BR903/ELFkickers without pinning it to an immutable commit and then immediately runs make, effectively granting that external code execution in your CI environment. If the GitHub account or repository is compromised, an attacker can inject malicious build steps to exfiltrate CI secrets or tamper with the generated binaries. To mitigate this supply-chain risk, pin the clone to a specific trusted commit or release and add integrity verification before building.

Example of the risky pattern:

git clone --depth 1 https://github.com/BR903/ELFkickers
cd ELFkickers
make -j1

Copilot uses AI. Check for mistakes.
@zardus zardus merged commit e7f53b0 into master Feb 22, 2026
75 checks passed
@zardus zardus deleted the fix/elfkickers-build branch February 22, 2026 04:31
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

Successfully merging this pull request may close these issues.

3 participants