By definition made in the C Standard, undefined behavior is: behavior, upon use of a nonportable or erroneous program construct or of erroneous data,
for which this International Standard imposes no requirements
If you're using some other definition, then say so, otherwise your comments make no sense.
Given my-app.c, each C compiler out there will pick a different UB subset and not everything that is defined as UB in the standard.
They are free to do that and still be compliant, after all UB means anything goes.
The C standard is very generous in terms of undefined behavior freedom.