Эта вещь:
{{badmatch,{error,closed}},
[{simple_server,wait_accept,1}]}
должна читаться как: "Мы находимся в simple_server: wait_accept / 1", и мы получили ошибку несоответствия (см. http://www.erlang.org/doc/reference_manual/errors.html#id81191). Это означает, что наше выражение соответствия
{ok, Socket} = gen_tcp:accept(ListenSock),
вернул {error, closed}
(так как это единственное выражение совпадения в этой функции, это просто). Почему оно вернулось, это немного мутно для меня. Лучше всего, если процесс вызывает *Функция 1010 * была прервана, а затем прослушивающий сокет был закрыт из-за этого завершения (это происходит автоматически). Обратите внимание, что ошибка в оболочке erlang перезапустит его и, как таковое, закроет прослушивающий сокет.