Perhaps this is involved with systemd and IPC namespaces? On Tue, Jul 15, 2014 at 3:32 PM, Brian Wood <woodbrian77@xxxxxxxxx> wrote: > I've been having a problem related to epoll_ctl() lately. > I have a 3-tier system: > > 1. back tier (tcp server) > 2. middle tier (udp server) > 3. front tier > > The problem is happening in the back tier. > If I kill the middle tier with a control-C and then restart it > (before making any requests via the front tier), the socket > descriptor (associated with the middle tier) in the back tier > is 7. But If I first make some requests via the front tier, > then kill the middle tier and restart it, the socket descriptor > is 1. > > When the socket descriptor is 1, I get an EBADF on > an epoll_ctl with an op of EPOLL_CTL_MOD. > It's not on the first call to epoll_ctl that it fails, but the third > call. My debugging shows that the epfd and fd are the same > for all three of these calls. > > I've tried many things to get the back tier to not give me > the socket descriptor of 1. I've tried calling daemon(), > freopen'ing stdin, stdout, and stderr, and a few other > things. I've tried doing these things only in the parent, > only in the child and in both. Nothing has worked. > Any ideas? Thanks. > > -- > Brian > Ebenezer Enterprises > http://webEbenezer.net >