Skip to content

Fix browser library ABI compatibility across runner chroots - #10402

Merged
lpcox merged 6 commits into
mainfrom
copilot/resolve-glibc-issue
Oct 21, 2026
Merged

lpcox merged 6 commits into
mainfrom
copilot/resolve-glibc-issue

Conversation

Copilot AI commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

AWF injected Ubuntu 26.04 browser libraries into an Ubuntu 24.04 runner chroot, causing Chrome launch to fail on unavailable GLIBC_2.43 symbols.

  • Compatible payload: Build browser dependencies separately on pinned Ubuntu 22.04, the oldest supported runner. Capture the complete dependency closure, including base-image packages, while excluding libc, its loader, and compiler runtimes.
  • Fallback-only staging: Stage only libraries missing inside the chroot, preserving newer runner libraries and tools. Keep native image packages for non-chroot execution.
  • Regression coverage: Add real-chroot Chrome launches on Ubuntu 22.04 and 24.04, covering native libraries, forced fallback staging, and runner GLib compatibility.

Firewall, proxy, and capability restrictions remain unchanged.

Copilot AI changed the title [WIP] Fix browser library injection ABI mismatch for AWF Fix browser library ABI compatibility across runner chroots Oct 21, 2026
Copilot AI requested a review from lpcox October 21, 2026 14:30
@lpcox
lpcox marked this pull request as ready for review October 21, 2026 14:37
Copilot AI max review requested due to automatic review settings October 21, 2026 14:37

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🔵 Needs a closer look

Session-wide library resolution changes need human review of supported host compatibility and real-chroot validation.

3 open issues
What changed in this PR

Addresses browser ABI mismatches between AWF’s agent image and runner chroots by separating fallback libraries from native image dependencies.

Changes:

  • Builds the fallback browser payload on pinned Ubuntu 22.04.
  • Adds missing-library staging while retaining native packages for non-chroot execution.
  • Adds real Chrome launch coverage and compatibility documentation.
File Description
tests/​integration/​chroot-browser.test.ts Tests native and forced-fallback Chrome launches.
tests/​entrypoint-phase-functions.test.sh Checks payload staging and native-library preservation.
scripts/​ci/​agent-dockerfile-browser-deps.test.ts Checks payload construction and dependency capture.
docs/​troubleshooting.md Documents recovery from browser libc mismatches.
docs/​agent-images.md Explains fallback payload compatibility.
docs-site/​src/​content/​docs/​reference/​agent-images.md Updates published browser-library guidance.
containers/​agent/​entrypoint.sh Selectively stages fallback libraries.
containers/​agent/​Dockerfile Builds an independent Ubuntu 22.04 payload.
.github/​workflows/​test-chroot.yml Adds browser testing on Ubuntu 22.04 and 24.04.

Review effort: Max

Comment thread containers/agent/entrypoint.sh Outdated
Comment on lines +772 to +775
# Resolve symlinks inside the chroot, not against the image filesystem.
if chroot /host /bin/test -f "$lib" 2>/dev/null; then
continue
fi
Comment on lines +44 to +45
apt-get -o Acquire::Retries=3 update && \
apt-get -o Acquire::Retries=3 install -y --no-install-recommends $BROWSER_PKGS && \
Comment on lines +325 to +327
[ -z "${BROWSER_LD_LIBRARY_PATH}" ]
[ ! -e "${staged_lib}" ]
[ "$(cat "${host_root}${fake_lib}")" = "newer-runner-library" ]
@lpcox

lpcox commented Oct 21, 2026

Copy link
Copy Markdown
Collaborator

@copilot address review feedback

Co-authored-by: lpcox <15877973+lpcox@users.noreply.github.com>

Copilot AI commented Oct 21, 2026

Copy link
Copy Markdown
Contributor Author

@copilot address review feedback

Addressed in commit 0a476ef.

@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

✅ Copilot review passed with no inline comments.

@copilot Add the ready-for-aw label to this PR to trigger agentic CI smoke tests.

@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Documentation Preview

Documentation has been built for this PR.

Download preview artifact

To view locally:

  1. Download the docs-preview-pr-10402 artifact from the workflow run
  2. Unzip and open index.html in your browser

Built from commit cb187fa

@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

✅ Coverage Check Passed

Overall Coverage

Metric Base PR Delta
Lines 93.39% 93.39% ➡️ +0.00%
Statements 91.83% 91.83% ➡️ +0.00%
Functions 90.98% 90.98% ➡️ +0.00%
Branches 85.87% 85.87% ➡️ +0.00%
📁 Per-file Coverage Changes (1 files)
File Lines (Before → After) Statements (Before → After)
src/enclave/host-executor-server.ts 91.0% → 91.0% (+0.00%) 89.7% → 90.0% (+0.29%)

Coverage comparison generated by scripts/ci/compare-coverage.ts

@lpcox

lpcox commented Oct 21, 2026

Copy link
Copy Markdown
Collaborator

@copilot merge main and resolve conflicts

…-issue

Co-authored-by: lpcox <15877973+lpcox@users.noreply.github.com>

Copilot AI commented Oct 21, 2026

Copy link
Copy Markdown
Contributor Author

@copilot merge main and resolve conflicts

Merged main into the branch in merge commit 6bbbe7f; there were no conflicts.

@lpcox

lpcox commented Oct 21, 2026

Copy link
Copy Markdown
Collaborator

Copilot AI commented Oct 21, 2026

Copy link
Copy Markdown
Contributor Author

@copilot fix this failing ci check https://github.com/github/gh-aw-firewall/actions/runs/39633049989/job/119336266750?pr=10402

Updated the browser integration test to match the runner’s loader-resolved native library path. Commit: 0f1d1a0.

@lpcox
lpcox merged commit bb3de8d into main Oct 21, 2026
32 of 33 checks passed
@lpcox
lpcox deleted the copilot/resolve-glibc-issue branch October 21, 2026 17:26
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.

Browser library injection requires GLIBC_2.43 on an older chroot runtime (AWF v0.28.70)

3 participants