summaryrefslogtreecommitdiffstats
path: root/Cargo.lock
diff options
context:
space:
mode:
authorsalmonik <salmonik@tuta.io>2026-08-04 01:44:05 +0200
committersalmonik <salmonik@tuta.io>2026-08-04 01:44:05 +0200
commit3e2261d83176752f3ea21e0c97f330b4c1757437 (patch)
tree8bbc92f917121fafaf193f1af1c42fba624abda9 /Cargo.lock
parentv0.5.8: heap-free QR encoder + crash-dump QR on framebuffer (diff)
downloadrs-dos-3e2261d83176752f3ea21e0c97f330b4c1757437.tar.gz
rs-dos-3e2261d83176752f3ea21e0c97f330b4c1757437.zip
v0.5.9: fix OptiPlex heap crash — EBS retry must not rebuild the free list
Root cause: on real hardware SetMode can invalidate the pre-captured ExitBootServices map key, so EBS fails and the retry refreshed the map via capture_memory_map -> init_heap, which REBUILT the free list from the raw map and wiped the allocation state of every pre-EBS live object (the display shadow and the vt grids). Their spans became free while still live, later allocations carved inside the shadow, and the display writes clobbered them — zeroed back-pointers (family A ptr=0x404443e0 block=0x0) and gray glyph pixels (family B 0xaaaaaa00aaaaaa = 0x00AAAAAA = PALETTE[7] fg-7 text colour, not a firmware scrub). Fix: refresh_and_exit now re-captures the map and returns a fresh EBS key without rebuilding the free list (refresh_map_key); the free list is the authoritative live-allocation state. Verified in QEMU under a forced EBS failure (SIMULATE_EBS_FAILURE test hook): verify ok, probe NOT free, flhead outside the shadow — identical to a clean boot, and the full shell sequence is crash-free. Also: removed the crash-family debug markers from the screen (boot-time heapdbg lines, vt verify marker, shadow marker) — the vt grid self-check stays serial-only. Version 0.5.8 -> 0.5.9.
Diffstat (limited to '')
-rw-r--r--Cargo.lock6
1 files changed, 3 insertions, 3 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 520111e..ba46b62 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -4,7 +4,7 @@ version = 4
4 4
5[[package]] 5[[package]]
6name = "rsdos" 6name = "rsdos"
7version = "0.5.8" 7version = "0.5.9"
8dependencies = [ 8dependencies = [
9 "rsnix", 9 "rsnix",
10 "shell", 10 "shell",
@@ -19,11 +19,11 @@ dependencies = [
19 19
20[[package]] 20[[package]]
21name = "rsnix" 21name = "rsnix"
22version = "0.5.8" 22version = "0.5.9"
23 23
24[[package]] 24[[package]]
25name = "shell" 25name = "shell"
26version = "0.5.8" 26version = "0.5.9"
27dependencies = [ 27dependencies = [
28 "rsdosedit", 28 "rsdosedit",
29 "rsnix", 29 "rsnix",