Прежде всего, убедитесь, что begin является фактическим начальным состоянием вашего FSM.Вы указываете начальное состояние вашего FSM, возвращая в вашей функции init что-то вроде:
{ok, begin, State}
Где begin - ваше начальное состояние.
Также обратите внимание, что вы определяете функцию Module:StateName/3
, которая будет вызываться каждый раз, когда на вашем FSM выполняется gen_fsm:sync_send_event
.Если вы пытаетесь отправить события в FSM с помощью gen_fsm:send_event
, вам следует вместо этого определить функцию Module:StateName/2
, которая является ее асинхронной версией.
Наконец, попробуйте отладить ваши модули с помощью трассировки их, а не добавление распечаток.Это намного проще и позволяет избежать перекомпиляции кода раз за разом.
Более подробная информация доступна здесь .