D283 - The wall needed two things right at once, and the sweep varied one at a time
decided · 2026-08-26 · image+0xafc959
moved, to an address predicted before the run
Twenty-three functions had been eliminated as the source of the
missing region base at the image+0xafc959 wall - every call
PPSA02664 makes, dyed on its return value,
and swept on its offset-zero out-parameter. The fault
never moved. The conclusion drawn was that nothing the guest calls
supplies the base.
That conclusion was wrong, and the reason is the shape of the sweep
rather than any of the measurements in it.
sceKernelReserveVirtualRange needs both to
be right:
| varied | outcome |
|---|---|
return 0x0 alone |
fault unchanged at 0xfffe0 |
base planted at *arg0 alone |
fault unchanged at 0xfffe0 |
| both together | fault moves to the predicted address |
The guest checks the return before reading the out-parameter. Plant the base and answer an error, and it takes the failure path and never looks. Answer success and plant nothing, and it reads a zero. Each half alone is a clean negative, and two clean negatives read exactly like proof of absence.
One-at-a-time sweeps cannot see a two-condition
dependency, and this is the first one here that needed the
pair. That is a property of the tool, not of this function, so it will
recur: orbistoun-propose::turn sweeps arguments and
diagnostic axes independently, and the SweepArguments step
is defined as "exhaustive rather than ranked - six slots and two
sentinels is twelve boots". Exhaustive over one axis is not
exhaustive.
The evidence is a prediction, not a movement. D224 and D226 are the standing warning that an intervention which moves a wall is not a diagnosis - a poke can buy progress with a wrong answer. So the claim here is arithmetic and was written down first:
base 0x11000000 -> predicted 0x110fffe0 -> observed 0x110fffe0
base 0x22000000 -> predicted 0x220fffe0 -> observed 0x220fffe0
planted + arg1 - 0x20, where
arg1 = 0x100000 is the length the guest passed. The fault
address is a computed function of the planted value across two
independent trials. That ties the movement to the intervention by a
relationship rather than by coincidence of timing, which is the second
observation D227 asks for.
So the call shape is established from our own measurements:
arg0 is an in-out void ** holding zero on
entry - "you choose the address" - arg1 is the length, and
the granted base is written back as a full 64-bit word,
not the four bytes a int * out-parameter takes (D210,
D272). arg3 = 0x40000 is alignment-shaped and remains
assumed; nothing measured yet depends on it.