There are many anti-trust exhibits and other articles on the MS OS/2 2.0 fiasco and how it went from the original SDK released at the end of 1989 to "Microsoft Munchkins" and other unethical attacks (which got worse as Chicago/Win95 delayed) that was worse than the Joint Development Agreement between IBM and Microsoft (where they worked on OS/2 together) ever was. This fiasco is part of why it took 10 years after Intel introduced the 386 before 32-bit programming became popular.
But one of my favorite is PX00307, about the decision that turned 32-bit OS/2 into a fiasco in the first place. One of the red signs is that the problems of the "32-bit Windows extenders" was not even mentioned, such as no preemptive multitasking and no memory protection! Win9x fixed some but not all of the problems. For example, the Win16Mutex was used as a global mutex to simulate the Win16 cooperative multitasking system. This mutex was taken every time a 16-bit thunk was entered and was global to the system, and even most Win32 apps sometimes thunk to 16-bit (for example when calling USER32) or took the mutex for other reasons. And notice neither Gordon Letwin (the architect of OS/2) or Dave Cutler (the architect of NT) was in the To list, another red sign. Now, OS/2 had a sync input queue that made the preemptive multitasking much less useful, but that was much easier to fix and IBM hacked in a workaround in a FixPak for Warp 3.
But that is not my favorite problem with Win9x. My favorite is how Caldera used it's dependence on DOS to continue DR's lawsuit against MS, even having projects like "WinBolt" to prove it. And of course even before then, there was Windows 3.1's infamous AARD code. And guess what, OS/2 never depended on DOS. It was designed from the beginning as a full OS!