Containers handed over to runc cannot be started, killed or deleted when urunc runs without --root
I maintainer di solito rispondono entro 1 giorno
@Daksha1611 ci sta già lavorando.
Dal 18/10/2026.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 82/100
Direzione di ricerca
Inizia con runcExec() in cmd/urunc/utils.go e segui come costruisce gli argomenti runc quando --root è assente. Controlla i percorsi create, start, kill e delete per confermare che usino la stessa root dello stato. Il lavoro è completo quando i container non unikernel possono completare questo ciclo di vita senza un --root esplicito; il report dice che l’autore lo ha testato localmente.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Description
When urunc is called without --root, it picks its own default root:
/run/urunc, or $XDG_RUNTIME_DIR/urunc when running rootless. For
containers that are not unikernels, urunc hands over to runc by exec'ing it
with the original arguments. Since these do not contain --root either, runc
falls back to its own default root: /run/runc, or $XDG_RUNTIME_DIR/runc.
As a result, urunc create succeeds, but every following urunc start,
urunc kill and urunc delete looks for state.json under urunc's root. It
does not find it, so it returns an error before it can hand the command over
to runc. The runc container stays in the created state and is never
cleaned up.
containerd always passes --root, so setups through containerd (nerdctl,
Kubernetes, Docker) are not affected. Rootless podman does not pass
--root, so every non-unikernel image fails to run with
podman --runtime urunc. Based on the code, the same happens for rootful
callers that do not pass --root (/run/urunc vs /run/runc), but I have
only reproduced the rootless case.
System info
- Urunc version: e45d556 (main), built from source
- Arch: x86_64
- VMM: N/A (non-unikernel container, handed over to runc)
- Unikernel: N/A
- runc 1.3.6, podman 5.8.2, Fedora 43, kernel 7.0.4
Steps to reproduce
With rootless podman
podman --runtime /path/to/urunc run --rm docker.io/library/alpine:3.20 echo hellorunc list
Without podman
As a non-root user, with any plain OCI bundle (created with
runc spec --rootless) whose process binary exists in the rootfs:
urunc create ctr, from inside the bundle directory, without--rootrunc list, which showsctrascreatedin runc's default rooturunc start ctrurunc kill ctr KILLurunc delete ctrrunc list
Logs / output
Rootless podman
$ podman --runtime /path/to/urunc run --rm docker.io/library/alpine:3.20 echo hello-from-runc
time="2026-10-18T15:22:09+05:30" level=error msg="open /run/user/1000/urunc/985dfc4934dbbd29875d73a70f9f416f80a5cec104423eea94ca247552cebcba/state.json: no such file or directory"
Error: `/path/to/urunc start 985dfc4934dbbd29875d73a70f9f416f80a5cec104423eea94ca247552cebcba` failed: exit status 1
$ echo $?
126
$ runc list
ID PID STATUS BUNDLE
985dfc4934dbbd29875d73a70f9f416f80a5cec104423eea94ca247552cebcba 585968 created /home/<user>/.local/share/containers/storage/overlay-containers/985dfc49.../userdata
The arguments that rootless podman passes to the runtime contain no --root:
--systemd-cgroup create --bundle <bundle> --pid-file <pidfile> <id>
start <id>
delete --force <id>
Direct calls
$ urunc create xdg-repro
$ echo $?
0
$ runc list
ID PID STATUS BUNDLE
xdg-repro 585455 created /home/<user>/bundle
$ urunc start xdg-repro
time="2026-10-18T15:21:30+05:30" level=error msg="open /run/user/1000/urunc/xdg-repro/state.json: no such file or directory"
$ urunc kill xdg-repro KILL
time="2026-10-18T15:21:30+05:30" level=error msg="open /run/user/1000/urunc/xdg-repro/state.json: no such file or directory"
$ urunc delete xdg-repro
time="2026-10-18T15:21:30+05:30" level=error msg="open /run/user/1000/urunc/xdg-repro/state.json: no such file or directory"
$ runc list
ID PID STATUS BUNDLE
xdg-repro 585455 created /home/<user>/bundle
With an explicit urunc --root <dir>, the same bundle goes through
create, start, kill and delete without errors, and nothing is left
behind.
Possible fix
runcExec() in cmd/urunc/utils.go could pass urunc's root to runc when
--root was not given in the command line. Then both runtimes would use
the same state directory, which is what already happens under containerd.
I tested this change locally: the podman command above prints its output
and exits with 0, and the direct create/start/kill/delete sequence
works without --root.
Related
While testing the change above, I noticed that podman calls
urunc delete --force with no PATH set, so exec.LookPath("runc") fails
during podman's cleanup. That is a separate problem, which I will report in
its own issue.
- Lingua principale
- Go
- Stelle
- 306
- Fork
- 214
- Merge medio
- 2g 18h
- PR unite (30g)
- 29
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di urunc-dev/urunc
-
urunc-deploy cleanup never labels the node, so the cleanup DaemonSet does not runForse già presa @Sarthak-Shreshtha01 l’ha presa 6 giorni fa. Apertabug K8s/Tools
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
I maintainer di solito rispondono entro 1 giorno
-
FreeBSD: docs update and rootfs detectionForse già presa @yug105 l’ha presa 3 giorni fa. Apertadocumentation enhancement Storage
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
urunc-dev/urunc#1108 · 6 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Rumprun guests receive &, < and > as \u0026, \u003c and \u003eForse già presa @Sarthak-Shreshtha01 l’ha presa 12 giorni fa. Apertabug Guests
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
urunc-dev/urunc#1074 · 4 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Hooks run concurrently instead of in the listed orderForse di nuovo libera @anishmehta24 l’ha presa 17 giorni fa e non c’è nessuna pull request aperta. ApertaCore enhancement OCI
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
urunc-dev/urunc#1066 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Flag to keep pulled images on local runs of e2eForse già presa @slash-init l’ha presa 13 giorni fa. Apertadev
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
urunc-dev/urunc#1057 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di urunc-dev/urunc
Issue simili
-
confirmed enhancement go
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
DennisVlaanderen/aerendil#154 ·
I maintainer di solito rispondono entro 1 giorno
-
Generated README and SKILL omit HTTP-transport security settings and what local data the CLI keepsAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
mvanhorn/cli-printing-press#5181 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 1/5 1-3 ore Idoneità per principianti 83/100
Adyen/agent-marketplace#922 ·
I maintainer di solito rispondono entro 1 giorno
-
filer.remote.sync writes the S3 bucket-owner index (<buckets>/.system/owners/...) to remote storageAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
I maintainer di solito rispondono entro 1 giorno