I did some testing on my 64-bit Vista system, and it appears that
CreateThread is the main cause.
To test this, I removed the call to sigproc_init in dll_crt0_0 and made sure
it was always called in dll_crt0_1 instead. Suddenly the sigp thread started
executing immediately, and its initialization was complete long before
wait_for_sigthread was called.
Since you obviously have a patch, would you mind sharing it, rather than
just your conclusions from said patch?
Not quite ready for commit as is, but here it is:
Index: src/winsup/cygwin/dcrt0.cc
===================================================================
RCS file: /cvs/src/src/winsup/cygwin/dcrt0.cc,v
retrieving revision 1.382
diff -r1.382 dcrt0.cc
746,747c746,747
< if (!dynamically_loaded)
< sigproc_init ();
---
//if (!dynamically_loaded)
//sigproc_init ();
792c792
< if (dynamically_loaded)
---
//if (dynamically_loaded)
Magnus