Исправления срабатываний статического анализатора.
Evgeniy Berdnikov
bgx на protva.ru
Вт Окт 4 17:53:15 UTC 2022
On Tue, Oct 04, 2022 at 11:33:14PM +0700, Eugene Grosbein wrote:
> 04.10.2022 20:11, Evgeniy Berdnikov пишет:
> > При потенциальной возможности зануления указателя следует ловить и
> > обрабатывать такое исключение. В противном случае нет смысла в проверке.
> > Задача же не в ублажении тупых анализаторов, а в правильной работе кода.
>
> Как пользователь разнообразного софта, могу доложить, что сегфолт очень фиговая обработка исключений.
> Проверка указателя на NULL перед разадресацией в том случае, когда нельзя гарантировать что он не NULL,
> практически всегда благо.
Ну, я написал что такую ситуацию нужно ловить всегда, т.е. MUST а не SHOULD.
> Другой вопрос, что потом делать, если вдруг: молча восстановиться и ехать дальше,
> или не молча, а с сообщением в лог, или выдать даже stack trace и выйти. Но что угодно лучше сырого сегфолта.
Был бы я пользователем, я бы тоже так считал, наверное... Но поскольку я
сисадмин с некоторым запилом в разработку, то думаю иначе: вставить в свою
софтину полноценный обработчик сегфолта, с анализатором стека и печатью
регистров, чтобы по функционалу всё было не хуже gdb -- это очень непросто.
Корпорации размера Оракл могут себе такое позволить, и нанять кучу
фултайм-саппортеров на разборку трейсов, а для широкой публики нет ничего
эффективней сборки без стрипа -> coredump -> gdb -> "bt full" и анализа
содержимого регистров, памяти, etc.
Конечно, если софтина mission critical, и останавливаться ей никак нельзя,
то нужно думать об обработке сбоев. Но в большинстве случаев это можно
решить дизайном: например, при сегфолте в рабочем процессе автоматически
запускать новый, отмечать сбой в логе / e-mail, а корку оставлять админу
на изучение.
--
Eugene Berdnikov
Подробная информация о списке рассылки nginx-ru