D273 - A count, an offset and a descriptor are read as data, not tested against a table

decided · 2026-08-25 · the fourth instance of one shape in a day

sceKernelOpen answered GuestError::InvalidArgument for a null path. sceKernelRead answered InvalidHandle for a bad descriptor. sceKernelLseek did the same.

All three return values a caller uses directly - a descriptor, a byte count, a file offset - and a GuestError placeholder is a small positive integer. So the probe reported, in its own words: a null path opened successfully, and reading and seeking an invalid descriptor reported success.

One FAILED_DESCRIPTOR now covers them, negative so a caller testing < 0 sees it.

Assumed, not established: that failure is reported negatively. It is the POSIX convention and this kernel is FreeBSD-derived, which makes it a good assumption and still an assumption. -1 rather than a specific errno, because which code comes back is a question for hardware.

Counting today: a failed open looking like a descriptor, two booleans reading as true (D271), and now a count and an offset. The placeholders were designed to be unmistakable in a trace, and the property that achieves that - staying below the high bit - is exactly what makes them mistakable in a register. That tension is worth stating plainly rather than fixing one call at a time.