containerd2: upgrade to 2.3.4 and runc to 1.4.3 - #18777
containerd2: upgrade to 2.3.4 and runc to 1.4.3#18777Nan Liu (liunan-ms) wants to merge 2 commits into
Conversation
8e724bd to
d7640f8
Compare
Update runc to 1.4.3 and build it with Go < 1.25 to retain the established pre-systemcrypto toolchain without an explicit systemcrypto policy opt-out.
d7640f8 to
518df92
Compare
There was a problem hiding this comment.
🟡 Changes recommended
Snapshotter availability can be misdetected or remain stale, causing failed sandbox creation or repeated image pulls.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
Upgrades Azure Linux’s container runtime packages and synchronizes patches and supply-chain metadata.
Changes:
- Upgrades containerd2 to 2.3.4 and runc to 1.4.3.
- Rebases retained patches and removes fixes now provided upstream.
- Updates source hashes, signatures, changelogs, and component manifests.
File summaries
| File | Description |
|---|---|
SPECS/runc/runc.spec |
Updates runc version, commit, and changelog. |
SPECS/runc/runc.signatures.json |
Updates the runc source signature. |
SPECS/containerd2/multi-snapshotters-support.patch |
Rebases multi-snapshotter support. |
SPECS/containerd2/CVE-2026-56852.patch |
Rebases the retained Unicode normalization fix. |
SPECS/containerd2/CVE-2026-53492.patch |
Removes an upstreamed checkpoint fix. |
SPECS/containerd2/CVE-2026-53489.patch |
Removes upstreamed checkpoint hardening. |
SPECS/containerd2/CVE-2026-53488.patch |
Removes upstreamed label filtering. |
SPECS/containerd2/CVE-2026-50195.patch |
Removes an upstreamed checkpoint fix. |
SPECS/containerd2/CVE-2026-47262.patch |
Removes upstreamed user-file bounds. |
SPECS/containerd2/CVE-2026-42506.patch |
Removes an upstreamed HTML parser fix. |
SPECS/containerd2/CVE-2026-42502.patch |
Removes an upstreamed HTML rendering fix. |
SPECS/containerd2/CVE-2026-39882.patch |
Removes upstreamed OTLP response limits. |
SPECS/containerd2/CVE-2026-33814.patch |
Removes an upstreamed HTTP/2 fix. |
SPECS/containerd2/CVE-2026-27136.patch |
Removes an upstreamed tokenizer fix. |
SPECS/containerd2/CVE-2026-25681.patch |
Removes an upstreamed doctype fix. |
SPECS/containerd2/CVE-2026-25680.patch |
Removes an upstreamed parser performance fix. |
SPECS/containerd2/containerd2.spec |
Updates containerd2 and its patch set. |
SPECS/containerd2/containerd2.signatures.json |
Updates the containerd source signature. |
cgmanifest.json |
Records both upgraded dependencies. |
Review details
- Files reviewed: 19/20 changed files
- Comments generated: 2
- Review effort level: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| + if _, ok := image.Snapshotters[snapshotter]; ok || len(image.Snapshotters) == 0 { | ||
| + return &image, nil | ||
| + return nil | ||
| + } |
| + snapshotters := make(map[string]struct{}) | ||
| + for label := range info.Labels { | ||
| + const Prefix = "containerd.io/gc.ref.snapshot." | ||
| + if strings.HasPrefix(label, Prefix) { | ||
| + snapshotters[label[len(Prefix):]] = struct{}{} | ||
| + const prefix = "containerd.io/gc.ref.snapshot." | ||
| + if strings.HasPrefix(label, prefix) { | ||
| + snapshotters[label[len(prefix):]] = struct{}{} |
518df92 to
33c4704
Compare
| --- | ||
| integration/image_pull_timeout_test.go | 6 ++-- | ||
| internal/cri/server/container_status_test.go | 2 +- | ||
| internal/cri/server/images/image_pull.go | 18 ++++++----- |
There was a problem hiding this comment.
issue (blocking): Preserve the previous snapshotter selection for pause-image pulls.
The old patch passed the sandbox’s resolved snapshotter directly to PullImage, keeping pulling and sandbox creation aligned. This rebase removes that argument, so PullImage selects independently.
With an empty runtime handler and no annotation override, pulling falls back to the global snapshotter while sandbox creation honors the default runtime’s snapshotter override. Previously these paths used the same resolved choice; now they can differ.
There was a problem hiding this comment.
Good catch, thanks! Fixed it by restoring the original contract: RunPodSandbox resolves the snapshotter once via RuntimeSnapshotter(ctx, ociRuntime) and passes it through ensurePauseImageExists → PullImage, so pulling and sandbox creation stay aligned. Normal kubelet PullImage calls pass "" and keep resolving via snapshotterFromPodSandboxConfig as before, so that path is unchanged.
Rebase the multi-snapshotter and CVE-2026-56852 patches for containerd 2.3.4, and remove CVE patches that are fixed upstream.
33c4704 to
bd59f9f
Compare
Summary
Validation