Вы на самом деле не предоставили достаточно информации, но является ли это проблемой уничтожения COM-объекта после того, как COM был неинициализирован?
m_IErrorHandlingServerPtr, учитывая его странное имя, возможно, общий указатель COM, который уничтожается, когда последнийэкземпляр (удерживаемый как член вашего класса) выходит из области видимости, но для этого удаления COM должен быть еще жив.
Одним из возможных решений было бы обеспечение того, чтобы у вашего класса была собственная пара Initialize / Uninitialize, и этоможет быть получено из производного от базового класса, который инициализирует в своем конструкторе и деинициализирует в своем деструкторе.Вы можете использовать личное наследование для этого.Вы должны быть осторожны с различными моделями потоков.
Не уверен, почему это не приведет к сбою в старых средах, но они могли использовать COM для различных вещей в прошлом, которые теперь изменились, чтобы не использовать COM, и поэтомуCOM оказался живым.Кроме того, если это какой-то глобальный тип, их порядок уничтожения всегда будет недетерминированным, поэтому по сути это всегда было неопределенное поведение, но в прошлом наблюдалось «неопределенное» поведение, которое просто работало, а теперь нетт.