Your operating system executes different program images for every successive execution of your program, picked in an unpredictable manner.
How do you prove that every possibility passes the safety tests? How do you measure the risk of this random selection? How do you know when you have done enough simulation?
How do you match up software randomization with the ISO 26262 concept that all software faults are systematic and not random as (some) hardware faults are?
How do you prove that memory allocation and execution always meet performance goals? How do you construct and perform reproducible performance tests? How do you demonstrate that your measurements are meaningful?
Software engineering in this case involves thinking about all of these questions and more besides.
* https://hal.archives-ouvertes.fr/hal-01375451/document
* https://www.usenix.org/sites/default/files/conference/protec...
It appears (to me, at least) that the current state of the literature on ASLR is that it is treated as a succession of theoretical arms races, which new defence militates against which new attack, and almost no attention is paid to the concerns of actually deploying it in a larger system; and the current state of the literature on functional safety is simply "we will assume that there are no randomization processes in the software" (from an actual paper presented at ESREL 2016).