Assert and undefined behavior
kdevel
kdevel at vogtner.de
Sat Oct 14 21:36:53 UTC 2017
On Saturday, 14 October 2017 at 09:32:32 UTC, Timon Gehr wrote:
> Also, UB can and does sometimes mean that the program can
> execute arbitrary code. It's called "arbitrary code execution":
> https://en.wikipedia.org/wiki/Arbitrary_code_execution
This confuses different levels of reasoning. In C/C++ "undefined
behavior" is a property of the SOURCE code with respect to the
specification. It states: The spec does not not apply, it does
not define the semantic.
This issue is totally different from the question what a given
program containing undefined behavior actually does after is
compiles and the after the linker produces an executable. This is
reasoning about generated MACHINE code.
A result of this confusion has been that some clever people tried
to "detect" certain kinds of undefined behavior "after" they
"happended". E.g.
<https://gcc.gnu.org/bugzilla/show_bug.cgi?id=30475> This is the
danger of undefined behavior: The MACHINE code may also work as
the programmer expected. At least for some time.
More information about the Digitalmars-d-learn
mailing list