On Wednesday, 31 May 2017 at 23:50:07 UTC, Timon Gehr wrote:

No, it is perfectly safe, because the language does not guarantee any specific behavior in case memory is corrupted.

The language not guaranteeing a specific behaviour on memory corruption does not imply that assuming a bug was not caused by memory corruption is safe.

Therefore the language can /always/ assume that there is no memory corruption.

That is also not implied.


One  does not require the other.

Correct, but the runtime has to be safe in the *general* case, so it *must* assume the worst in case of a bug.

Software has bugs. The runtime has no business claiming that the scope of any particular bug is the entire service.

It absolutely has the business of doing exactly that as long as you, the programmer, do not tell it otherwise; which you can do and is your job.

The practical outcomes of this design are just silly. Data is lost, services go down, etc. When in doubt, the software should just do what the programmer has written. It is not always correct, but it is the best available proxy of the desirable behavior.

When in doubt about memory corruption, the closest enclosing scope that will get rid of the memory corruption must die. The current behaviour achieves that in many cases.

Reply via email to