I have an application which uses some user-defined signals for process control. When trying to bind qpid in to this application I've found that the client library spawns an i/o thread which ignores signal masks that the process has defined before making any calls to qpid. The i/o thread changes it's own signal mask to sigemptyset and is catching signals intended for another thread in my process which has called sigtimedwait(). The default action for user defined signals is process terminate, so the process is subsequently dying.
I've made the following change to EpollPoller.cpp to work around the problem within my environment:
$ diff -w EpollPoller.cpp EpollPoller-fixed.cpp