Как известно из документации при описании деструктора мы не можем гарантирвоать порядок его выполнения. Однако по факту, мы не можем гарантировать и просто факт его исполнения. Например деструктор не будет выполнен при переполнении памяти на сервере. Какие еще примеры ситуаций, в которых деструктор может не выполнится вы можете назвать?
По итогу исследования выделил следующее случаи:
- Exit вызван в другом деструкторе.
- Если другой деструктор бросает исключение.
- Если мы пытаемся обработать исключение в деструкторе.
- При получении SIGTERM в случае запуска через CLI.
- Fatal Error
Буду рад, если кто-то решит дополнить.