Skip to content

AKAI: a rip can lose a run of blocks inside a partition, and the table sees nothing #35

Description

@bmxcode

Found while doing D19, and deliberately not done there.

#25 records nine images that are short of the disc they were made from, and identifies them by a declared partition whose header is missing — the table says eleven and the image holds one. That is the visible case. There is a second one, and the partition table cannot see it at all.

Evidence

Three discs declare exactly as many partitions as they hold and still carry displaced audio, caught by the payload check D19 added (ADR-0027):

Disc Partitions declared / present Displaced Where
Best Service - Alpha Dance II AKAI.mdx 6 / 6 21 AC.DRUMLOOPS, last 21 of 22 samples
AKAI.S3000.Sound.Library.1.mdx 13 / 13 3 3084 B.BEAT6, last 3 of 8
AKAI.S3000.Sound.Library.3.mdx 13 / 13 1 VOLUME 001, its only file

25 files, all .mdx, each a run to the end of one volume — the same signature as the short images, one layer down. The rip dropped blocks inside a partition rather than the blocks a partition header sat on, so every header is where the table says it is and the declared-against-present arithmetic reads clean.

Alpha Dance II is the specimen worth working from: 21 of 22 samples in one volume, which is nearly the whole volume, on a disc that looks complete by every other measure this project has.

Why it matters beyond the 25 files

declared == present is not a clean bill of health, and it currently reads like one. list prints that pair, ADR-0023 treats it as the tell for a short image, and tests/test_discs.py pins it per disc. None of that is wrong; it is just blind to this case. Whatever comes of this issue, that caveat should not be lost.

What would need establishing

  • Is the displacement a whole number of 32 KB MDX blocks, as it is on all nine images of AKAI: the partitions of a short image are readable and are not read #25? If so it is the same fault and the same layer, and the two issues are one.
  • Does the allocation map notice? On the short images the chain check passes — 68 267 of 68 284 files agree with their declared size — so the map is describing a disc the image no longer matches. Worth measuring here specifically: if a chain is short on exactly these volumes, that is a second structure agreeing and a cheaper detector than reading every payload.
  • How many discs have this? The 25 files are what the payload check catches on the 44 AKAI discs. A volume whose displaced payload happens to land on another sample's header would not be caught, and D19's name test has zero positives on real data, so the count is a floor rather than a total.

Discs needed

Best Service - Alpha Dance II AKAI.mdx, AKAI.S3000.Sound.Library.1.mdx and .3.mdx.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions