Skip to content

AmigaDiskBench v2.10

Latest

Choose a tag to compare

@derfsss derfsss released this 10 Sep 22:29

AmigaDiskBench v2.10

Bug Fixes

  • S.M.A.R.T. signature written to the wrong ATA registers — thanks to @alfredone (#2, fixes #1). The 0x4F/0xC2 SMART signature was placed in LBA Low and LBA Mid instead of LBA Mid and LBA High, in both the 16-byte and 12-byte ATA PASS-THROUGH CDBs. Per SAT, the 16-byte CDB carries LBA Mid at byte 10 and LBA High at byte 12; the 12-byte CDB carries them at bytes 6 and 7. With the signature one register too low, drives are entitled to abort the command — so the HD_SCSICMD S.M.A.R.T. tier could not work on SAT-compliant drivers.

Build

  • ACCESS_READ → SHARED_LOCK in engine_diskinfo.c, gui_validate.c and viz_profile.c. In SDK 54.25 ACCESS_READ has moved to dos/obsolete.h and is no longer reachable through proto/dos.h, breaking a clean build. SHARED_LOCK is the identical value (-2), is the current SDK spelling, and was already in use elsewhere in the tree.

Also included: the v2.9 audit

v2.9 shipped as a binary release but its sources were never published. They are included here.

  • Critical — Random/Mixed workloads performed no I/O on some filesystems: ChangeFilePosition() returns a DOS boolean (non-zero = success), not the old seek position. The != -1 check treated a DOSTRUE success as failure (skipping every read/write) and a 0 failure as success. Fixed in Random Write, Random Read and Mixed 70/30; IOPS now counts only successful operations.
  • Random/Mixed workloads use a fixed random seed, so the offset sequence is identical on every run and pass and results are comparable run-to-run.
  • Worker logging raced the GUI: NP_Entry child processes share globals with the main task, so the worker took the "main task" logging path and mutated the log buffer / texteditor gadget cross-process. Worker log lines now route through Exec message passing.
  • DosList deadlock risk: ScanSystemDrives() no longer performs blocking DOS/device I/O while holding LockDosList().
  • Crash fixes: VALIDATE-mode cleanup; wild pointer on volume-only DosList entries (DLT_VOLUME has no dol_Startup); RefreshGList() on a NULL window when finishing while iconified; ReadArgs stack corruption; titlebar iconify gadget.
  • Use-after-free / leak fixes: gadget label lists freed before window disposal; child windows left open after quit; dangling GA_Text buffers; comparison-window nodes; smartctl NIL: filehandles; details-window menus; hardware cache at exit.
  • Logic fixes: legacy CSV import column corruption; compare-window Duration always 0; "Run Bulk" with nothing selected; warmup write loop on a full volume; smartctl reporting healthy drives as failing; SCSI VPD page-code validation; floppy media type; S.M.A.R.T. GUI/worker races.
  • Visualization fixes: "Last Week" filter across month/year boundaries; MinVersion as a true numeric filter; mixed Include/Exclude no longer inverts; moving-average Window clamp; MaxSeries truncation; 0x colour prefix and uppercase .VIZ; [XAxis] Source defaulting.

Build details

Built against SDK 54.25 in walkero/amigagccondocker:os4-gcc11. Clean build, no warnings. Binary reports $VER: AmigaDiskBench 2.10 (10.09.2026).