Subj : Re: Non-strictly-conforming and unspecified versus undefined behavior To : comp.programming.threads From : David Schwartz Date : Thu Feb 17 2005 11:55 pm Let me say this one more time another way, because it's important. A program is strictly-conforming if it cannot be broken by changing it from one implementation of a standard to another. Any program that invokes undefined behavior is not strictly-conforming, because it can crash on one implementation and not on another (unless crashing is considered not to be broken). If a standard says you can do A or B and leaves which one unspecified, a strictly-conforming program must not work in the case of A and not work in the case of B. If a program had to perform identically, and produce identical output under all possible API implementations, it would be nearly impossible to write useful programs that strictly-conformed to POSIX. On the other hand, if you were allowed race conditions, strictly-conforming POSIX programs could break if you changed POSIX-compliant platforms. A program is strictly-conforming to a standard if it cannot be broken by any possible changes in unspecified behavior and does not invoke undefined behavior. DS .