Skip to content

MD5 check fails with uutils dd on Ubuntu 25.10 #357

Description

@yuxi-liu-wired

On Ubuntu 25.10, the default /usr/bin/dd is rust-coreutils (uutils), which has partial-write bugs on pipes. makeself uses dd internally to peel the payload off the shell header, so the extraction produces a different byte stream on each run against the same archive. The symptom is Error in MD5 checksums: X is different from Y where X varies between runs. The archive and the expected hash are both fine.

The bug in uutils has had one round of fixes (uutils PR #8750, shipped as rust-coreutils 0.2.2-0ubuntu2.1, tracked in Launchpad #2125535) and further partial-write cases were addressed in uutils PR #10235, merged 2026-01-17. Not all distro packages have caught up, and each new dd implementation that appears in the wild seems to rediscover some edge case that silently corrupts pipe output. As long as makeself relies on dd for the internal slice, it will keep inheriting these.

Workaround for affected users, without touching system-wide coreutils:

mkdir -p /tmp/gnu-dd-shim
ln -sf /usr/bin/gnudd /tmp/gnu-dd-shim/dd
PATH=/tmp/gnu-dd-shim:$PATH ./archive.run

Issue #256 from 2021 already proposed replacing MS_dd with tail -c +N | head -c M, which has no dependency on dd quirks, and offered a patch. Applying that approach to both MS_dd and MS_dd_Progress would make makeself output robust against any future dd regression in any implementation. A smaller fix, if keeping dd, would be switching bs= to paired ibs=/obs=, which sidesteps the uutils-specific parameter-semantics difference.

Either change would remove a class of silent-corruption failure that currently looks to end users like a bad download.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions