Вы были правы, exp_internal -f passcheck-debug.log 1 указал мне на проблему нехватки ptys. Я добавил:
close -i $spawn_id
wait -nowait
, и это продолжалось и дальше. Мне пришлось добавить -nowait, потому что, если у него нет spawn_id, он будет ждать вечно.