I know I'm resurrecting a thread from 2016 but I found your post on Google and I can't imagine anyone could be more helpful than you as I think I'm having the exact same error Pete had.
So, "for your own education", as you mentioned, here's what I get after running the commands you suggested to Pete:
C:\bin\git>bin\sh.exe --login -i
84 [main] bash 5548 C:\bin\git\bin\..\usr\bin\bash.exe: *** fatal error in forked process - MapViewOfFileEx '(null)'(0x140), Win32 error 5. Terminating.
0 [main] bash 13036 fork: child 5548 - died waiting for dll loading, errno 11
bash: fork: retry: Resource temporarily unavailable
714 [main] bash 3252 C:\bin\git\bin\..\usr\bin\bash.exe: *** fatal error in forked process - MapViewOfFileEx '(null)'(0x140), Win32 error 5. Terminating.
1394765 [main] bash 13036 fork: child 3252 - died waiting for dll loading, errno 11
bash: fork: retry: Resource temporarily unavailable
419 [main] bash 9648 C:\bin\git\bin\..\usr\bin\bash.exe: *** fatal error in forked process - MapViewOfFileEx '(null)'(0x140), Win32 error 5. Terminating.
3792152 [main] bash 13036 fork: child 9648 - died waiting for dll loading, errno 11
bash: fork: retry: Resource temporarily unavailable
...This goes on ad eternum until I hit Ctrl+C, which then results in the line below followed by a seemingly workable shell, as you can attest from the results of running "ls"
bash: fork: Resource temporarily unavailable
bash-4.4$ ls
LICENSE.txt bin etc mingw64 tmp unins000.msg
ReleaseNotes.html cmd git-bash.exe mintty.exe.stackdump unins000.dat usr
bash.exe.stackdump dev git-cmd.exe proc unins000.exe
bash-4.4$
On the off chance that you (or anyone else) have an idea as to what to do next, I'd deeply appreciate the help.