Crowdstrike party time... it looks like the data was uninitialized, but not intentionally. The mismatch in the code run at ring0 was them fucking up validation, and they failed to account in their C++-built interpreter. It accessed data that was "supposed" to be there but wasn't. It is thankfully not as simple as "we forgot to initialize our full table", it's that their tooling didn't catch that they asked for 21 slots in the update while the actual program/interpreter only knew about 20.
Given this was an interpreter built on top of C++ (if we keep reading this thing correctly), it's hard to say whether or not this would have happened in a safer language since this isn't just your typical "forgot to initialize a table on the stack". Unsurprising this never happened to them because they were so utterly garbage and sloppy with their DevOps practices.
But it seems like there's very little direct action I could do in C to make this problem go away.