> > The easiest way to remove the S_L_U_A from the worker MPM is to remove > all > > signals from the MPM. > > ++++1! > > > Basically, we have a single thread that currently > > sits in sigwait, which is just waiting for a signal. We then have every > > other thread sitting in accept waiting for something to wake them up, > > either a real connection or a fake one for the POD. It makes a lot of > > sense to make the parent process always use the POD for all > > communication. If this happens, then the thread sitting in sigwait > could > > easily just sit in poll waiting for data from the parent. If it gets a > !, > > then the process should just die, if it gets a #, then it should perform > a > > graceful (The chars don't matter, just the idea). Since the thread in > > poll() is always the main thread, it is just fine to just call exit to > > terminate the process immediately. > > Perhaps not fine to just call exit on a shutdown. I think Linux (at least > some kernel > levels) has a serious problem with letting the main thread die w/o killing > off the other > threads in the process first. If you let the main thread exit before > allowing the other > threads to exit, you end up with a hosed process that doesn't go away. I > presume this is a > bug in the Linux pthread implementation...
You may be right about that, I can't really remember. However, we have the same problem right now, because we have a single thread that sits in a sigwait, waiting for a signal in the graceless case. Moving it to listening on a pipe shouldn't change the rest of the logic. So if this is a bug, we already know how to deal with it hopefully. :-) Ryan