Stephen Kell
Stephen Kell
Some more useful stuff for when it matters to get this right: https://stackoverflow.com/questions/273691/using-progname-instead-of-argv0
It also becomes necessary to handle 'non-pointer stuffing', i.e. putting an integer in pointer-typed storage... the same structure would have to deal with both. As a possible alternative, in liballocs...
It feels like this facility is basically recording "any exception to the declared type", where for unions, a single valid arm is considered a deviation, but also (say) a long...
The overlay idea is basically an explicit "timely revocation" facility, which must be explicitly checked frequently by (instrumented) code. It could catch use-after-free, non-simultaneous union changes and stuffing (an undeclared...
This is all tied up with #53 of course.
And for moving GC, I was imagining tracking where "pointer-derived values" escaping to non-pointer-typed storage, with a special instrumentation/analysis for C code to catch these. How would I track them...
"Use after free" is actually a nice case: the free is a hint that a re-use is coming, but it gives us a window of time to act: "use after...
A possible way to deal with union arms is issuing multiple virtual addresses mapping the same memory, with only one active per type/member at a time. We'd have to update...
There could be a fun paper in enumerating the different invariants and the checking strategies that they (complementarily) require, then figuring out rules for how different invariants may be composed....
Can type-changing writes be instrumented to cause a non-kernel-trapping permission switcheroo, using something like Intel's "Memory Protection Keys"? In short, no. There are only 16 keys and each page is...