Let me add one little story:
for our insurance math package, which we deploy on many different platforms, we
kept for a very long time two target platforms, although they were no more
needed by customers, simply because we made the experience that there were
sometimes logical errors in our software which only showed up on those platforms
(because these platforms were very "sensible" to hidden logical errors). The two
and Sun Solaris
I believe, on the OS/2 environment, the reason was that even little errors with
array indexing lead to segmentation errors (which did not show up on Windows).
On Sun Solaris, there were other kinds of errors, which had to do with the
alignment of shorts, ints, and longs. While optional on other platforms, this
was mandatory on Solaris.
In the last few years, we added Intel-64 with Linux to our supported platforms,
which added some new (64-bit) problems.
We are also constantly fighting with rounding problems - successfully most of
the time - , because we use the classical HEXADEC representation for floating
point on z/OS (we have to communicate with PL/1 and - classical - ASSEMBLER).
(still running two OS/2 development machines from 1997 and 1999)