Какой смысл вообще в краше
Смысл в том, что происходит событие, которое процессор не знает как обработать, тогда он вызывает исключение, краш это лишь следствие необработанного исключения..
Их типов очень много, они не обязательно фатальные, есть и информационные, самые частые из фатальных:
1) ошибки памяти, когда читаешь/пишешь память которая не помечена как читаемая/записываемая, либо по такому адресу вообще не выделена память (сюда входят и нулевые указатели).
2) ошибки выполнения, когда память помечена как неисполняемая, либо процессор распознает из байт привелигированную инструкцию.
Так или иначе зачастую краши будут вызваны этими причинами, например в твоем вопросе, допустим ты вызываешь функцию по неправильному адресу, тогда если по указанному адресу нет исполняемой памяти, будет исключение, или она есть, но контекст не подходит для их исполнения, рано или поздно их исполнение приведет к обращению к какой либо несуществующей памяти, за этим последует краш.
Кстати если есть необработанное исключение в процессе, то завершится только он, но если такое произойдет в ядре то будет всемизвестный синий экран смерти.