Free-threaded OLE DB objects should produce free-threaded error objects. Apartment-threaded OLE DB objects should produce apartment-model error objects, which will be associated to the same thread.
Because Automation maintains an error object for each thread, a provider that implements free-threaded rowsets must take care of calling SetErrorInfo by using the same thread that invoked the offending method.