Хочется в случаях крешей освобождать один ресурс (по сути доступ к лицензии, она конечно сама отлипает, но минут через 30).
В ходе разных экспериментов выяснилось, что нет никаких проблем под линуксом или маком.
Можно использовать тот же std::set_terminate/std::signal.
Но на видне все это работает только в пределах одного треда. Создание треда я не контролирую (используем QT, Qt::ThreadPool, etc).
Пробовал SetUnhandledExceptionFilter, но срабатывает не всегда. Компиляция происходит с флагом /EHsc и менять наверно будет не совсем правильно.
__try __finally в main не дает эффекта, если упали в треде.
Плюс Qt на своих ассертах делает fast exit (заодно хоть узнал, что за зверь. По виду костыль очередной), хотя это я залечил с помощью qInstallMessageHandler. Но лечение больше похоже на костыль.
Вопрос есть ли какой-нибудь универсальный метод обработки завершения приложения при креше?
Перелопатил пол гугла, а решения так и не нашел.
Максимум, что нашел — использование dll с флагами ATTACH_THREAD для доступа к треду при его создании, но dll у меня нет, создавать ради хендлера не очень хочется.