morestack — специальная функция рантайма, которая вызывается когда текущему стеку горутины не хватает места. Компилятор вставляет проверку в пролог каждой функции: если SP (stack pointer) слишком близко к границе стека, происходит вызов morestack. Эта функция выделяет новый стек побольше, копирует старый и переключает горутину на новый стек. До Go 1.14 эта проверка также служила preemption point — если горутину пометили на вытеснение, morestack это обнаружит.