Я столкнулся с проблемой того, что мои приложения не вызывают деструкторы глобальных переменных. Похоже, это происходит только в том случае, если мое приложение успешно подключается к базе данных Oracle (используя OCI).
Я установил некоторые точки останова в CRT, и кажется, что DllMain (или __DllMainCRTStartup) не вызывается с DLL_PROCESS_DETACH, поэтому не вызывается atexit (), который объясняет, почему мои деструкторы не вызываются.
Я понятия не имею, почему это происходит.
Я понимаю, что этой информации, вероятно, недостаточно, чтобы указать причину, но мой вопрос: что было бы хорошим началом для поиска причины этой проблемы?
Это список того, что я уже пробовал:
- поиск в сети решений
- подключил отладчик и включил собственные исключения, чтобы увидеть, что не было скрытого сбоя, иногда я получаю исключение в .Net framework, но приложение, похоже, продолжается.
- попытаться воспроизвести в небольшом приложении, безуспешно