I did notice one problem: the code previously invoked
g_child_watch_source_new (0), which is not safe if Emacs
has already forked -- perhaps Cygwin was doing that?
So I changed it to g_child_watch_source_new (getpid ())
in trunk bzr 112929.
It is crasches much less with this change, about one in three builds. Previously it crasched on every build.
Some sort of race condition, perhaps?
As for what the threads do, I don't know. There are five threads created when Emacs byte-compiles one file.