Ben,
I have found out what is causing the infinite dumping under cygwin. You
added some code in eval.c:flagged_a_squirmer() that adds a lisp backtrace to
the error. Unfortunately this gets called and ignored by image_instantation
at dump time causing huge transient spikes in memory usage (the string
length alone is 250k) this means that the cygwin dump process can never
settle on a steady state for the used memory. Making the backtrace Qnil
fixes the problem. I'm hoping you have a suggestion for the fix. I'm not
convinced that we actually want the stacktrace at all in the case that we
are calling with suspended errors.
andy