Skip to content

gen_dwarf: run container as root, resolve deps via dnf, fix holder PID#127

Merged
taodd merged 1 commit into
mainfrom
chore/embedded-dwarf-refresh-bot
Jun 5, 2026
Merged

gen_dwarf: run container as root, resolve deps via dnf, fix holder PID#127
taodd merged 1 commit into
mainfrom
chore/embedded-dwarf-refresh-bot

Conversation

@taodd
Copy link
Copy Markdown
Owner

@taodd taodd commented Jun 5, 2026

The refresh-embedded-dwarf workflow's manual dispatch failed for every version. Four issues in gen_dwarf_for_version.sh, fixed here:

  • Drop --userns=keep-id: it mapped the container process to the host's non-root UID, so dnf/rpm failed with "must be run as superuser". The rootless-podman default already maps container root back to the host user, so bind-mounted output stays host-owned.
  • Add --allowerasing to the build-deps install so dnf can swap the image's curl-minimal for the requested curl (they conflict).
  • Replace 'rpm -ivh --force' with a dnf install against the pinned per-release ceph repo + EPEL, so ceph-osd's full runtime dependency closure (ceph-base, libaio, thrift, tcmalloc, python3-rados, ...) is installed -- otherwise ceph-osd can't reach its entry point under gdb.
  • Locate the held ceph-osd via gdb's PID, not the gdb 'shell' command's PID: ceph-osd and the keep-alive shell are siblings (both children of gdb), so the old 'pgrep -P holder' never matched.

Validated end-to-end locally for 19.2.2: both JSONs generated and the embedded-header re-aggregate + relink passes.

The refresh-embedded-dwarf workflow's manual dispatch failed for every
version. Four issues in gen_dwarf_for_version.sh, fixed here:

- Drop --userns=keep-id: it mapped the container process to the host's
  non-root UID, so dnf/rpm failed with "must be run as superuser". The
  rootless-podman default already maps container root back to the host
  user, so bind-mounted output stays host-owned.
- Add --allowerasing to the build-deps install so dnf can swap the image's
  curl-minimal for the requested curl (they conflict).
- Replace 'rpm -ivh --force' with a dnf install against the pinned
  per-release ceph repo + EPEL, so ceph-osd's full runtime dependency
  closure (ceph-base, libaio, thrift, tcmalloc, python3-rados, ...) is
  installed -- otherwise ceph-osd can't reach its entry point under gdb.
- Locate the held ceph-osd via gdb's PID, not the gdb 'shell' command's
  PID: ceph-osd and the keep-alive shell are siblings (both children of
  gdb), so the old 'pgrep -P holder' never matched.

Validated end-to-end locally for 19.2.2: both JSONs generated and the
embedded-header re-aggregate + relink passes.
@taodd taodd merged commit 7b42338 into main Jun 5, 2026
49 of 51 checks passed
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.

1 participant