Pointed out by Herb @ Connectathon. In fork_domain_child() we call : CatchChild(); *before* we fork the domain child. This call establishes a signal handler that eats SIGCLD signals and doesn't call sys_select_signal() as the main daemon SIGCLD handler should do. This causes the parent to ignore dead children and time out, instead of calling winbind_child_died() on receipt of the signal. The correct fix is to move the CatchChild call into the child code after the fork. This bug also exists in 3.0 as well as 3.2. Needs fixing for 3.2 stable. Jeremy.
Created attachment 3291 [details] Patch
Patch is in v3-2-stable (c8c63401423cf15ba6b56) and will be included in 3.2.0rc2 and higher. Closing out bug report.