А вообще конечно ситуация выглядит крайне интересной, так как getMessage объявлен как final, то есть переопределить и бросить в нем исключение не очень простая задача, таким образом уже второй пойманный exception должен быть стандартным и возвращать строку. Наверное те кто знает core php в данной ситуации могут что-нибудь дельное подсказать, но пока для меня это выглядит как магия)
Судя по вашим словам, это выглядит так, что именно $e->getMessage() в catch throw-ает новый Exception, который потом перехватывает следующий catch. Я бы посмотрел на объект Exception $e, не возвращает ли getMessage случайно что-нибудь отличное от строки, чего конечно быть не должно, но все-таки
Посмотрите в логи php-fpm(если вы его используете), не падает ли он при этом, была похожая ситуация при включенном xdebug одновременно с ioncube, процесс просто падал в SIGTERM
Сегодня случайно столкнулся с вашим сервисом uid.me(взломали акк на ucoz, которым я лет 5 не пользуюсь) и у меня возник вопрос, почему вы не хешируете пароли, и что это за система восстановления пароля через ссылку?
Для хрома Google вроде как рекомендует включить chrome://flags/#enable-site-per-process если у вас версия ниже 64
А вообще конечно ситуация выглядит крайне интересной, так как getMessage объявлен как final, то есть переопределить и бросить в нем исключение не очень простая задача, таким образом уже второй пойманный exception должен быть стандартным и возвращать строку. Наверное те кто знает core php в данной ситуации могут что-нибудь дельное подсказать, но пока для меня это выглядит как магия)
Судя по вашим словам, это выглядит так, что именно
$e->getMessage()
в catch throw-ает новый Exception, который потом перехватывает следующий catch. Я бы посмотрел на объект Exception $e, не возвращает ли getMessage случайно что-нибудь отличное от строки, чего конечно быть не должно, но все-таки