It is a known issue. As I recall, gsh normally uses a SIGCHLD signal
handler to wait() on child processes. However it can also call wait()
immediately after spawning them so if the child process is very quick
(as is the case when executing gshrc) there can be a race condition
where the SIGCHILD signal occurs after the child has already been dealt
with and the signal handler hangs. It's a bug in gsh but also GNO only
has wait() (no waitpid()). Dropping into GNO snooper and killing it is
the only fix for now.
You might also switch to the hush shell.