Skip to content

docker run output sometimes lost (exit 0, empty stdout) right after an engine start on 29.9.0 #569

Open

Description

@zcsizmadia

Found while verifying engine upgrade and rollback for #568.

What happens

Right after the engine starts, docker run --rm -v vol:/data alpine:3.20 cat /data/f sometimes exits 0 with no output. The file is there: the next run prints it, and ls shows it unchanged.

Measured (WSL 3.0.3, Windows 10 19045, docker CLI 29.8.2, skrog built from #568)

One throwaway named engine (skrog target create), driven with --state-dir and its own context. Each run is read 1–4 immediately after skrog start, engine rollback or engine upgrade.

dockerd output lost
29.9.0 (rootfs 29.9.0-2) 4 of 23
29.9.2 (rootfs 29.9.2-1) 0 of 53

It was always the first or second run after a start. The skrog binary, CLI, image and volume were the same throughout; only the engine differed.

Not known

  • The cause. I have not established whether this is moby 29.9.0 (an attach/stdout race) or skrog's relay right after a start that 29.9.2's timing happens not to trigger. 53 clean reads make 29.9.2 look unaffected; that is not proof.
  • Whether 29.8.x, which most installs run today, is affected. Not tested.
  • Whether it occurs without a fresh start. Not tested; every loss followed one.

Why it matters

Exit 0 with output silently missing is the worst kind of failure for scripts and CI: $(docker run … cat x) gets an empty string and nothing says so.

Next

  • Reproduce against the engine socket directly, bypassing skrog's pipe, to place the fault.
  • Run the same loop on 29.8.2.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions