I'm a software engineer developing multimedia applications. When initializing Direct3D 9 on Windows XP SP3 32-bit (x86) with the D3DCREATE_SOFTWARE_VERTEXPROCESSING flag on an ATI Radeon HD 2400 Pro (PCI express), our process crashes and then the display goes blank on subsequent process invocations. You have to restart the machine to get the display back. The same software works fine on every other ATI and NVidia card we've tried. The symptoms seem to indicate either a problem in the driver or firmware or both (we're using the absolute latest catalyst driver). We got around the problem by querying the device caps and then going with D3DCREATE_HARDWARE_VERTEXPROCESSING if the card supported it. But the process should not fail, instead it should return a failure code from the CreateDevice() call (http://msdn.microsoft.com/en-us/library/bb174313(v=vs.85).aspx).
I'll add that any variations to the parameters resulted in the correct return failure values (expected behavior) except when using D3DCREATE_SOFTWARE_VERTEXPROCESSING. Using that value causes it to crash (very much incorrect/bad behavior).